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。主从同步正常

相关推荐
Eastsea.Chen36 分钟前
MTK Android12 user版本MtkLogger
android·framework
i道i6 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
Oak Zhang7 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
长亭外的少年8 小时前
Kotlin 编译失败问题及解决方案:从守护进程到 Gradle 配置
android·开发语言·kotlin
久醉不在酒9 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
WindFutrue9 小时前
使用Mybatis向Mysql中的插入Point类型的数据全方位解析
数据库·mysql·mybatis
一只爱撸猫的程序猿10 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx
计算机毕设源码qq-383653104110 小时前
(附项目源码)Java开发语言,215 springboot 大学生爱心互助代购网站,计算机毕设程序开发+文案(LW+PPT)
java·开发语言·spring boot·mysql·课程设计
袁庭新10 小时前
Cannal实现MySQL主从同步环境搭建
java·数据库·mysql·计算机·java程序员·袁庭新
建群新人小猿10 小时前
会员等级经验问题
android·开发语言·前端·javascript·php