必须使用xtrabackup-80且配套qpress,全量备份后须立即--prepare生成有效xtrabackup_checkpoints,增量备份的--incremental-basedir必须指向已--prepare的上一次备份目录(全量或增量),--no-server-version-check在MySQL 8.0.33+环境下不可省略。

MySQL 8.0 环境下用 XtraBackup 做物理备份,必须用 xtrabackup-80,不能混用 xtrabackup-24 或旧版 innobackupex —— 否则会报 Unsupported MySQL version 或直接 segfault。
安装 xtrabackup-80 时依赖缺失是最高频失败点
Percona 官方源不提供 qpress,而 --compress 功能强依赖它。跳过这步会导致备份成功但无法解压,或 --decompress 报错 qpress: command not found。
- 先启用 EPEL(CentOS/RHEL):
yum install -y epel-release,推荐换清华源加速:sed -i 's|^mirrorlist=|#mirrorlist=|; s|^#baseurl=http://download.example.com|baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel|' /etc/yum.repos.d/epel.repo - 再装核心包:
yum install -y percona-xtrabackup-80 qpress - 验证:
xtrabackup --version输出应含8.0.x based on MySQL 8.0.xx;qpress -h不报 command not found
全量备份命令里 --no-server-version-check 不是可选项
MySQL 8.0.33+ 和 Percona XtraBackup 8.0.32+ 之间存在 handshake 兼容性 bug,不加这个参数会卡在 Connecting to MySQL server host: localhost... 后无响应,日志里也不报错。
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- 正确写法示例:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/backup/full/$(date +%F_%H-%M) --parallel=4 --compress --compress-threads=2 --no-server-version-check -
--defaults-file必须指向 MySQL 配置文件(含[client]段的 user/password),不能只靠环境变量;若用 socket 连接失败,XtraBackup 默认 fallback 到 TCP,但前提是my.cnf里host = 127.0.0.1显式指定 - 备份目录不能预先存在,否则报错
Target dir exists and is not empty
增量备份必须基于上一次 --prepare 后的全量目录
很多人误以为增量能直接基于原始全备目录打,结果 --incremental-basedir 指向 /backup/full/2026-04-17_10-00 就报 Invalid backup: missing xtrabackup_checkpoints —— 因为全备后没做 --prepare,目录里没有有效 xtrabackup_checkpoints 文件。
- 全备后必须立即执行:
xtrabackup --prepare --target-dir=/backup/full/2026-04-17_10-00 - 增量命令示例:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/backup/inc/2026-04-17_14-00 --incremental-basedir=/backup/full/2026-04-17_10-00 --no-server-version-check - 链式增量时,后续增量的
--incremental-basedir必须指向上一次--prepare后的增量目录(不是原始全备目录)
真正容易被忽略的是:--prepare 这一步必须在备份服务器本地执行,且不能跨平台拷贝后才 prepare —— LSN 校验和页校验逻辑依赖原始 MySQL 的 page_size、checksum_algorithm 等运行时参数,挪到另一台机器上 prepare 可能静默失败,恢复时才发现数据页损坏。










