组提交介绍
gtid注意事项
GTID复制的优势
show global variables like 'server_uuid'; -- 查看uuid
show global variables like '%gtid_purged%'; -- 查看gtid
mysqldump -uroot -p --single-transaction --all-databases --master-data=2 --set-gtid-purged=off > alldb_bak.sql
--single-transaction 开启事务,可重复读,不锁表,不影响读写,仅支持innodb引擎
--master-data=2 记录位点信息,并以注释的形式写到导出的文件中
--set-gtid-purged=off 关闭gtid
1 、对于支持事务的引擎如 InnoDB , 参数上是在备份的时候加上 –single-transaction 保证数据一致性
–single-transaction 实际上通过做了下面两个操作 :
① 在开始的时候把该 session 的事务隔离级别设置成 repeatable read ;
② 然后启动一个事务(执行 begin ),备份结束的时候结束该事务(执行 commit )
有了这两个操作,在备份过程中,该 session 读到的数据都是启动备份时的数据(同一个点)。可以理解为对于 innodb 引擎来说加了该参数,备份开始时就已经把要备份的数据定下来了,备份过程中的提交的事务时是看不到的,也不会备份进去。
2 、对于不支持事务的引擎如 MyISAM ,只能通过锁表来保证数据一致性,这里分三种情况:
① 导出全库 : 加 –lock-all-tables 参数 , 这会在备份开始的时候启动一个全局读锁 ( 执行 flush tables with read lock ), 其他 session 可以读取但不能更新数据 , 备份过程中数据没有变化 , 所以最终得到的数据肯定是完全一致的 ;
② 导出单个库:加 –lock-tables 参数,这会在备份开始的时候锁该库的所有表,其他 session 可以读但不能更新该库的所有表,该库的数据一致;
-----------------------------------
Mysql备份原理与工具mysqldump之--single-transaction,--master-data
https://blog.51cto.com/u_14035463/5584416
基于位点的主从复制部署流程图
这是我饿的笔记