解决mysql二进制日志恢复数据报错:@@GLOBAL.GTID_MODE = OFF.
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了解决mysql二进制日志恢复数据报错:@@GLOBAL.GTID_MODE = OFF.,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3042字,纯文字阅读大概需要5分钟。
内容图文
![解决mysql二进制日志恢复数据报错:@@GLOBAL.GTID_MODE = OFF.](/upload/InfoBanner/zyjiaocheng/497/1ddb85ebc20c4792913e94fad2dd01bc.jpg)
[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模式,上述不支持的语句将会返回错误。
解决mysql二进制日志恢复数据报错:@@GLOBAL.GTID_MODE = OFF.
标签:next state 解决办法 gtid table 系统 开发 col sele
本文系统来源:http://blog.51cto.com/9285090/2057677
内容总结
以上是互联网集市为您收集整理的解决mysql二进制日志恢复数据报错:@@GLOBAL.GTID_MODE = OFF.全部内容,希望文章能够帮你解决解决mysql二进制日志恢复数据报错:@@GLOBAL.GTID_MODE = OFF.所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。