解决mysql二进制日志恢复数据报错:@@GLOBAL.GTID_MODE = OFF.
admin
2023-05-08 11:41:43
0

解决mysql利用二进制日志恢复数据报错:ERROR 1781 (HY000) at line 16: @@SESSION.GTID_NEXT cannot be set to UUID:NUMBER when @@GLOBAL.GTID_MODE = OFF.

工作中,运用二进制日志,帮开发的同事恢复数据时,出现了报错告警:

[root@localhost tmp]# mysqlbinlog --no-defaults mysql-bin.000614|mysql -uroot -p
Enter password:
ERROR 1781 (HY000) at line 16: @@SESSION.GTID_NEXT cannot be set to UUID:NUMBER when @@GLOBAL.GTID_MODE = OFF.
[root@localhost tmp]# mysqlbinlog --no-defaults mysql-bin.000614|mysql -uroot -p
Enter password:
[root@localhost tmp]# echo $?
0

服务器相关环境参数:

服务器系统:CentOS Linux release 7.3.1611 (Core)

MySQL版本:

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.13    |
+-----------+
1 row in set (0.00 sec)


解决办法:

配置gtid选项

配置前:

mysql> show global variables like 'gtid_mode';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    24
Current database: gold
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | OFF   |
+---------------+-------+
1 row in set (0.10 sec)

 

配置后:

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> set @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
mysql> show global variables like 'gtid_mode';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| gtid_mode     | OFF_PERMISSIVE |
+---------------+----------------+
1 row in set (0.00 sec)

 GTID相关知识:

GTID(GlobalTransaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。

MySQL5.6增加了GTID复制。

一个事务对应一个唯一ID。

一个GTID在一个服务器上只会执行一次。

GTID是用来替代以前classic的复制方法。


优点:

相对于行复制来讲数据安全性更高;

故障切换更简单;


GTID的使用局限:

不支持非事务引擎(从库报错,stopslave; start slave; 忽略);

不支持create table … select 语句复制(主库直接报错);不支持sql_slave_skip_counter;

对于createtemporary table 和drop temporary table语句不支持;

不允许在一个SQL同时更新一个事务引擎和非事务引擎的表;

在一个复制组中,必须要求统一开启CTID或是关闭GTID;

开启DTID需要重启(5.7中可能不需要);

开启DTID后,就不在使用原来的传统的复制方式;

gtid和非gtid的mysql实例是不能复制数据的,要么都是gtid,要么都是普通的;

更新非事务引擎表,在同一事务中更新事务表与非事务表将导致多个GTIDs分配给同一事务;

临时表,事务内部不能执行创建删除临时表语句,但可以在事务外执行,但必须设置set autocommit = 1;

 

CREATE TABLE … SELECTstatements

不安全的基于语句复制,实际是两个独立的事件,一个用于建表,一个用于向新表插入源表数据。

 

不执行不支持的语句

启用--enforce-gtid-consistency选项启动GTID模式,上述不支持的语句将会返回错误。

 

 


相关内容

热门资讯

中国量子计算新突破!“九章四号... 记者从中国科学技术大学获悉,由该校潘建伟院士领衔的科研团队联合国内多家科研机构、大学,近期成功研制出...
跳河救人的外卖小哥找到了! 外... 5月12日下午5时许,漯河市郾城区孟庙镇幸福渠河堤旁,57岁的甘女士蹲在河边打水,准备回家给鱼换水,...
今年以来,越来越多美国交流团来... 4月,数十名美国犹他州青少年来豫参加2026年YES项目交流活动。图为美国青少年在郑州体验书法项目。...
“打工机器人”亮相郑州街头 机器人服务员“小盖”在郑州街边的一零售店工作。 王磊 摄机器人当服务员,在街头卖咖啡——这不是科幻电...
打响“河南服务”品牌丨盾构机有... 【开栏的话】为深入贯彻落实全省服务业大会精神,本报即日起开设“打响‘河南服务&rsquo...
一季度我国数字产业收入9.5万... 【大河财立方消息】5月14日,工信部发布的数据显示,一季度,我国数字产业实现良好开局,行业利润大幅改...
一体推进整治形式主义为基层减负... 形式主义实质是主观主义、功利主义,根源是政绩观错位、责任心缺失。当前,各地以深化“六个纠治”为抓手,...
5月上旬汽油柴油价格环比继续下... 【大河财立方消息】 5月14日,国家统计局发布2026年5月上旬流通领域重要生产资料市场价格变动情况...
河南信阳凌晨通报:常某朋(男,... 2026年5月13日21时43分许,我市浉河区发生一起道路交通事故。经查,常某朋(男,40岁)驾驶私...
马化腾回应腾讯AI是否落后;曝... “IT早报”时间,大家好,现在是 2026 年 5 月 14 日星期四,今天的重要科技资讯有: 1、...