CentOS LNMP 中 MySQL 数据库备份策略
一 策略总览
- 备份方式
- 逻辑备份:使用 mysqldump(适合中小型库、便于迁移与单库恢复);mysqlpump(MySQL 5.7+,支持并行导出,效率更高)。
- 物理备份:使用 Percona XtraBackup(热备,适合 InnoDB、大体量、对业务连续性要求高的场景)。
- 备份类型
- 全量备份:定期完整保存库/表结构与数据。
- 增量/差异备份:在全量基础上仅备份变化部分(物理备份更常见;逻辑备份可通过业务分库分表与轮转策略近似实现)。
- 调度与保留
- 通过 crontab 实现自动化;按日全量、按周/月归档,结合保留周期(如近 7–14 天本地保留 + 更久的异地/离线归档)。
- 安全与合规
- 备份文件加密与权限控制(如 600),传输与落盘均校验完整性;定期恢复演练与告警监控。
二 备份方式选型与适用场景
| 方式 |
工具 |
适用场景 |
主要优点 |
主要限制 |
| 逻辑备份 |
mysqldump |
中小型库、跨版本迁移、单库/单表恢复 |
简单易用、可移植、SQL 可读 |
大数据量时导出/导入慢,导出期间可能有表级锁(取决于存储引擎与参数) |
| 逻辑备份 |
mysqlpump |
MySQL 5.7+、多库并行导出 |
并行、速度较 mysqldump 提升 |
仍属逻辑备份,大数据量场景耗时较长 |
| 物理备份 |
Percona XtraBackup |
InnoDB 为主、大体量、需热备 |
热备不锁表、恢复快、适合增量 |
仅适用于 InnoDB/XtraDB,需额外安装与学习成本 |
三 推荐备份策略与保留
- 小型或读写压力较低的库
- 每日全量:使用 mysqldump 导出为 .sql.gz;本地保留 7 天。
- 每周一次将上周的全量包同步到远程/云存储,长期保留(如 30–90 天)。
- 中大型或读写压力较高的库
- 每日全量:使用 XtraBackup 做热备;
- 每小时增量:基于上次备份做增量;
- 每周一次全量归档并传输到异地/云存储;本地保留近 7–14 天,远程保留 30–90 天。
- 关键业务
- 在“每日全量 + 每小时增量”的基础上,增加 延迟从库 或 binlog 远程落地,用于更细粒度的时间点恢复(PITR)。
四 自动化实施步骤
- 准备与目录
- 创建备份目录并设置安全权限:
- mkdir -p /backup/mysql
- chmod 700 /backup/mysql
- 逻辑备份脚本示例(mysqldump,单库)
- 保存为 /usr/local/bin/backup_mysql.sh,chmod +x 赋予执行权限:
- #!/bin/bash
set -Eeuo pipefail
DB_USER=“backup”
DB_PASS=“YourStrongPass”
DB_NAME=“your_db”
BACKUP_DIR=“/backup/mysql”
DATE=$(date +%Y%m%d%H%M%S)
mkdir -p “$BACKUP_DIR”
mysqldump -u “$DB_USER” -p"$DB_PASS" --single-transaction --routines --triggers --default-character-set=utf8mb4 “$DB_NAME” | gzip > “$BACKUP_DIR/${DB_NAME}-${DATE}.sql.gz”
保留近 7 天
find “$BACKUP_DIR” -type f -name “*.sql.gz” -mtime +7 -delete
- 定时任务
- 每天 02:00 执行:
- 0 2 * * * /usr/local/bin/backup_mysql.sh >> /var/log/mysql_backup.log 2>&1
- 远程/云存储(可选)
- 同步到远程主机:
- rsync -avz --password-file=/root/.rsync.pass /backup/mysql/ backup@10.0.0.10:/backup/mysql/
- 或上传到对象存储(如 s3cmd/rclone,按实际环境配置)。
五 恢复与校验
- 逻辑备份恢复
- 解压并导入:
- gunzip < file.sql.gz | mysql -u user -ppass dbname
- 全库备份(–all-databases)可直接导入到目标实例。
- 物理备份恢复(XtraBackup)
- 准备阶段:xtrabackup --prepare --target-dir=/backup/xtra_20251116
- 拷贝回数据目录并启动实例(注意文件属主与权限)。
- 校验与演练
- 定期抽样恢复至测试环境,校验表数量、数据一致性(如校验和/行数对比);
- 对关键库执行恢复演练,记录 RPO/RTO 指标并优化脚本与保留策略。