mysqldump,Xtrabackup备份原理

mysqldump备份(全备)的过程

1.关闭所有打开的表(flush table)

2.添加一个全局读锁(flush table with read lock)

3.修改当前会话的事物隔离级别为RR

4.开启一个事务(--single-transaction),获取当前数据库快照

5.SHOW MASTER STATS(--master-data),记录备份开始时位置点信息

6.备份非innodb的表(备份整个实例时才会有这一步操作)

7.非innodb表备份完成后,释放FTWRL锁(unlock tables)

8.依次备份innodb的表

9.提交,备份完成

数据一致性时间点:备份开始时

mysqldump,Xtrabackup备份原理

 

Xtrabackup备份的过程

1.关闭所有的表

2.开启redo日志拷贝线程,从最新的检查点开始顺序拷贝redo日志;

3.开启idb文件拷贝线程,拷贝innodb表的数据

4.idb文件拷贝结束,通知调用FTWRL,获取一致性位点

5.备份非innodb表(系统表)和frm文件

6.由于此时没有新事务提交,等待redo日志拷贝完成

7.最新的redo日志拷贝完成后,相当于此时的innodb表和非innodb表数据都是最新的

8.获取binlog位点,此时数据库的状态是一致的。

9.释放锁,备份结束。

数据一致性时间点:备份结束时

mysqldump,Xtrabackup备份原理