MySQL如何在线开启/关闭GTID

技术MySQL如何在线开启/关闭GTID小编给大家分享一下MySQL如何在线开启/关闭GTID,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一

边肖将与大家分享MySQL如何在线开启/关闭GTID。相信大部分人还不太了解,所以分享这篇文章给大家参考。希望你看完这篇文章后收获多多。让我们一起来发现吧!

一 前言

MySQL DBA大多熟悉MySQL 5.6,开始提供基于GTID模式的主从复制。该功能简化了复制,降低了主从复制维护的难度,提高了复制的可操作性,不再依赖binlog文件名和文件中的位置。然而,它有许多局限性。5.7版MySQL支持对GTID的以下改进:

答:不需要重启MySQL服务器。

b配置过程在线,整个复制集群仍然对外提供读写服务。

不需要改变复制拓扑。

可以在任何结构的复制集群中在线启用D GTID功能。

在线修改GTID时,必须遵循以下顺序。

off-off _ permission-on _ permission-on不能跳过链接。比如gtid_mode不能直接从off改成on,否则MySQL会提示你。

错误1788(HY000): @ @ GLOBAL的值。一次只能改变一个步骤。还要注意,该值必须在所有服务器上同时递增或递减。有关说明,请参阅手册。

在练习在线升级之前,我们需要了解一下在MySQL 5.7 :版本中GTID_MODE的含义。

OFF :不生成GTID,GTID,Slave只接受没有GTID的交易。

OFF_PERMISSIVE :不生成GTID,GTID,Slave接受没有GTID的事务和有GTID的事务。

On _ permission:生成GTID和GTID,Slave接受没有GTID的事务和有GTID的事务。

ON :生成GTID,GTID,Slave只能接受带有GTID的交易。00-1010需要注意的是,只有数据库版本为5.7.6以及之后版本才能支持GTID的在线开通。测试GTID开启时模拟主库读写压力测试:

sysbench-test=OLTP . Lua-OLTP-tables-count=1-OLTP-table-size=500000-MySQL-db=sysbench-MySQL-user=sysbench-MySQL-password=sysbench-MySQL-SOC ket=/SRV/my 3316/run/MySQL . sock-max-time=600-num-threads=1-OLTP-test-mode=complex run

00-1010 setglobal1。不支持非事务引擎。

2.创建表格.不支持select语句(主库执行时直接报告错误)。

3.一个SQL不允许同时更新事务引擎和非事务引擎的表。

4.不支持创建临时表和删除临时语句。

如果没有警告,请在所有实例上执行:

设置全局ENFORCE _ GTID _ CONSISTENCY=ON

二 在线开启GTID

设置全局GTID _ MODE=OFF _ PERMISSIVE

如果主库没有生成GTID,GTID,从属实例接受没有GTID的事务和有GTID的事务。在执行下一步之前,请确保在所有实例中执行该命令。

2.1 在主从复制结构中所有的实例中执行

设置全局GTID _ MODE=ON _ PERMISSIVE

主库开始生成GTID,GTID,Slave接受没有GTID的事务和有GTID的事务。

00-1010在每个实例节点上执行以下命令,以检查匿名事务是否被使用

好多检查几次,以便确认该参数的值是0.

[RW][TEST:3316]>SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
+-------------------------------------+-------+
| Variable_name                       | Value |
+-------------------------------------+-------+
| Ongoing_anonymous_transaction_count | 0     |
+-------------------------------------+-------+
1 row in set (0.00 sec)

如果在从库上检查只需要一次满足为0 即可。

2.5 确保第四步之前的binlog全部为应用。

确保操作之前的所有binlog都已经被其他服务器应用了,因为匿名的GTID必须确保已经复制应用成功,才可以进行下一步操作。如何检查呢? 其实最简单的方式是在从库库执行show slave status检查应用位点的情况。如果追上了,则可以继续。否则需要等待从库应用完binlog之后在进行下一步。

2.5 在主从复制结构中所有的实例中执行:

set global GTID_MODE = ON;

该参数的功能是让系统产生GTID ,Slave只能接受带GTID的事务。

2.6 在从库上执行:

设置slave 复制中MASTER_AUTO_POSITION=1。

[RO][TEST:3316]>stop slave;
[RO][TEST:3316]>CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
[RO][TEST:3316]>[RW][TEST:3316]>start slave;

至此,将基于位点的复制关系升级为GTID模式。结束了吗?还没呢,记得修改my.cnf 添加

gtid_mode = on
enforce_gtid_consistency = on

三 在线关闭GTID

关闭GTID的步骤其实和开启的步骤相反:

3.1 关闭slave 复制中的 MASTERAUTOPOSITION
[RO][TEST:3316]>stop slave;
[RO][TEST:3316]>CHANGE MASTER TO MASTER_LOG_FILE = file,
MASTER_LOG_POS = position  MASTER_AUTO_POSITION = 0;
[RO][TEST:3316]>[RW][TEST:3316]>start slave;
3.2 在所有的实例上执行:

set global GTID_MODE = ON_PERMISSIVE;

3.3 在所有的实例上执行:

set global GTID_MODE = OFF_PERMISSIVE;

3.4 等待 @@GLOBAL.GTID_OWNED 的值是一个空字符串为止。

SELECT @@GLOBAL.GTID_OWNED;

3.5 检查master上的binlog中的日志都已经被slave应用完毕
3.6 在所有实例上设置GTID_MODE 为off

set global GTID_MODE = OFF;

3.7 在所有实例上执行:

SET global GTID_MODE = OFF;

SET global ENFORCE_GTID_CONSISTENCY = OFF;

以上是“MySQL如何在线开启/关闭GTID”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/73746.html

(0)

相关推荐

  • ajax请求的步骤是什么

    技术ajax请求的步骤是什么ajax请求的步骤是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ajax请求的五个步骤 第一步,创建XMLHttpR

    攻略 2021年11月26日
  • mydumperloaderother

    技术mydumperloaderother mydumperloaderother1.mydumperMydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。 Mydumper

    礼包 2021年11月10日
  • 怎么解决TensorFlowGPU版出现OOM错误的问题

    技术怎么解决TensorFlowGPU版出现OOM错误的问题这篇文章主要介绍“怎么解决TensorFlowGPU版出现OOM错误的问题”,在日常操作中,相信很多人在怎么解决TensorFlowGPU版出现OOM错误的问题

    攻略 2021年11月4日
  • 怎样浅谈Java Servlets与CGI程序

    技术怎样浅谈Java Servlets与CGI程序怎样浅谈Java Servlets与CGI程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从网络的早期阶

    攻略 2021年11月20日
  • 如何深入Tomcat源码分析Session

    技术如何深入Tomcat源码分析Session如何深入Tomcat源码分析Session,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Session到底

    攻略 2021年12月8日
  • leetcode 字符串转换整数(leetcode字符串转换整数教学)

    技术LeetCode如何实现罗马数字转整数这篇文章给大家分享的是有关LeetCode如何实现罗马数字转整数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1 题目描述罗马数字中,字母与数字之间有

    攻略 2021年12月15日