可以通过开启general log 来看mysqldump的整个备份过程。
set global general_log=ON;
备份脚本:mysqldump -uroot -p -E -R --triggers --single-transaction --master-data=2 -A > test_all.sqlmysqldump的主要过程:
一开始执行 FLUSH TABLES 关闭实例中所有的表。 此过程可能会被已经存在的select 阻塞从而影响前台业务。
执行语句 FLUSH TABLES WITH READ LOCK 获取全局表的读锁,保证表一致性。
设置会话级别事务的隔离级别为 REPEATABLE READ ,保证事务期间数据的一致性。
执行语句 START TRANSACTION /* !40100 WITH CONSISTENT SNAPSHOT */ 创建一个一致性事务快照。
查看是否开启 GTID。
获取当前状态下的binlog 文件及position 信息。 (在备份选项中执行了--master-data)。
执行 UNLOCK TABLES 释放全局读锁。
开始备份第一个数据库数据,为事务创建一个检查点,备份完一张表之后还原至检查点接着备份下一张表,直至该数据库所有的表备份完成,接着备份下一个数据库数据,直至所有数据库数据备份完成。
当备份完最后一个数据库数据后释放检查点,退出并终止事务。
参考文档: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html https://dev.mysql.com/doc/refman/5.7/en/flush.html
