MySQL GTID 主从错误

错误

搭建主从出现以下错误

复制代码
Last_IO_Error: The replication receiver thread cannot start because the master has GTID_MODE = OFF and this server has GTID_MODE = ON.

原因

MySQL主从的 MasterSlave 必须 同时开启或者关闭 enforce-gtid-consistencygtid-mode 功能,即要保持一致。

主节点

复制代码
mysql> show variables like '%GTID_MODE%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | OFF   |
+---------------+-------+
1 row in set (0.01 sec)

关闭状态

从节点

复制代码
mysql> show variables like '%GTID_MODE%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | ON    |
+---------------+-------+
1 row in set (0.00 sec)

开启状态

解决

开启主节点的 GTID
复制代码
mysql> set global enforce_gtid_consistency=on;
Query OK, 0 rows affected (0.00 sec)


mysql>
mysql>
mysql>  set global gtid_mode=ON;
ERROR 1788 (HY000): The value of @@GLOBAL.GTID_MODE can only be changed one step at a time: OFF <-> OFF_PERMISSIVE <-> ON_PERMISSIVE <-> ON. Also note that this value must be stepped up or down simultaneously on all servers. See the Manual for instructions.
mysql>

在更改GTID_MODE时不可直接跳跃更改,否则会提示报错

复制代码
mysql> set @@global.enforce_gtid_consistency=warn;
Query OK, 0 rows affected (0.00 sec)


mysql> set @@global.enforce_gtid_consistency=on;
Query OK, 0 rows affected (0.00 sec)


mysql> SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
Query OK, 0 rows affected (0.02 sec)


mysql> SET @@GLOBAL.GTID_MODE = on_permissive;
Query OK, 0 rows affected (0.01 sec)


mysql>  set global gtid_mode=ON;
Query OK, 0 rows affected (0.01 sec)

查看

复制代码
mysql> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | ON    |
+---------------+-------+
1 row in set (0.01 sec)

主节点已开启

重新搭建

从库取消主从

复制代码
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)


mysql> reset slave all;
Query OK, 0 rows affected (0.03 sec)

主库查看 日志位点

复制代码
mysql> show master status\G
*************************** 1. row ***************************
             File: binlog.000028
         Position: 157
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

记住 file 文件position 位点

从库搭建

复制代码
mysql> CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PASSWORD='123456',MASTER_PORT=3306, MASTER_LOG_FILE='binlog.000028', MASTER_LOG_POS=157;
Query OK, 0 rows affected, 1 warning (0.03 sec)


mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
查看
复制代码
mysql> show slave status\G

发现 Slave_IO_RunningSlave_SQL_Running均为 yes。主从同步正常

相关推荐
北顾南栀倾寒1 分钟前
[MySQL]MySQL数据库的介绍和库相关操作
数据库·mysql
LuiChun2 小时前
webview_flutter_android 4.3.0使用
android·flutter
Tanecious.2 小时前
C语言--分支循环实践:猜数字游戏
android·c语言·游戏
闲暇部落4 小时前
kotlin内联函数——takeIf和takeUnless
android·kotlin
betazhou4 小时前
sysbench压力测试工具mysql以及postgresql
数据库·mysql·postgresql
老苏畅谈运维8 小时前
MySQL性能分析的“秘密武器”,深度剖析SQL问题
数据库·sql·mysql
Java诗人DK9 小时前
windows 安装 mysql 教程
数据库·windows·mysql
Android西红柿13 小时前
flutter-android混合编译,原生接入
android·flutter
大叔编程奋斗记14 小时前
【Salesforce】审批流程,代理登录 tips
android
程序员江同学16 小时前
Kotlin 技术月报 | 2025 年 1 月
android·kotlin