mysqldump适合中小规模读多写少场景,mysqlbackup仅限企业版;关键参数--routines、--events、--set-gtid-purged=off等不可省;备份文件须含时间戳与环境标识,存于独立挂载目录;定时任务需用绝对路径、配置文件传密、日志记录及磁盘检查;必须定期验证恢复。

备份时机选 mysqldump 还是 mysqlbackup?mysqldump 适合中小规模、读多写少、能接受短时锁表的场景;mysqlbackup(MySQL Enterprise Backup)支持热备、增量、压缩和并行,但仅限企业版,且依赖 mysql 用户有 FILE 权限和备份目录写权限。
- 如果用的是 MySQL 社区版,mysqldump 是唯一内置选择
- 若业务要求 24/7 不锁表,又没买企业版,得换方案:比如用 Percona XtraBackup(开源替代),它不依赖 MySQL 版本授权,但要求 datadir 在本地且文件系统支持硬链接
- mysqldump --single-transaction 对 InnoDB 有效,但对 MyISAM 表仍会触发 FLUSH TABLES WITH READ LOCK,一碰到 MyISAM 表就卡住
mysqldump 备份命令里哪些参数不能省?
省掉关键参数会导致备份不可恢复或漏数据。必须显式指定的有:
- --routines:否则存储过程、函数不导出
- --events:否则事件调度器里的任务丢失
- --triggers:默认开启,但显式写上更稳妥(有些旧版本默认关)
- --set-gtid-purged=OFF:在 GTID 模式下不加这个,还原时可能报 ERROR 1840
- --skip-lock-tables 要慎用:它跳过锁,但并发 DDL(如 ALTER TABLE)可能导致备份不一致
备份文件怎么命名和存放才不容易搞混?
名字里缺时间戳或实例标识,半夜恢复时根本分不清哪个是上周四的从库备份。
- 文件名必须含:数据库名 + 日期时间(精确到分钟)+ 环境标识,例如 appdb_202405221430_prod.sql.gz
- 不要放在 /tmp 或 /var/tmp:这些目录可能被系统自动清理
- 备份目录需独立挂载,避免和 /var/lib/mysql 共用磁盘——万一磁盘满,备份进程失败还可能拖垮主库
- 压缩用 gzip 即可,别用 zstd 或 lz4:恢复时不一定有对应解压工具,gunzip 才是所有 Linux 发行版标配
定时任务里直接写 mysqldump 会静默失败cron 环境变量和交互式 shell 不同,mysqldump 找不到 my.cnf 或连不上 socket 是常态。
- 必须用绝对路径调用:比如 /usr/bin/mysqldump,别信 which mysqldump 的结果
- 密码不能写在命令行(会被 ps 看见),改用配置文件:~/.my.cnf,权限设为 600,内容包含 [client] 段和 user/password
- 加 2>&1 | logger -t backup 把错误日志甩进系统日志,不然 cron 失败了你根本不知道
- 每次备份前先检查磁盘剩余空间:df /backup | awk 'NR==2 {print $5}' | sed 's/%//' | awk '$1 > 90 {exit 1}',超 90% 就中止
mysqldump 备份命令里哪些参数不能省?
省掉关键参数会导致备份不可恢复或漏数据。必须显式指定的有:
- --routines:否则存储过程、函数不导出
- --events:否则事件调度器里的任务丢失
- --triggers:默认开启,但显式写上更稳妥(有些旧版本默认关)
- --set-gtid-purged=OFF:在 GTID 模式下不加这个,还原时可能报 ERROR 1840
- --skip-lock-tables 要慎用:它跳过锁,但并发 DDL(如 ALTER TABLE)可能导致备份不一致
备份文件怎么命名和存放才不容易搞混?
名字里缺时间戳或实例标识,半夜恢复时根本分不清哪个是上周四的从库备份。
- 文件名必须含:数据库名 + 日期时间(精确到分钟)+ 环境标识,例如 appdb_202405221430_prod.sql.gz
- 不要放在 /tmp 或 /var/tmp:这些目录可能被系统自动清理
- 备份目录需独立挂载,避免和 /var/lib/mysql 共用磁盘——万一磁盘满,备份进程失败还可能拖垮主库
- 压缩用 gzip 即可,别用 zstd 或 lz4:恢复时不一定有对应解压工具,gunzip 才是所有 Linux 发行版标配
定时任务里直接写 mysqldump 会静默失败cron 环境变量和交互式 shell 不同,mysqldump 找不到 my.cnf 或连不上 socket 是常态。
- 必须用绝对路径调用:比如 /usr/bin/mysqldump,别信 which mysqldump 的结果
- 密码不能写在命令行(会被 ps 看见),改用配置文件:~/.my.cnf,权限设为 600,内容包含 [client] 段和 user/password
- 加 2>&1 | logger -t backup 把错误日志甩进系统日志,不然 cron 失败了你根本不知道
- 每次备份前先检查磁盘剩余空间:df /backup | awk 'NR==2 {print $5}' | sed 's/%//' | awk '$1 > 90 {exit 1}',超 90% 就中止
mysqldump 会静默失败cron 环境变量和交互式 shell 不同,mysqldump 找不到 my.cnf 或连不上 socket 是常态。
- 必须用绝对路径调用:比如 /usr/bin/mysqldump,别信 which mysqldump 的结果
- 密码不能写在命令行(会被 ps 看见),改用配置文件:~/.my.cnf,权限设为 600,内容包含 [client] 段和 user/password
- 加 2>&1 | logger -t backup 把错误日志甩进系统日志,不然 cron 失败了你根本不知道
- 每次备份前先检查磁盘剩余空间:df /backup | awk 'NR==2 {print $5}' | sed 's/%//' | awk '$1 > 90 {exit 1}',超 90% 就中止
备份不是存完就完事——真正麻烦的是验证恢复路径通不通、SQL 文件有没有被截断、字符集是否错乱。这些事得在非高峰时段真跑一遍 mysql 导入,而不是只看 mysqldump 进程退出码是 0。
部分功能简介:商品收藏夹功能热门商品最新商品分级价格功能自选风格打印结算页面内部短信箱商品评论增加上一商品,下一商品功能增强商家提示功能友情链接用户在线统计用户来访统计用户来访信息用户积分功能广告设置用户组分类邮件系统后台实现更新用户数据系统图片设置模板管理CSS风格管理申诉内容过滤功能用户注册过滤特征字符IP库管理及来访限制及管理压缩,恢复,备份数据库功能上传文件管理商品类别管理商品添加/修改/









