xtrabackup和mysqldump备份大致过程

xtrabackup备份过程
1.从最新的checkpoint开始读redo,因为直接拷贝数据文件,有可能还有脏数据留在内存还未刷到磁盘,不能直接从当前redo lsn读起,而是checkpoint读起;
2.拷贝ibdata和数据文件
3.拷贝ibd
4.flush tables with read lock前,观察ftwrl-wait-timeout秒,如果已经执行超过ftwrl-wait-threshold秒的慢查询在观察期间不能结束,则终止备份进程;
这是防止直接发起ftwrl,当无法flush tables时xtrabackup自身被堵塞,同时xtrabackup也会堵塞其他任何新来的会话;
5.如果发起ftwrl时,又被堵塞,则等待kill-long-queries-timeout秒,就把kill-long-query-type类型的堵塞语句杀掉,否则继续等待;
6.获取ftwrl成功后,拷贝frm、opt、MYD、MYI等非事务表和文件,frm是非事务的
7.flush no_write_to_binlog engine logs,将当前所有redo都刷到文件上
8.获取备份实例当前的binlog位点,复制位点等,由于还处于ftwrl状态,所以binlog位点等都不会变
9.unlock tables

mysqldump备份过程
1.flush tables
2.flush tables with read lock
3.set session transaction_isolation=‘repeatable-read’;
4.start transaction with consistent snapshot
5.flush tables with read lock
6.show varialbes like ‘gtid_mode’,show master status
7.unlock tables
8.show create database if not exists sam
9.savepoint a
10.show create table t;
11.select * from t;
12.rollback to savepoint a; 及时释放MDL锁
13.按照a表的步骤继续备份其他表,每一个数据库都新建一个savepoint
14.commit

你可能感兴趣的:(MySQL)