Error number: MY-013806; Symbol: ER_WARN_L_DISABLE_GTID_ONLY_WITH_SOURCE_AUTO_POS_INVALID_POS; SQLSTATE: HY000
Message: The replication positions relative to the source may be out-of-date on channel ‘%s’, due to the use of GTID_ONLY=1. The out-of-date positions can still be used in some cases so, in order to update them, we suggest that you start the replication to receive and apply at least one transaction, which will set the positions to valid values.
错误说明
MY-013806,ER_WARN_L_DISABLE_GTID_ONLY_WITH_SOURCE_AUTO_POS_INVALID_POS,HY000 这个在MySQL中是一个参数异常错误,你可以理解为是GTID设置不正确(Global Transaction IDs)。
GTID全称为全局事务ID,是MySQL 5.6.5及以上版本中提供的一种全新的数据库的复制方案,用于处理复制服务器的事务安全性问题。这种方案与之前的事务复制不同,GTID是由每一个服务器而不仅仅是URL来决定唯一的事务,另外,GTID也允许模拟点获取slave位置。
常见案例
MY-013806,ER_WARN_L_DISABLE_GTID_ONLY_WITH_SOURCE_AUTO_POS_INVALID_POS,HY000 在MySQL数据库中,常见原因就是GTID发生定义错误,当GTID被当前的MySQL服务器所拒绝时,将导致此异常出现。
解决方法
若收到以上异常,最常见的解决方法就是重新检查mysql的 GTID 所指定的 server uuid 是否有误。要正确定义 GTID,需要在复制的MySQL服务器的mysql日志中保存(重要),例如 master 的日志中具备GTID信息,而slave的日志中没有GTID信息。确定这一点后,你只需重新设置 GTID,让 slave 配置事务复制来源,让 master 允许 slave 获取事务复制服务,就可以解决这个问题了。