设为首页 加入收藏

TOP

MySQL二进制日志恢复数据报错:@@GLOBAL.GTID_MODE = OFF.
2018-01-17 13:05:34 】 浏览:156
Tags:MySQL 二进制日志 恢复 数据 @@GLOBAL.GTID_MODE OFF.

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


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


服务器相关环境参数:


MySQL版本:


解决办法:


配置gtid选项


配置前:


配置后:


 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模式,上述不支持的语句将会返回错误。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇oracle expdp作业外表报错ORA-200.. 下一篇XtraBackup备份时出现的socket报..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目