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)

相关推荐

  • 对数的导数,有人会自然对数求导推导吗,急用

    技术对数的导数,有人会自然对数求导推导吗,急用绘制出图象对数的导数,可以看出在x=0的时候是存在导数的,x=1不可导,x=-1未定义。假如用对数求导法:
    看到lnx和1/x,我知道为什么了。
    在x=0的时候,对数求导法当

    生活 2021年10月28日
  • IE8下DIV嵌套出现错误怎么办

    技术IE8下DIV嵌套出现错误怎么办这篇文章给大家分享的是有关IE8下DIV嵌套出现错误怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。IE8下DIV嵌套出现错误解决方案最近用DIV写了几

    攻略 2021年11月6日
  • oracle中expdp和impdp如何导出导入表空间

    技术oracle中expdp和impdp如何导出导入表空间小编给大家分享一下oracle中expdp和impdp如何导出导入表空间,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有

    攻略 2021年11月11日
  • Spring AOP如何实现简单的日志切面

    技术Spring AOP如何实现简单的日志切面本篇文章给大家分享的是有关Spring AOP如何实现简单的日志切面,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看

    攻略 2021年10月27日
  • Java关键字和保留字是什么

    技术Java关键字和保留字是什么这篇文章主要讲解了“Java关键字和保留字是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java关键字和保留字是什么”吧!  1、访

    攻略 2021年11月4日
  • Vue 登录Id的传值+ 购物车的结算

    技术Vue 登录Id的传值+ 购物车的结算 Vue 登录Id的传值+ 购物车的结算一、登录Id的传值1、传值if (res.data.code !="") {this.$message({message

    礼包 2021年10月28日