文档解释
Error number: 4072; Symbol: ER_WARN_C_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.
左右
错误说明:
ER_WARN_C_DISABLE_GTID_ONLY_WITH_SOURCE_AUTO_POS_INVALID_POS是MySQL在主从复制流程中产生的错误,其错误代码为4072,错误码属于SQLSTATE=HY000(系统层面的错误)。此错误表示,在取消运行binlog_format=STATEMENT模式的情况下无法自动更新GTID的position值的情况下,无法关闭global_transaction_id的master_info_repository_type数据信息。
常见案例
当MySQL数据库使用binlog_format=STATEMENT模式,master_info_repository_tpe=TABLE,并且未能正确更新GTID position时,系统会遇到ER_WARN_C_DISABLE_GTID_ONLY_WITH_SOURCE_AUTO_POS_INVALID_POS错误。
解决方法:
1、修改MySQL binlog日志格式,可以参考gtid_mode=ON,binlog_format=Mixed或Row。
2、修改master_info_repository_type=TABLE或FILE,修改后重新启动MySQL实例,以及自动更新GTID的position值,以便不再产生ER_WARN_C_DISABLE_GTID_ONLY_WITH_SOURCE_AUTO_POS_INVALID_POS错误。
一般处理方法及步骤
(1)查看当前master_info_repository_type类型,如master_info_repository_type=TABLE,可以直接执行第3步;如master_info_repository_type=FILE,请执行第2步。
(2)如果master_info_repository_type=FILE,则先将FILE文件备份,然后执行 SET GLOBAL master_info_repository_type=TABLE;
(3)执行 UPDATE mysql.slave_master_info SET master_log_pos=当前binlog的位置,master_log_file=当前binlog的文件;(如果是个恰当的位置,例如恢复完成的位置,可以使用 SHOWMASTERSTATUS;查看)
(4)重新启动MySQL实例,如果master_info_repository_type=TABLE,则可以忽略第2步。
以上就是MySQL的ER_WARN_C_DISABLE_GTID_ONLY_WITH_SOURCE_AUTO_POS_INVALID_POS错误,以及解决ER_WARN_C_DISABLE_GTID_ONLY_WITH_SOURCE_AUTO_POS_INVALID_POS错误的方法。