本文相关的
xbk
详细日志可以在我的github下载
1. 原理
Xtrabackup
拷贝的数据文件是不一致的,基于 InnoDB
自带的 crash-recovery
机制,利用备份的 Redo Log
来完成 crash-recovery
过程,保证数据一致性
2. 安装
2. 备份过程
2.1 参考命令
xtrabackup --defaults-file=/usr/local/mysql/etc/my.cnf --backup --compress --socket=/usr/local/mysql/data/mysql.sock --user='root' --password='root_123' --target-dir=/data/mydata > /tmp/xtra.log
2.2 过程
根据 Xtrabackup 的日志 以及 MySQL General Log 总结
- 执行
LOCK INSTANCE FOR BACKUP
,记录起始 LSN (30910855),开始拷贝Redo Log
- 备份
ibdata1
、InnoDB
表、undo
表空间 - 备份非
InnoDB
表及文件 - 执行
FLUSH NO_WRITE_TO_BINLOG BINARY LOGS
,备份binlog
及mysql-bin.index
- 执行
FLUSH NO_WRITE_TO_BINLOG BINARY LOGS
,解析redo log
- 执行
UNLOCK INSTANCE
,备份binlog
位点、GTID
、ib_buffer_pool
、my.cnf
、xtrabackup_info
,停止拷贝Redo Log
3. 恢复过程
3.1 参考命令
xtrabackup --decompress --remove-original --target-dir=/data/mydata
xtrabackup --prepare --target-dir=/data/mydata
# 准备好配置文件
# 启动
3.2 过程
- 检测到系统表空间里的
LSN
与redo log
里的不一致,应用拷贝的记录 - 删除重建
redo log
,记录LSN