mysql备份管理核心是定期、分类、验证、清理四环节;需按时间+业务命名归档,分环境存储,全量+增量+binlog协同,7天保留全量、3天保留全部、30天自动清理,并每周验证可用性及权限安全。

MySQL备份文件管理核心在于定期、分类、验证、清理四个环节。只备份不管理,时间一长容易堆积冗余、混淆版本、占用磁盘,甚至关键时刻找不到可用备份。
按时间+业务维度命名与归档
避免使用如 backup.sql 或 mysql_bak.tar.gz 这类无意义名称。推荐格式:
-
db_shop_20240520_0200_full.sql.gz(全量 + 时间戳 + 类型) -
db_shop_20240520_0200_binlog_00001234.xb(对应binlog位点) - 生产库和测试库分开目录,例如
/backup/mysql/prod/和/backup/mysql/stage/
分层保留策略:全量 + 增量 + 日志协同
单一备份方式风险高。建议组合使用:
- 每日凌晨执行一次
mysqldump --single-transaction --routines --triggers全量备份(压缩存储) - 开启 binlog,配合
mysqlbinlog截取指定时间段日志,用于精确恢复到秒级 - 每7天保留一个全量备份,最近3天全量+binlog全部保留,超过30天的自动清理(脚本中加
find /backup -name "*.sql.gz" -mtime +30 -delete)
定期验证备份有效性
备份文件存在 ≠ 可用。常见失效原因:权限不足、压缩损坏、字符集不兼容、GTID模式未适配。
- 每周选一个备份,在测试环境解压并导入:
zcat backup.sql.gz | mysql -u test -ptest db_name - 检查表行数是否与源库基本一致(
SELECT COUNT(*) FROM t_user;对比) - 记录验证结果到日志,失败则触发告警(如邮件或企业微信通知)
权限与存储安全控制
备份文件含敏感数据,不能裸放或权限过宽。
- 备份目录属主设为专用用户(如
mysqlbkp),禁止其他用户读写 - 禁用 world-readable:
chmod 750 /backup/mysql,备份文件设为640 - 跨机房或云存储同步时,启用加密传输(rsync over ssh)或服务端加密(如 S3 SSE-KMS)
不复杂但容易忽略——真正可靠的备份,是能随时还原出来的那个。











