Linux下MySQL和PostgreSQL备份恢复需区分全量与增量策略:MySQL用mysqldump全量+binlog增量,PostgreSQL用pg_dump+pg_basebackup全量+WAL归档增量,并通过cron自动化、恢复演练及权限校验保障可靠性。

Linux下MySQL和PostgreSQL的备份与恢复,核心在于区分全量与增量策略,并结合系统定时任务与日志管理实现可靠保障。
MySQL全量备份与恢复
全量备份适合数据量不大、恢复窗口宽松的场景,常用mysqldump工具生成SQL文本文件。
- 备份命令示例:
mysqldump -u root -p --all-databases > /backup/mysql_full_$(date +\%F).sql - 加
--single-transaction可保证InnoDB表一致性,避免锁表 - 恢复前建议先创建空库或清空目标库,再用
mysql -u root -p 导入 - 定期压缩备份文件(如
gzip)并校验MD5,防止介质损坏导致恢复失败
MySQL增量备份与恢复
依赖二进制日志(binlog),需提前开启并配置格式为ROW或MIXED,确保变更可重放。
- 查看当前binlog:执行
SHOW MASTER LOGS;,记录起始位置 - 备份后及时刷新日志:
FLUSH LOGS;,便于划分时间段 - 提取增量日志:
mysqlbinlog --start-datetime="2024-06-01 09:00:00" --stop-datetime="2024-06-01 12:00:00" /var/lib/mysql/mysql-bin.000003 > inc.sql - 恢复顺序:先全量恢复 → 再按时间/位置顺序应用增量日志
PostgreSQL全量与WAL增量备份
PostgreSQL使用pg_dump做逻辑全量,配合WAL归档实现物理级增量备份,更稳定高效。
- 全量备份:
pg_dump -U postgres -F c -b -v -f /backup/dbname_$(date +\%F).dump dbname(自定义格式便于压缩与选择恢复) - 启用WAL归档需修改
postgresql.conf:设置wal_level = replica、archive_mode = on、archive_command指向归档脚本 - 基础备份用
pg_basebackup生成快照目录,同时触发WAL归档,是增量恢复的前提 - 恢复时将基础备份解压 → 配置
recovery.conf(PG 12+为recovery.signal)→ 指定归档路径与恢复目标(时间点/PITR或事务号)
自动化与验证建议
备份无价值,能恢复才算数。必须建立闭环机制。
- 用
cron调度每日全量+每小时binlog/WAL归档,保留7天以上 - 在测试环境定期执行“恢复演练”,检查脚本是否可跑通、数据是否完整
- 备份文件权限设为
600,存放路径独立于数据库目录,避免单点故障 - 记录每次备份的开始/结束时间、大小、校验值到日志,方便审计与问题追溯










