备份还原:XtraBackup

MySQL 备份:Percona XtraBackup

Percona 出品的物理热备份工具(官方名 Percona XtraBackup,你记的 xtrabackup/xtracback 都是它)。它直接备份 InnoDB 数据文件,不停服(非阻塞),性能远优于 mysqldump / mydumper 逻辑备份,支持增量备份,是生产大库(含 MySQL 主从从库初始化)的首选。

版本:主命令 xtrabackup,版本号随 MySQL(如 Percona XtraBackup 8.0.x);备份前确保 XtraBackup 版本 ≥ 目标 MySQL 版本。

一、全量备份

# --backup 创建备份(非阻塞)
xtrabackup --backup -u root -p '密码' -H 127.0.0.1 -P3306 \
  --target-dir=/data/backup/full
# 大库可并行:--parallel=4

# 压缩备份(zstd 默认 / lz4)
xtrabackup --backup -u root -p '密码' --compress --parallel=4 \
  --target-dir=/data/backup/full_compressed

二、准备(prepare)

备份必须 --prepare 后才能使用(使数据文件一致、回放 redo)。在从库/恢复机执行:

xtrabackup --prepare --target-dir=/data/backup/full
# 压缩备份先解压再 prepare:
xtrabackup --decompress --target-dir=/data/backup/full_compressed
xtrabackup --prepare --target-dir=/data/backup/full_compressed

三、恢复(copy-back)

# 停止 MySQL、清空/备份数据目录
systemctl stop mysqld

# 拷贝备份回数据目录(目标目录需为空)
xtrabackup --copy-back --target-dir=/data/backup/full
# 空间不足可用 --move-back(移动)

# 修复属主并启动
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld

四、增量备份与恢复

先有全量,增量基于 LSN(只备自上次备份以来变化的页)。

# 全量基备份
xtrabackup --backup -u root -p '密码' --target-dir=/data/backup/base

# 增量1
xtrabackup --backup -u root -p '密码' --target-dir=/data/backup/inc1 \
  --incremental-basedir=/data/backup/base

恢复时依次 prepare 合并增量:

# 先 prepare 全量(apply-log-only 只回放不做全恢复)
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base
# 再逐次合并增量直到最后一份
xtrabackup --prepare --target-dir=/data/backup/base \
  --incremental-dir=/data/backup/inc1
# 最后 copy-back 到数据目录恢复

五、主从初始化

主从复制从库时,--backup--slave-info 记录源库 binlog 位点(含 GTID),恢复后据此 CHANGE MASTER TO,比 mysqldump 全量再补增量更快更准。

xtrabackup --backup --slave-info --target-dir=/data/backup/slave_backup
# 备份目录里 xtrabackup_binlog_info 记录位点/GTID

对比:mysqldump=逻辑单线程、XtraBackup=物理热备(快、增量)、mydumper=并行逻辑。生产物理备份优先 XtraBackup,逻辑迁移用 mysqldump/mydumper。

“您的支持是我持续分享的动力”

微信收款码
微信
支付宝收款码
支付宝

目录