简书地址:
http://www.jianshu.com/p/c9888d6447c8
想了想还是专门开了一节来总结这个问题
5.7.6以下中默认
-
<李>
simplified_binlog_gtid_recovery=误
李>
5.7.6以上中默认
-
<李>
binlog_gtid_simple_recovery=true
李>
默认值就是最合理的设置。
因为参数名更改了所以下面<强>统称simple_recovery 强>来代替。
一,Gtid关闭
<人力资源字体大小:16 px;空白:正常;background - color: # FCFAF2;”/>-
<李>
simple_recovery=误
李>5.7.6以下:这种方式一定得到正确的Gtid集合
-
<李>
重启Mysql需要扫描全部的binlog来获得正确的Gtid集合
李>
<李>
清洗binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,由上层函数控制。因为不支持在线的Gtid更改。
李>
5.7.6以上:这种方式一定得到正确的Gtid集合
-
<李>
重启Mysql扫描全部的binlog。
李>
<李>
清洗binlog或者超过参数expire_logs_days参数设置触发全binlog扫描。
李>
-
<李>
simple_recovery=true
李>5.7.6以下:这种情况可能得不到正确的Gtid集合
-
<李>
重启Mysql不扫描全部的binlog,只扫描第一个和最后一个binlog。
李>
<李>
清洗binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,由上层函数控制。
李>
5.7.6以上:由于有每个binlog都有以前gtid事件的支持能够得到正确的gtid集合。
-
<李>
重启Mysql不扫描全部的binlog,只扫描第一个和最后一个binlog。
李>
<李>
清洗binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,只扫描第一个和最后一个binlog。
李>
二,Gtid打开
<人力资源字体大小:16 px;空白:正常;background - color: # FCFAF2;”/>-
<李>
simple_recovery=误
李>5.7.6以下:这种方式一定得到正确的Gtid集合。
-
<李>
重启Mysql不扫描全部的binlog,如果是中途打开GTID,重启任然需要扫描多个binlog因为需要找到先前GTID事件。
李>
<李>
清洗binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,如果是中途打开GTID重启,任然需要扫描多个binlog因为需要找到先前GTID事件。
李>
5.7.6以上:这种方式一定得到正确的Gtid集合
-
<李>
重启Mysql不扫秒全部的binlog,如果是中途打开GTID重启任然需要扫描多个binlog因为需要找到GTID事件。
李>
<李>
清洗binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,如果是中途打开GTID重启任然需要扫描多个binlog因为需要找到GTID事件。
李>
-
<李>
simple_recovery=true
李>5.7.6以下:这种情况可能得不到正确的Gtid集合
-
<李>
重启Mysql不扫描全部的binlog,只扫描第一个和最后一个binlog。
李>
<李>
清洗binlog或者超过参数expire_logs_days参数设置不扫描全部binlog,只扫描第一个和最后一个binlog。
李>
5.7.6以上:由于有每个binlog都有以前gtid事件的支持能够得到正确的gtid集合。
-
<李>
重启Mysql不扫描全部的binlog,只扫描第一个和最后一个binlog。
李>
<李>
清洗binlog或者超过参数expire_logs_days参数设置不触发全binlog扫描,只扫描第一个和最后一个binlog。
李>
三、本节总结
-
<李>
5.7.6以下保持默认设置simplified_binlog_gtid_recovery=误,但是这会导致过多的binlog扫描,况且5.6没有mysql.gtid_executed的支持,从库必须开启log_slave_updates,这会带来性能影响。所以还是少用Gtid。
李