本文以生产可用为目标,对 Percona XtraBackup(物理备份)与 `mysqlpump`(逻辑备份)进行全面对比,给出可直接执行的备份与恢复命令,并明确版本兼容与一致性校验。


## 适用版本与兼容性


  • MySQL 8.0;XtraBackup 8.0 仅支持 InnoDB(不支持 MyISAM)。
  • XtraBackup 版本需与服务器主版本匹配(8.0.x 系列)。

## 物理备份:Percona XtraBackup(全量与增量)


1. 全量备份:


xtrabackup \
  --backup \
  --target-dir=/data/backup/base \
  --user=backup --password='S@fePass!' \
  --parallel=4 --compress

2. 增量备份(基于全量):


xtrabackup \
  --backup \
  --target-dir=/data/backup/inc1 \
  --incremental-basedir=/data/backup/base \
  --user=backup --password='S@fePass!' \
  --parallel=4 --compress

3. 准备(应用日志):


xtrabackup --prepare --target-dir=/data/backup/base

4. 恢复(停止 MySQL 后):


systemctl stop mysqld
xtrabackup --copy-back --target-dir=/data/backup/base
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld

5. 校验:


-- 在恢复后比对关键表的行数或校验和:
SELECT COUNT(*) FROM important_table;

## 逻辑备份:mysqlpump(并行与筛选)


1. 并行全库导出:


mysqlpump \
  --user=backup --password='S@fePass!' \
  --exclude-databases=sys,performance_schema,information_schema \
  --default-parallelism=8 \
  --result-file=/data/backup/pump.sql

2. 恢复:


mysql --user=root --password='S@fePass!' < /data/backup/pump.sql

3. GTID 与复制一致性(逻辑备份用于迁移/复制):


mysqlpump --set-gtid-purged=ON ...

## 按时间点恢复(PITR):结合 binlog


1. 备份后保留二进制日志:


SHOW BINARY LOGS;

2. 重放指定时间段:


mysqlbinlog --start-datetime='2024-01-01 09:00:00' \
            --stop-datetime='2024-01-01 10:00:00' \
            /var/lib/mysql/binlog.000123 | \
mysql -u root -p

## 对比与选型建议


  • XtraBackup:速度快、一致性强、适合大库与物理迁移;需要停机恢复或使用独立实例回滚。
  • mysqlpump:可读性好、跨版本更灵活;适合结构迁移与特定库/表的筛选备份。
  • 生产建议:定期全量 + 每日增量(XtraBackup),辅以 binlog 做 PITR;结构变更与小库迁移场景使用 `mysqlpump`。

## 验证清单(可执行)


  • 备份完成后使用 `--prepare` 并校验关键表的行数;
  • 对比 `SHOW CREATE TABLE` 与约束;
  • 使用 `CHECK TABLE` 或应用级校验(如哈希对比);
  • 进行一次演练恢复并记录耗时与步骤脚本。

## 注意事项


  • XtraBackup 需要具备 `RELOAD`、`BACKUP_ADMIN` 等权限;生产中请使用受限账户与加密存储。
  • 恢复前务必停止 MySQL 并确保数据目录为空,避免覆盖冲突。
  • 对 GTID/复制场景,确保 `enforce_gtid_consistency=ON` 并在逻辑备份时使用 `--set-gtid-purged`。

## 相关阅读(热门)


  • 《MySQL 索引设计与覆盖索引的可验证实践指南》
  • 《MySQL 慢查询诊断与 EXPLAIN ANALYZE 实战指南》
  • 《MySQL InnoDB 事务与锁的深度解析与最佳实践》

## 结语


备份恢复的关键在于“可重复演练”。选择与场景匹配的方案,建立脚本化的备份/恢复与校验清单,并与 binlog 结合做 PITR,才能在故障时把损失降到最低且过程可控。



点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部