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.提交,备份完成
数据一致性时间点:备份开始时
Xtrabackup备份的过程
1.关闭所有的表
2.开启redo日志拷贝线程,从最新的检查点开始顺序拷贝redo日志;
3.开启idb文件拷贝线程,拷贝innodb表的数据
4.idb文件拷贝结束,通知调用FTWRL,获取一致性位点
5.备份非innodb表(系统表)和frm文件
6.由于此时没有新事务提交,等待redo日志拷贝完成
7.最新的redo日志拷贝完成后,相当于此时的innodb表和非innodb表数据都是最新的
8.获取binlog位点,此时数据库的状态是一致的。
9.释放锁,备份结束。
数据一致性时间点:备份结束时