本文共 3756 字,大约阅读时间需要 12 分钟。
OFF | 彻底关闭GTID,如果关闭状态的备库接受到带GTID的事务,则复制中断 |
OFF_PERMISSIVE | 可以认为是关闭GTID前的过渡阶段,主库在设置成该值后不再生成GTID,备库在接受到带GTID 和不带GTID的事务都可以容忍 主库在关闭GTID时,执行事务会产生一个Anonymous_Gtid事件,会在备库执行: SET @@SESSION.GTID_NEXT= ‘ANONYMOUS’ 备库在执行匿名事务时,就不会去尝试生成本地GTID了 |
ON_PERMISSIVE | 可以认为是打开GTID前的过渡阶段,主库在设置成该值后会产生GTID,同时备库依然容忍带GTID和不带GTID的事务 |
ON | 完全打开GTID,如果打开状态的备库接受到不带GTID的事务,则复制中断 |
Master GTID_MODE OFF OFF_PERMISSIVE ON_PERMISSIVE ON Slave GTID_MODE OFF Y Y N N OFF_PERMISSIVE Y Y Y Y* ON_PERMISSIVE Y Y Y Y* ON N N Y Y* N - Slave thread will stop with an error instead of connect Y - GTID_MODEs are compatible * - AUTO_POSITION can be used
GTID_NEXT AUTOMATIC AUTOMATIC ANONYMOUS UUID:NUMBER binlog on binlog off GTID_MODE OFF anonymous anonymous anonymous error OFF_PERMISSIVE anonymous anonymous anonymous UUID:NUMBER ON_PERMISSIVE new GTID anonymous anonymous UUID:NUMBER ON new GTID anonymous error UUID:NUMBER Legend: anonymous - Generate an anonymous transaction. error - Generate an error and fail to execute 'SET GTID_NEXT'. UUID:NUMBER - Generate a GTID with the specified UUID:NUMBER. new GTID - Generate a GTID with an automatically generated number.
WARN | 在开启GTID之前,可以设置成WARN来观察实例负载中是否存在不兼容GTID的语句,当前包括: CREATE TABLE ..SELECT 混合非事务和事务引擎的事务 在开启的事务中执行CREATE/DROP TEMPORARY TABLE 设置成WARN时,用户负载能保证正常,错误日志里会记录下来这些语句信息 |
ON | 打开选项,上述的几种语句将给客户端返回错误。 由于动态设置该选项,我们考虑如下序列, trx1 begin; trx1 由于当前选项off,可以执行混合非事务引擎的事务 ——另外一个session打开该选项 trx1 commit 为了解决这个问题,在内部检测到GTID不安全的语句时,使用一个计数器统计,只有该值为0时,才允许打开该选项 |
OFF | 关闭该选项,则无法打开GTID_MODE |
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
转载地址:http://youml.baihongyu.com/