启用auto_position=1一直报错了致命错误1236从二进制日志读取数据时从主:& # 39;奴隶是连接使用修改主MASTER_AUTO_POSITION=1,但主清除二进制日志包含GTIDs奴隶需要# 39;公司,Error_code: 1236
gtid中一些变量的理解
Retrieved_Gtid_Set:接收到gtid集合
Executed_Gtid_Set:奴隶已经执行过gtid集合,这个值使用从库的gtid_executed这个变量初始化
gtid_executed:执行过的gtid集合
gtid_purged:已经被清洗清除掉gtid集合
在执行开始slave 的时候,如何计算起始的gtid值/集合
在从库已经执行的gtid集合
gtid_executed={0 dd527e9 af3e - 11 - e8 9 ed6 - 00505683 - b926:1 - 62 0 dd527e9 af3e - 11 - e8 9 ed6 - 00505683 - b927:1 - 3, 87 cf7b97 - c393 11 - e8 - 845 b - 005056 a95814:1 bb014309 e1a6 - 11 - e8 b284 - 00505683 - b926:1 - 12, c488995b e256 - 11 - e8 abb7 - 00505683 - b926:1 - 9}
主库上执行的gtid集合
master_gtid_executed={c488995b e256 - 11 - e8 abb7 - 00505683 - b926:1 - 10}
主库发送给从库的第一个gtid值(也可能是一个集合)
send_first_gtids={master_gtid_executed - gtid_executed}
send_first_gtids={c488995b e256 - 11 - e8 abb7 - 00505683 - b926:10}
这个时候就计算出主人需要发送给奴隶的第一个gtid值/集合,
如果这个值已经被主人清洗清理掉了(也就说在主人的binlog文件中找不到了)
奴隶就会报错,1236错误,
具体报错如下:
有致命错误1236从二进制日志读取数据时从主:& # 39;奴隶是连接使用修改主MASTER_AUTO_POSITION=1,但主清除二进制日志包含GTIDs奴隶需要# 39;公司,Error_code: 1236
对于这种错误有两种解决方案,
1。重做奴隶
2。找到历史的binlog文件,收到从binlog文件cp出需要的gtid集合日志在奴隶执行(这里需用到mysqlbinlog——include-gtids),重新初始化从库的gtid_executed的值