【MySQL】MySQL5.7传统复制切换为GTID复制

赞赏支持

【MySQL】MySQL5.7传统复制切换为GTID复制

前言:最近还是在做MariaDB10.1.12升级为MySQL5.7的升级方案,其中有一个环节涉及到传统复制到GTID复制的在线切换,本文就介绍下如何是现在线切换。

一、参数解析

下面对GTID_MODE变量如下解释:

解释
OFF 新事务是非GTID, Slave只接受不带GTID的事务,传送来GTID的事务会报错
OFF_PERMISSIVE 新事务是非GTID, Slave即接受不带GTID的事务也接受带GTID的事务
ON_PERMISSIVE 新事务是GTID, Slave即接受不带GTID的事务也接受带GTID的事务
ON 新事务是GTID, Slave只接受带GTID的事务

我们在更改GTID_MODE时不可直接跳跃更改,否则会提示报错

[email protected] [xucl]>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.

二、在线更改

1.将enforce_gtid_consistency设置为WARNING,主库从库都要设置,无先后顺序。

set @@global.enforce_gtid_consistency=warn;

注意:执行完这条语句后,如果出现GTID不兼容的语句用法,在错误日志会记录相关信息,那么需要调整应该程序避免不兼容的写法,直到完全没有产生不兼容的语句,可以通过应用程序去排查所有的sql,也可以设置后观察错误日志一段时间,建议观察过,这一步非常重要。

2.将ENFORCE_GTID_CONSISTENCY设置为ON,主库从库都要设置,无先后顺序。

set @@global.enforce_gtid_consistency=on;

3.设置GTID_MODE为off_permissiv,主库从库都要设置,无先后顺序。

SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

4.设置GTID_MODE为on_permissiv,主库从库都要设置,无先后顺序。

SET @@GLOBAL.GTID_MODE = on_permissive;

5.主从检查变量ONGOING_ANONYMOUS_TRANSACTION_COUNT

SHOW STATUS LIKE ‘ONGOING_ANONYMOUS_TRANSACTION_COUNT‘;

需要等到该变量为0

6.确保所有的匿名事务(非GTID事务)已经被完全复制到所有的server上。
主库

show master status;

从库

show slave status\G

确保事务在从库都会放完毕
或者:

SELECT MASTER_POS_WAIT(‘mysql-bin.00000x‘, xxx);

7.确认整个拓扑结构中已经没有匿名事务的存在,如之前产生的所有匿名事务已经全部被执行完毕,甚至二进制日志中也不要有匿名事务,可以通过flush logs,并让mysql来自动清理旧的二进制日志文件。

8.设置GLOBAL.GTID_MODE为ON,主库从库都要设置,无先后顺序。

SET @@GLOBAL.GTID_MODE = ON;

9.my.cnf增加GTID_MODE = ON;

至此,GTID复制在线切换完成。

原文地址:https://www.cnblogs.com/yangyongchao/p/12335221.html

时间: 2024-08-14 16:13:17

【MySQL】MySQL5.7传统复制切换为GTID复制的相关文章

切换-5.7-传统复制切换成GTID复制

1.基本环境:   Master Slave MySQL版本 MySQL-5.7.16-X86_64 MySQL-5.7.16-X86_64 IP 192.168.56.156 192.168.56.157 Port 3306 3306 2.在线切换 1.master和slave执行 mysql>set @@global.enforce_gtid_consistency = warn; mysql>set @@global.enforce_gtid_consistency = on; mysq

mysql 5.6 的新特性:GTID 复制

mysql 5.6 的新特性: MySQL 5.6 包含了一个复制的新功能,enabling DevOps teams to reliably scale-out their MySQL infrastructure across commodity hardware, rel="nofollow">Global Transaction Identifiers (GTIDs)功能, 为了解决以下问题: -能够无缝的故障恢复和master与slave的切换 -能把slave指向新的

MySQL5.7不停业务将传统复制变更为GTID复制

由于GTID的优势,我们需要将传统基于file-pos的复制更改为基于GTID的复制,如何在线变更成为我们关心的一个点,如下为具体的方法: 目前我们有一个传统复制下的M-S结构: port 3301 master port 3302 slave master上(3301): [zejin] 3301>select * from t_users; +----+------+ | id | name | +----+------+ | 1 | hao | | 2 | zhou | +----+---

与MySQL传统复制相比,GTID有哪些独特的复制姿势

前言 GTID(Global Transaction ID)是MySQL5.6引入的功能,可以在集群全局范围标识事务,用于取代过去通过binlog文件偏移量定位复制位置的传统方式.借助GTID,在发生主备切换的情况下,MySQL的其它Slave可以自动在新主上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的维护,也减少了人为设置复制位置发生误操作的风险.另外,基于GTID的复制可以忽略已经执行过的事务,减少了数据发生不一致的风险. GTID虽好,要想运用自如还需充分了解其原理与特性,特别要注

(5.8)mysql高可用系列——MySQL中的GTID复制(实践篇)

目录: [0]概念 一.基于GTID的异步复制(一主一从)无数据/少数据搭建 [1]环境 [2]安装 mysql utilities(本文借助该工具进行安装) [3]开始配置 #[3.1]在主库上 准备复制账户 #[3.2]参数配置(主从都配)#[3.3]重启两台mysql#[3.4]主库上查看binlog#[3.5.1]使用mysqlreplicate(mysql utilities工具)命令配置#[3.5.2]使用传统方式配置#[3.6]主从数据测试(在主库上跑) [4]我的其他文章 [4.

mysql之 MySQL 主从基于 GTID 复制原理概述

一. 什么是GTID ( Global transaction identifiers ):MySQL-5.6.2开始支持,MySQL-5.6.10后完善,GTID 分成两部分,一部分是服务的UUid,UUID保存在mysql数据目录的auto.cnf文件中,这是一个非常重要的文件,不能删除,这一部分是不会变的.另外一部分就是事务ID了,随着事务的增加,值一次递增,如下图+---------------+----------+--------------+------------------+-

MySQL5.7 开启GTID复制模式终于不用开启log_slave_updates参数了

MySQL5.6的GTID复制模式,必须开启log_slave_updates参数,否则启动就报错,因为需要在binlog找到同步复制的信息(UUID:事务号),如果在密集型写的环境,比如双十一大促在线支付,这无疑增加了从库不必要的磁盘IO开销. (注:开启log_slave_updates参数,是把relay-log里的日志内容再记录到slave本地的binlog里.) 但在MySQL5.7里,官方终于做了调整,用一张gtid_executed系统表记录同步复制的信息(UUID:事务号),这样

Mysql主从复制、二进制日志、基于GTID的主从复制、双主复制

 一.主从复制的工作原理   Mysql在Master与slave之间实现整个复制的过程由3个线程来完成的,   其中两个线程(SQL线程和IO线程)在 Slave端,   另外一个线程(IO)在Master端   要实现Mysql的复制必须首先打开Master端的binary log(也就是二进制日志)否则无法实现. Mysql复制基本过程如下:   (1)Slave上面的IO 线程链接上Master,并且请求指定日志文件的位置(或者 从开始的日志之后的日志内容)   (2)Master接收到

深入MySQL复制(二):基于GTID复制

相比传统的MySQL复制,gtid复制无论是配置还是维护都要轻松的多.本文对gtid复制稍作介绍. MySQL基于GTID复制官方手册:https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html 1.gtid基本概念 传统的基于binlog position复制的方式有个严重的缺点:如果slave连接master时指定的binlog文件错误或者position错误,会造成遗漏或者重复,很多时候前后数据是有依赖性的,这样就会出错而导