首页 > 数据库 > MySQL > Mysqldump的备份流程
可以通过开启general log 来看mysqldump的整个备份过程。
set global general_log=ON;

备份脚本:
mysqldump -uroot -p -E -R --triggers --single-transaction --master-data=2 -A > test_all.sql
mysqldump的主要过程:
一开始执行
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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21374452/viewspace-2854260/ ,如需转载,请注明出处,否则将追究法律责任。