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)

相关推荐

  • linux如何修改系统参数

    技术linux如何修改系统参数这篇文章将为大家详细讲解有关linux如何修改系统参数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vi /etc/security/limits.con

    攻略 2021年11月19日
  • 在facebook上如何找客户

    技术在facebook上如何找客户这篇文章给大家介绍在facebook上如何找客户,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。做外贸肯定离不开facebook,因为上面存在着大量的精准用户,但很多

    攻略 2021年11月4日
  • go语言之Redis数据库

    技术go语言之Redis数据库 go语言之Redis数据库一、Redis五大数据类型
    Redis 的五大数据类型是: String(字符串) 、Hash (哈希)、List(列表)、Set(集合) 和

    礼包 2021年11月10日
  • Java Jwt库的简介及使用方法

    技术Java Jwt库的简介及使用方法这期内容当中小编将会给大家带来有关Java Jwt库的简介及使用方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JWT介绍JWT概念JWT ,

    攻略 2021年11月9日
  • google的数据分析用的什么(google analytics分析证书含金量)

    技术替代Google Analytics的轻量级分析工具是什么本篇文章给大家分享的是有关替代Google Analytics的轻量级分析工具是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收

    攻略 2021年12月16日
  • 恳求的拼音,请写出“乞求”的四个近义词

    技术恳求的拼音,请写出“乞求”的四个近义词乞求的近义词有恳求的拼音:请求、祈求、恳求、哀求、央求。【请求】拼音:qǐngqiú释义:1.以私事相求;走门路,通关节。
    2.指受人请托,收受贿赂之事。

    生活 2021年10月29日