-
Notifications
You must be signed in to change notification settings - Fork 55
gtid_mode
xiaoboluo768 edited this page Jun 14, 2020
·
2 revisions
- 是否开启gtid复制模式,该参数有如下几个有效值
- ON:设置为ON时,表示启用全局唯一事务ID(GTIDS)来唯一识别一个事务,开启这个参数还需要同时开启log-bin=mysql-bin、log_slave_updates=1(5.7.7开始的版本在启用GTID复制时不再必须打开这个参数,而是使用gtid_executed表来记录从库执行过的事务的GTID)、enfoce_gtid_consystency=1三个参数。
- OFF:设置为OFF时,binlog中将不记录GTID,要注意:设置为OFF时,从库的binlog或者relay log中出现了GTID,那么将导致复制出错。另外show slave status\G;输出结果中的gtid_purged和gtid_executed两个值不是持久化的,一旦在开启GTID之后再关闭,且清理了包含GTID的binlog之后,则这两个值将丢失。
- UPGRADE_STEP_1和UPGRADE_STEP_2:这两个值为预留功能值,目前还不能使用,如果你不想在启动的时候报错拒绝启动,那就不要尝试设置这两个值(5.7.6开始,这两个值被OFF_PERMISSIVE和ON_PERMISSIVE取代,且ON和OFF值的对应的功能有变化,详见5.7的参考手册)
- 在MySQL 5.7.5及其之前的版本中,使用--gtid-mode = ON参数只能在启动的时候开启,且启动server时,还需要使用--log-bin,--log-slave-updates选项启动。在MySQL 5.7.6及更高版本中,log-bin和log_slave_updates参数在开启GTID时也可以关闭,因为5.7增加了一个表gtid_executed来保存GTID,只有当gtid_mode为ON或ON_PERMISSIVE时,GTID才会存储在mysql.gtid_executed表中。 GTID是否存储在此表中,与是否启用二进制日志记录没关系。但是,存储GTID到这个表的时机取决于log_bin是ON还是OFF:
- 如果禁用二进制日志记录(log_bin为OFF),则server会将每个事务的GTID与表数据中的事务一起提交并存储(注意,这里每个事务执行时实时更新GTID到gtid_executed表指的是拉取主库binlog重放时的事务,而不是在从库自身写入的事务,自身写入的事务不会记录在这个表中),另外,禁用二进制日志记录时,会以用户可配置的速率周期性地压缩该表;有关详细信息(参数gtid_executed_compression_period控制,默认为1000个事务压缩一次表)
- 如果启用二进制日志记录(log_bin为ON),则会将GTID存储在mysql.gtid_executed中,但是写入时机是当二进制日志被旋转或server关闭时,将写入最后一个binlog的GTID和前一个binlog中所有的GTID到表中
- 在server意外停止的情况下,GTID集来不及保存在mysql.gtid_executed表中。在这种情况下,在崩溃恢复期间,这些GTID将被重新添加到表中以及被用于更新gtid_executed系统变量中的GTID事务号范围
- mysql.gtid_executed表在执行RESET MASTER语句时会被重置
- 全局变量,只读变量,默认值为OFF,枚举类型(5.7.6开始可动态修改),要注意,该值类型是枚举类型,不是布尔型,所以不要使用0和1来设置,否则可能导致意外的结果。
上一篇:sync_binlog | 下一篇:enforce_gtid_consistency
-
本 WIKI 包含了《千金良方--MySQL 性能优化金字塔法则》一书的代码段加粗命令行命令和SQL语句文本、以及4个附录内容,其中:
- 代码段和高清图单独整理为一个系列文档,如下:
- 每个附录都各自整理成了一个小系列文档,如下:
-
《千金良方--MySQL 性能优化金字塔法则》 一书的作者信息如下:
- 李春、罗小波、董红禹
-
联系人QQ:309969177
-
提示:
-
郑重声明:本WIKI仓库中的资料为电子工业出版社与本书的三位作者共同授权开源,为了在方便大家的同时,避免不必要的纠葛,任何商业与非商业的引用、转载,麻烦大家注明出处,谢谢配合!