mysqldump)与物理备份(拷贝数据文件/专业工具)。本节以逻辑备份为主,介绍一致性快照、增量恢复思路,并补充常见的自动化与验证方法。
备份策略概览
- 全量备份:周期性生成完整数据副本(每日/每周)
- 增量备份:依赖二进制日志(binlog)或物理增量工具填补两次全量之间的数据
- 异地存储:将备份推送至对象存储或异地机房,防止单点故障
- 定期演练:验证恢复流程与 RPO/RTO 是否符合预期
全量逻辑备份(在线)
--single-transaction:InnoDB 在线一致性快照(避免锁表)--routines/--triggers/--events:包含对象--master-data=2:在备份开头记录二进制日志位点,便于增量恢复- 可配合
--set-gtid-purged=ON(GTID 模式)
对于大库,可使用
mysqlpump(并行导出)或 Percona XtraBackup(物理热备)。压缩与拆分
恢复
DROP DATABASE shop; CREATE DATABASE shop; 确保干净状态。
二进制日志与增量
启用binlog 后,可进行点时间恢复(PITR):
- 恢复最近一次全量
- 从全量时间点开始回放 binlog 至目标时刻
--start-position/--stop-position 精确控制回放范围。
物理备份概述
- Percona XtraBackup:开源热备工具,支持增量备份与速度快
- MySQL Enterprise Backup:官方商业版本,提供加密与压缩
- 文件系统快照:借助 LVM、ZFS 或云盘快照结合
FLUSH TABLES WITH READ LOCK
校验与演练
- 校验备份文件完整性:
mysql --force < backup.sql是否失败 - 使用
pt-table-checksum或CHECKSUM TABLE校验主备一致性
自动化建议
- 设置
set -euo pipefail保证异常立刻退出 - 生成日期命名的备份文件
- 上传或同步至对象存储(AWS S3、阿里云 OSS 等)
- 发送备份结果通知(邮件/IM)
导入导出片段
SELECT ... INTO OUTFILE 并指定分隔符。
常见问题与排查
- 锁表:MyISAM 或显式锁可能导致备份等待;建议使用 InnoDB +
--single-transaction - 大文件:使用管道压缩
| gzip > backup.sql.gz - 字符集:注意
--default-character-set=utf8mb4 - 权限:备份账号需具备
SELECT,LOCK TABLES,SHOW VIEW,TRIGGER权限