
/data/mysql/data# 使用阿里云镜像安装,规避官方源访问失败问题
yum install -y https://mirrors.aliyun.com/percona/yum/percona-release-latest.noarch.rpm
percona-release enable tools release
yum clean all && yum makecache
yum install -y percona-xtrabackup-80
# 验证是否安装成功
xtrabackup --version
full_年月日,例:full_20260613inc_年月日时分,例:inc_202606131530/data/xtbk/,自动清理7天前过期备份#!/bin/bash
BAK_BASE="/data/xtbk/full"
BAK_DIR="${BAK_BASE}/full_$(date +%Y%m%d)"
MY_USER="root"
MY_PASS="Master@123"
MY_DATA="/data/mysql/data"
# 创建备份目录
mkdir -p ${BAK_DIR}
# 执行全量备份
xtrabackup --user=${MY_USER} --password=${MY_PASS} \
--host=127.0.0.1 \
--datadir=${MY_DATA} \
--target-dir=${BAK_DIR} \
--backup
# 自动删除7天前全量备份
find ${BAK_BASE} -type d -name "full_*" -mtime +7 -rm -rf
#!/bin/bash
BAK_BASE="/data/xtbk"
INC_BASE="${BAK_BASE}/inc"
# 自动获取最新全量备份作为基准(修复取值BUG)
BASE_BAK=$(ls -d ${BAK_BASE}/full/full_* |sort -r |head -1)
INC_DIR="${INC_BASE}/inc_$(date +%Y%m%d%H%M)"
MY_USER="root"
MY_PASS="Master@123"
MY_DATA="/data/mysql/data"
# 判断全量备份是否存在
if [ ! -d ${BASE_BAK} ];then
echo "未找到基础全量备份,退出备份!"
exit 1
fi
mkdir -p ${INC_DIR}
# 执行增量备份
xtrabackup --user=${MY_USER} --password=${MY_PASS} \
--host=127.0.0.1 \
--datadir=${MY_DATA} \
--target-dir=${INC_DIR} \
--incremental-basedir=${BASE_BAK} \
--backup
# 自动删除7天前增量备份
find ${INC_BASE} -type d -name "inc_*" -mtime +7 -rm -rf
chmod +x /data/script/full_backup.sh
chmod +x /data/script/inc_backup.sh
crontab -e
# 每周日 01:00 执行全量备份
00 01 * * 0 /data/script/full_backup.sh >/dev/null 2>&1
# 周一~周六 02:00 执行增量备份
00 02 * * 1-6 /data/script/inc_backup.sh >/dev/null 2>&1
crontab -l
# 1.停止MySQL容器,备份损坏旧数据
docker stop mysql
mv /data/mysql/data /data/mysql/data_bak_err
mkdir -p /data/mysql/data
# 2.备份预处理
xtrabackup --prepare /data/xtbk/full/full_20260613
# 3.覆盖恢复数据
xtrabackup --copy-back \
--target-dir=/data/xtbk/full/full_20260613 \
--datadir=/data/mysql/data
# 4.Docker权限修复,启动容器
chown -R 999:999 /data/mysql/data
docker start mysql
# 1.初始化全量备份(保留事务,用于合并增量)
xtrabackup --prepare --apply-log-only --target-dir=/data/xtbk/full/full_20260613
# 2.依次合并所有增量备份(多个增量重复执行)
xtrabackup --prepare --apply-log-only \
--target-dir=/data/xtbk/full/full_20260613 \
--incremental-dir=/data/xtbk/inc/inc_202606131030
# 3.最后一份增量(收尾,结束事务)
xtrabackup --prepare \
--target-dir=/data/xtbk/full/full_20260613 \
--incremental-dir=/data/xtbk/inc/inc_202606131100
增量合并完成后,直接套用 5.2全量恢复命令即可。