温馨提示×

centos lnmp中MySQL数据库备份策略

小樊
39
2025-11-16 02:38:56
栏目: 云计算

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 指标并优化脚本与保留策略。

0