- 首页 >
- 问答 >
-
云计算 >
- Debian系统MySQL备份策略如何制定
Debian系统MySQL备份策略如何制定
小樊
44
2025-12-28 13:26:10
Debian 上制定 MySQL 备份策略
一 策略框架与取舍
- 备份类型
- 全量备份:备份全部库表与数据,恢复简单,适合作为恢复基线。
- 增量备份:仅备份自上次备份以来的变更,体积小、频率高,依赖基线备份与日志。
- 差异备份:备份自上次全量以来的所有变更,恢复链短于增量。
- 备份方式
- 逻辑备份:使用 mysqldump(可配合 mysqlpump 并行),跨版本/跨平台迁移友好,适合中小型库或需要可读 SQL 的场景。
- 物理备份:使用 Percona XtraBackup,支持 InnoDB 热备,适合大体量、低停机的生产库。
- 备份时机
- 热备:业务不停机;温备:对业务影响可控;冷备:停库停机,一致性最好但影响业务。
- 存储与保留
- 建议本地与远程/异地双地存放;按业务 RPO/RTO 设定保留周期(如近 7 天日常恢复点,近 30 天月度基线)。
- 自动化与治理
- 用 cron 定时执行;脚本化执行、日志与告警;定期校验可恢复性与清理过期备份。
二 推荐备份方案
- 方案 A 逻辑备份为主(中小型库、需可读 SQL 与跨平台)
- 全量:每日一次(如 02:00),备份命令示例:mysqldump -u 用户 -p 密码 --single-transaction --routines --triggers --default-character-set=utf8mb4 --databases 库1 库2 > /backup/mysql/full_$(date +%F).sql
- 压缩与校验:gzip 压缩;生成并记录 SHA256 校验值;保留 7–30 天。
- 远程复制:通过 scp/rsync 同步至远程存储;失败告警。
- 适用:变更不极端频繁、可接受小时级 RPO 的业务。
- 方案 B 物理备份为主(大体量 InnoDB、低停机)
- 全量:每周一次(如周日 02:00)使用 Percona XtraBackup 执行热备。
- 增量:每日基于上次备份做增量(–incremental)。
- 准备与恢复:恢复时按顺序执行 --prepare,最后 --copy-back;保留 2–4 周全量+增量链。
- 适用:TB 级数据、要求近实时恢复点与低停机的在线业务。
三 实施步骤与关键命令
- 启用二进制日志(用于增量/时间点恢复)
- 配置 my.cnf:log-bin=mysql-bin;重启 MySQL;记录当前 binlog 位置(mysql -e “SHOW MASTER STATUS\G”)。
- 逻辑备份脚本示例(含压缩、校验、清理与远程)
- 关键点:使用 –single-transaction 保证一致性;gzip 压缩;find 清理 7 天前文件;rsync 同步远程。
- 物理备份示例(XtraBackup)
- 全量:xtrabackup --backup --target-dir=/backup/mysql/full_2025-08-10
- 增量:xtrabackup --backup --target-dir=/backup/mysql/incr_2025-08-11 --incremental-basedir=/backup/mysql/full_2025-08-10
- 准备:xtrabackup --prepare --apply-log-only /backup/mysql/full_2025-08-10;xtrabackup --prepare /backup/mysql/full_2025-08-10 --incremental-dir=/backup/mysql/incr_2025-08-11
- 恢复:停库、清空数据目录、xtrabackup --copy-back、修正权限并启动。
- 定时与监控
- crontab 示例:0 2 * * * /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1;配合简单日志轮转与告警(如邮件/企业微信/钉钉 webhook)。
四 恢复流程与演练
- 逻辑备份恢复
- 单库:mysql -u 用户 -p 密码 库名 < backup.sql;全库:mysql -u 用户 -p 密码 < full_backup.sql。
- 时间点恢复(PITR):先恢复最近全量,再用 mysqlbinlog 重放自全量之后的 binlog 至目标时间点:mysqlbinlog --start-datetime=“YYYY-MM-DD HH:MM:SS” binlog.00000X | mysql -u 用户 -p。
- 物理备份恢复
- 按“全量→增量”顺序 --prepare,然后 --copy-back,启动 MySQL,校验数据一致性与复制状态(如有)。
- 验证与演练
- 建议每周在小环境做一次真实恢复演练;定期抽样校验 SHA256 与记录恢复耗时,确保满足 RPO/RTO。
五 安全与运维要点
- 凭据与权限
- 避免在命令行暴露密码,使用 ~/.my.cnf 或凭据文件并设置 600 权限;备份用户仅授予 SELECT、SHOW VIEW、RELOAD、LOCK TABLES、REPLICATION CLIENT 等必要权限。
- 加密与合规
- 备份落盘后可 GPG 加密;传输使用 scp/rsync over SSH;按合规要求设置保留与访问控制。
- 存储与保留
- 本地与远程/异地双地存放;按业务设定保留(如 7 天日常 + 30 天月度),并定期清理过期备份。
- 监控与告警
- 记录 备份大小、耗时、成功率;失败即时告警;保留 最近 30–90 天日志便于审计。
- 版本与工具
- 逻辑备份优先选用 mysqlpump(并行)提升大库导出速度;物理备份使用 Percona XtraBackup 满足热备与增量需求。