xtrabackup是MySQL热备首选工具,因其支持不锁表备份InnoDB、持续监听redo log、物理备份恢复快、支持流式压缩,且需开启innodb_log_file_size和innodb_flush_log_at_trx_commit=1。
为什么
是 MySQL 热备的首选工具
它能在不锁表、不中断业务写入的前提下,完整复制 InnoDB 数据文件和日志,靠的是对
的持续监听与追加。MyISAM 表虽会加读锁(短时间),但绝大多数生产库以 InnoDB 为主,所以实际影响极小。比
快得多,也比直接拷贝数据目录安全——后者在崩溃时大概率损坏。
备份过程不依赖 SQL 层,绕过锁、事务、字符集转换等干扰
支持流式备份(
)和压缩(
),节省磁盘和网络开销
备份出来的是物理文件,恢复就是“还原+重放日志”,比逻辑导入快一个数量级
唯一硬性前提:MySQL 必须开启
和
(否则可能丢日志)
全量备份命令怎么写才不出错
最简可用命令是:
,但它默认用当前用户权限连接 MySQL,容易因权限不足失败。
必须提前创建专用账号,最小权限只需:
和
不建议明文写在命令里,应通过
配置,且该文件权限必须是
,否则
拒绝读取
若 MySQL 运行在非标准端口或 socket 路径,必须显式指定:
或
备份目标目录必须为空,否则报错
;但可以是不存在的路径,
会自动创建
备份后不做
就恢复,99% 会失败
全量备份只是“原始镜像+未刷盘的日志片段”,必须执行
才能将数据恢复到一致状态。跳过这步直接
,MySQL 启动时会报
或直接拒绝启动。
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
是只读操作,可离线做,不影响原库
如果备份时用了
,恢复前得先
,再
,顺序不能反
增量备份也必须先
基础全量,再把增量日志合并进去,最后才统一
一次
注意磁盘空间:
会临时占用和数据目录相当的空间,别在根分区只剩几 GB 时跑
如何验证热备是否真正可用
备份成功不等于能恢复。线上常见陷阱是:备份过程没报错,但恢复后发现主从同步断了、GTID 不连续、或者某个大表缺失索引。
恢复后必须执行
,重点看
和警告数
对比原库和恢复库的
和
(仅适用于小表,大表用采样)
如果开了 GTID,检查
是否与备份时记录的
中的 GTID 集一致
最关键一步:在测试机上拉起从库,执行
,观察
是否归零且稳定
热备不是设好定时任务就完事了,每次备份后那三行验证命令才是决定你半夜能不能睡觉的关键。尤其注意
和
(如果用 Galera)这两个文件,它们一旦被误删或内容不准,整个恢复链就断了。
xtrabackupredo logmysqldump--stream--compressinnodb_log_file_sizeinnodb_flush_log_at_trx_commit=1xtrabackupxtrabackup --backup --target-dir=/path/to/backupRELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT--user--password~/.my.cnf600xtrabackup--port=3307--socket=/var/run/mysqld/mysqld.sockalready existsxtrabackup--preparextrabackup --prepare--copy-backInnoDB: Database page corruption--prepare--compress--decompress--prepare--prepare--prepare--preparemysqlcheck --all-databases --checkstatus: OKSELECT COUNT(*)CHECKSUM TABLESELECT @@global.gtid_executedxtrabackup_binlog_infoSTART SLAVESeconds_Behind_Masterxtrabackup_binlog_infoxtrabackup_galera_info