船说 CMS 数据库备份如何操作
学完这篇,你能独立完成船说 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 为例:
- 左侧菜单点「数据库」;
- 在列表里找到船说 CMS 对应的库名,点右侧「备份」;
- 弹窗里确认备份方式为「MySQL 备份」,点「提交」;
- 备份完成后,点「备份列表」可以看到文件,默认存放在
/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 中
%要转义。
原文链接:https://www.gj0.com/thread-559.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。