xtrabackup备份原理其实到处都能找到, 也有很多源码解读的, 但是都不太直观, 所以本文使用GDB查看下xtrabacup的备份流程(仅全备流程)
写在前面
gdb的基础使用可以看前面的文章:...参数初始完成后(含连接Mysql), 就到了备份函数, 使用step进入备份函数, 查看详情
图片
获取当前LSN
图片
创建新线程去拷贝日志
图片
可以使用thread 2 切换到2线程去, 看下这个线程的栈帧...copy/move: xtrabackup_copy_back/xtrabackup_move_back
3. xtrabackup是以备份结束时间点为恢复点的, (mysqldump是以备份开始的时间点作为恢复点的...因为xtrabackup是利用的redo记录备份期间的数据变化的, Mysqldump是以事务(--single-transaction)去保证数据一致的
4....备份流程如下
开始备份
初始化参数
获取当前LSN
拷贝redo log(持续拷贝)
获取表空间(innodb)信息
拷贝innodb数据
拷贝myisam表(可能会锁,和参数--no-lock有关)