对下面这张图的1,2,3,4处不理解
第1处,master为OFF,slave为ON_PERMISSIVE时。
master的日志为匿名的,为什么slave不能兼容?ON_PERMISSIVE不是能够接受匿名和gtid事务么?
第2处 master为OFF_PERMISSIVE,slave为ON
master日志为匿名事务,为什么从库是Y*(即可以auto-positioning),自动定位不需要gtid么?
第3处 master为ON_PERMISSIVE,slave为OFF
master的日志为gtid格式的,从库OFF为什么可以兼容(OFF模式不是只能接受匿名事务么)
第4处 master为ON,slave为OFF_PERMISSIVE
master日志为gtid格式,从库OFF_PERMISSIVE为什么不能兼容(OFF_PERMISSIVE不是可以接受匿名和gtid事务么?
感觉自己哪儿理解错了,请大神帮忙解答下
参考GPT和自己的思路:
第1处的情况,如果master为OFF,表示该主库没有启用gtid模式,由于在MySQL5.7以后默认启用gtid模式,所以在slave为ON_PERMISSIVE模式的情况下,该从库只能接受gtid格式的事务,因此无法兼容匿名格式事务。
在第2处的情况中,如果master为OFF_PERMISSIVE,表示该主库没有启用gtid模式,从库为ON模式,表示该从库启用了gtid模式,因此可以自动定位到主库的最新位置进行复制操作,并不需要gtid。
在第3处的情况中,如果master为ON_PERMISSIVE,表示该主库启用了gtid模式,而从库为OFF模式,表示该从库没有启用gtid模式,在这种情况下,从库只会接受匿名格式事务,因此可以兼容主库的gtid格式事务,但是不会记录这些事务的gtid信息。
在第4处的情况中,如果master为ON,表示该主库启用了gtid模式,而从库为OFF_PERMISSIVE模式,表示该从库没有启用gtid模式,同样只接受匿名格式事务,因此无法兼容主库的gtid格式事务。虽然OFF_PERMISSIVE模式可以接受匿名和gtid格式事务,但是这里的关键在于从库是否开启了gtid模式。