船说 CMS 数据库备份如何操作

juming
juming 初级会员超兽战士
发布于 2026-10-07 21:21 ·1 浏览 ·0 回复

学完这篇,你能独立完成船说 CMS 的数据库备份,并知道备份文件存在哪、怎么恢复、多久备一次比较稳。

第一步:先搞清楚船说 CMS 的数据都存在哪

这一步是确认备份对象,做完你才知道自己要备的是哪几个库。

船说 CMS 默认使用 MySQL(或 MariaDB),数据一般拆在两个库里:

  • 主库:默认库名通常是 chuanshuo 或安装时你自定义的名字,存栏目、文章、会员、订单等业务数据;
  • 如果你装过多个站点或插件,可能还有额外的库,先登录服务器用命令列一遍:
mysql -u root -p -e "show databases;"

输入数据库密码后,会列出所有库名。把带站点前缀的那几个记下来,后面备份就备这几个。

注意:不要用宝塔面板里看到的「数据库名」直接照抄,有些环境里面板显示的是别名,实际库名要以上面命令的结果为准。

第二步:用 mysqldump 手动导出一份(最稳的方式)

这一步把数据库导出成 .sql 文件,做完你会得到一个可以随时导入的备份文件。

在服务器终端执行:

mysqldump -u 数据库用户名 -p --default-character-set=utf8mb4 \
--single-transaction --routines --triggers \
数据库名 > /www/backup/chuanshuo_$(date +%Y%m%d).sql

参数说明:

  • --default-character-set=utf8mb4:防止中文变成乱码,船说 CMS 默认用 utf8mb4;
  • --single-transaction:InnoDB 表导出时不锁表,网站可以继续访问;
  • --routines --triggers:把存储过程和触发器一起带走,缺了恢复后可能报错;
  • $(date +%Y%m%d):文件名自动带日期,比如 chuanshuo_20240612.sql。

执行后回车输入密码,没有报错就说明导出成功。检查一下文件大小:

ls -lh /www/backup/

注意:文件大小为 0 或者只有几 KB,通常说明库名写错了或者用户名没权限,重新确认第一步的库名。

第三步:如果不想敲命令,用面板自带的备份功能

这一步适合没有 SSH 习惯的用户,做完同样能得到一个 .sql 备份。

以宝塔面板 8.x 为例:

  1. 左侧菜单点「数据库」;
  2. 在列表里找到船说 CMS 对应的库名,点右侧「备份」;
  3. 弹窗里确认备份方式为「MySQL 备份」,点「提交」;
  4. 备份完成后,点「备份列表」可以看到文件,默认存放在 /www/server/panel/backup/database/ 目录下。

如果你用的是 phpMyAdmin:登录后左侧选中该库,点顶部「导出」标签,导出方式选「快速」,格式选「SQL」,字符集选 utf8mb4,点「执行」即可下载到本地。

注意:phpMyAdmin 导出大库(超过 100MB)容易超时中断,超过这个体量请回到第二步用 mysqldump。

第四步:把备份文件挪出服务器

这一步做异地留存,做完才算真正安全——服务器硬盘挂了,本地还有一份。

scp /www/backup/chuanshuo_20240612.sql 你的用户名@你的电脑IP:/本地目录/

或者用宝塔面板的文件管理器,进入 /www/server/panel/backup/database/,找到对应 .sql 文件,点右侧「下载」。也可以用对象存储插件(如阿里云 OSS、腾讯云 COS)设置定时同步。

第五步:验证备份能不能恢复

这一步是真正检验备份是否可用,做完你才有底气。

不要在生产库上试。新建一个测试库:

mysql -u root -p -e "create database chuanshuo_test default charset utf8mb4;"
mysql -u root -p chuanshuo_test < /www/backup/chuanshuo_20240612.sql

导入完没报错,再用 show tables; 看看表数量对不对。恢复正式库时把库名换成正式库名即可。

注意:恢复前先停掉网站访问(宝塔面板「网站」→「停止」),否则导入过程中用户写入的数据会和备份内容冲突。

第六步:设成定时任务

这一步让备份自动化,做完就不用天天惦记。

宝塔面板:左侧「计划任务」→「添加任务」→ 任务类型选「备份数据库」,选好库名、备份周期(建议每天凌晨 3 点)、保留份数(建议 7 份),保存即可。

纯命令行用 crontab:

crontab -e

加入一行:

0 3 * * * mysqldump -u 用户名 -p密码 --default-character-set=utf8mb4 --single-transaction 数据库名 > /www/backup/chuanshuo_$(date +\%Y\%m\%d).sql

注意:crontab 里的 % 必须写成 \%,否则会被当成换行符导致任务失败;另外命令行直接写密码有泄露风险,建议用 ~/.my.cnf 配置文件存放凭据。

小结

  • 备份对象是 MySQL 数据库,先用 show databases; 确认实际库名;
  • 首选 mysqldump 加 --single-transaction --routines --triggers --default-character-set=utf8mb4;
  • 面板用户可用宝塔「数据库 → 备份」或 phpMyAdmin「导出」;
  • 备份文件必须下载或同步到服务器之外,并定期做一次恢复演练;
  • 定时任务建议每天一次、保留 7 份,crontab 中 % 要转义。
版权声明:本文来自 GJ站长论坛《船说 CMS 数据库备份如何操作》
原文链接:https://www.gj0.com/thread-559.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~