Error number: 3990; Symbol: ER_RPL_ASYNC_RECONNECT_GTID_MODE_OFF; SQLSTATE: HY000
Message: Failed to enable Asynchronous Replication Connection Failover feature. The CHANGE REPLICATION SOURCE TO SOURCE_CONNECTION_AUTO_FAILOVER = 1 can only be set when @@GLOBAL.GTID_MODE = ON.
MySQL Error 3990 (ER_RPL_ASYNC_RECONNECT_GTID_MODE_OFF)属于MySQL协议错误,主要指在异步线程重新连接时,gtid_mode的值为OFF。
错误说明:
当MySQL的gtid_mode选项被设置为OFF(原来为ON)时,此常见情况下异步线程会重新连接。但是,MySQL的gtid_mode必须是ON的,以保持当前会话的GTID一致性。而且,异步线程会针对 GTID Mode 错误来报告此错误 (错误号 3990)。
1. 如果MySQL实例已更改为OFF时,可能会出现该错误,但是从MySQL 8.0开始-gtid_mode将默认值设置为ON,因此使用MySQL 8.0及之后的版本的用户将不太可能碰到此错误。
2. 如果你的MySQL版本低于8.0,并且你在是把gtid_mode设置为OFF时,将会出现这个错误,比如my.cnf中将gtid_mode设置为OFF
3. 如果真正使用gtid(gtid_mode设置为ON),但是执行“set global gtid_mode=OFF”语句时也可能出现此错误。
解决方法:
1. 对于MySQL 8.0以前的版本,如果需要避免此错误,请务必在my.cnf文件中将gtid_mode设置为ON。
2. 如果当前MySQL版本已经是8.0或以上,可以使用gtid_mode默认值(ON)来避免此错误。
3. 如果曾经设置gtid_mode=OFF,则需要恢复gtid_mode的值,以便解决此错误,可以使用以下语句来还原gtid_mode:set global gtid_mode=on;
4. 如果出现此错误,并且不想更改gtid_mode的值,可以选择忽略错误,只需执行以下命令便可:SET GLOBALIGNORE_ERRORS = 3990