温馨提示×

LNMP架构中MySQL如何进行数据备份

小樊
42
2025-12-14 01:53:13
栏目: 云计算

LNMP架构下MySQL数据备份实操指南

一 备份方式概览

  • 逻辑备份:使用 mysqldump 导出为 SQL 文件,适合大多数 LNMP 场景,便于迁移与按库/表恢复。
  • 物理备份:使用 Percona XtraBackup 等工具拷贝数据文件,适合大体量、要求更高恢复效率的场景。
  • 建议组合:日常用 mysqldump 做定时备份,关键业务叠加 XtraBackup 做物理快照与快速恢复。

二 使用 mysqldump 进行逻辑备份

  • 单库备份并压缩
    mysqldump -u[用户名] -p[密码] [数据库名] | gzip > [备份目录]/[库名]$(date +%F%H%M%S).sql.gz
    示例:mysqldump -uroot -pMySecretPassword mydb | gzip > /backup/mydb_2025-12-14_010000.sql.gz
  • 全库备份(含建库语句,建议包含事件)
    mysqldump -u[用户名] -p[密码] -A -B --events | gzip > [备份目录]/full_$(date +%F).sql.gz
  • 常用选项说明
    • -A:全库;-B:备份多个库并自动添加 USE 与 CREATE DATABASE;
    • –events:导出事件调度器;–single-transaction:InnoDB 一致性快照,减少锁表;
    • –routines --triggers:包含存储过程和触发器;
    • 压缩建议始终开启(gzip),节省存储与传输成本。

三 自动化备份与远程容灾

  • 备份脚本示例(含保留策略与可选远程同步)
    #!/bin/bash
    DB_USER="backup"
    DB_PASS="YourStrongPass"
    DB_NAME="mydb"
    BACKUP_DIR="/backup/mysql"
    KEEP_DAYS=7
    DATE=$(date +"%Y%m%d%H%M%S")
    BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz"
    
    mkdir -p "$BACKUP_DIR"
    mysqldump -u"$DB_USER" -p"$DB_PASS" --single-transaction --routines --triggers "$DB_NAME" \
      | gzip > "$BACKUP_FILE"
    
    # 删除超过 KEEP_DAYS 天的备份
    find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +$KEEP_DAYS -delete
    
    # 可选:同步到远程主机(需配置免密或密钥登录)
    # rsync -avz --remove-source-files "$BACKUP_FILE" user@remote:/backup/mysql/
    # 或
    # scp "$BACKUP_FILE" user@remote:/backup/mysql/
    
  • 定时任务(crontab)
    每天 02:00 执行:0 2 * * * /usr/local/bin/backup_mysql.sh
    每天 01:00 执行:0 1 * * * /path/to/backup.sh
    建议将脚本放到统一目录(如 /usr/local/bin/),并配置 logrotate 管理日志。

四 数据恢复步骤

  • 压缩备份恢复
    gunzip < [备份文件].sql.gz | mysql -u[用户名] -p[密码] [数据库名]
    或先解压再导入:gunzip [备份文件].sql.gz && mysql -u[用户名] -p[密码] [数据库名] < [备份文件].sql
  • 全库备份恢复
    mysql -u[用户名] -p[密码] < full_2025-12-14.sql
  • 验证要点
    导入后检查表数量、数据量、主外键与触发器是否正常;对核心业务库做一次演练恢复,确保备份可用。

五 注意事项与最佳实践

  • 安全性:避免在命令行中明文暴露密码,建议使用 ~/.my.cnf 配置凭据;备份目录与文件权限最小化(如 700/600)。
  • 一致性:InnoDB 优先使用 –single-transaction;MyISAM 或需强一致时可用 –lock-all-tables(会锁表)。
  • 完整性:定期做恢复演练与校验(如校验和、抽样查询);保留至少 7–30 天 的滚动备份。
  • 远程容灾:开启 scp/rsync 自动同步到独立主机或云存储;对传输链路与目标端磁盘做监控告警。
  • 大体量场景:当数据量较大或恢复时效要求高时,引入 XtraBackup 做物理备份与增量备份,缩短恢复时间。

0