首页 > 数据库 >mysql在线将传统复制模式改为GTID复制模式

mysql在线将传统复制模式改为GTID复制模式

时间:2023-04-18 14:22:36浏览次数:42  
标签:事务 模式 匿名 复制 MODE mysql 服务器 从库 GTID

gtid_mode参数各个值的含义:
OFF:生成的是匿名事务,从库只能应用匿名事务
OFF_PERMISSIVE:生成的是匿名事务,从库可以应用匿名事务和GTID事务
ON_PERMISSIVE:生成的是GTID事务,从库可以应用匿名事务和GTID事务
ON:生成的是GTID事务,从库只能应用GTID事务

一、在线开启GTID,需要满足两个条件

1、复制拓扑结构中,所有的数据库版本必须大于等于5.7.6

2、 gtid_mode必须设置为OFF

二、在线开启GTID

1、在每一台服务器上设置ENFORCE_GTID_CONSISTENCY=WARN,设置后,所有事务都允许违反GTID的一致性;

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;

开启这个选项时候,让服务器在正常负载下运行一段时间,观察err log,如果有发现任何warning,需要通知应用进行调整,直到不出现warning。

2、在每一台服务器上设置ENFORCE_GTID_CONSISTENCY=ON,确保所有的事务都不能违反GTID的一致性;


SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;

这一步一旦执行,违反GTID的操作都将被拒绝,比如create table as select 操作。

3、在每一台服务器上设置GTID_MODE=OFF_PERMISSIVE,表示新的事务是匿名的,同时允许复制的事务是GTID或是匿名的;


SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

注意:哪个服务器首先执行此语句并不重要,但重要的是所有服务器在任何服务器开始下一个步骤之前完成此步骤。

4、在每一台服务器上设置GTID_MODE=ON_PERMISSIVE,表示新的事务使用GTID,同时允许复制的事务是GTID或是匿名的;

SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE;

注意:需要确保这一步操作在所有的服务器上都执行。

5、等待ONGOING_ANONYMOUS_TRANSACTION_COUNT状态值为0,表示已标记为匿名的正在进行的事务数量,如果状态值为0表示无事务等待被处理;


SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

注意:在所有从库上查询该状态,必须要为0才能进行下一步。
多观察一段时间,确认这个统计值Ongoing_anonymous_transaction_count为0,如果不为0,强行修改可能导致数据丢失,然后确认从库Retrieved_Gtid_Set和Executed_Gtid_Set正常增长

Note
On a replica, it is theoretically possible that this shows zero and then nonzero again. This is not a problem, it suffices that it shows zero once.

6、等待在步骤5之前生成的所有事务复制到所有服务器。您可以在不停止更新的情况下完成此操作:唯一重要的是所有匿名事务都被复制完成。

7、如果你需要用binlog来实现一个闪回操作,需要确保你已经不需要那些不包含GTID的binlog了,否则需要等那些binlog过期,才可以进行下一步操作

8、在每一台服务器上设置GTID_MODE=ON,表示在所有服务器上开启GTID;


SET @@GLOBAL.GTID_MODE=ON;

注意:需要在所有的实例上执行。

9、修改my.cnf的配置;

enforce_gtid_consistency=1
gtid_mode=ON

10、将复制模式从基于binlog位置调整为基于GTID模式.


STOP SLAVE;
CHANGE MASTER TO MASTER_AUTO_POSITION=1;
START SLAVE;

标签:事务,模式,匿名,复制,MODE,mysql,服务器,从库,GTID
From: https://www.cnblogs.com/whiteY/p/17329383.html

相关文章

  • #### Mysql 基础
    MySQL数据库知识基本概念MySQL搭建SQL语句编写约束索引事务锁机制设计数据库表性能优化学习建议其中,SQL语句编写和设计数据库表这两个能力一定要有!比如让你做一个学生管理系统,你要能想到需要哪些表,比如学生表、班级表;每个表需要哪些字段、字......
  • MySQL 执行计划分析
    一、获取方法与阅读顺序1. 获取方法注意这个执行计划只是预估的explainsql语句--或者descsql语句2.阅读顺序id值相同:从上往下顺序执行(下图为tc->c->t)一般越小或者返回值越少的表会越先被执行,这样才能保证后面关联时外层查询结果尽量小,内层查询被循环次数少id值不同:越大......
  • Ubuntu下安装及配置MySQL
    与在centos下安装相比多很多坑,不建议用。 一、软件安装Ubuntu下有两种常用方式apt-get方式(类似于yum)deb包方式安装(类似于rpm包)1.下载并解压软件下载地址:http://dev.mysql.com/downloads/mysql/这个tar包里包含mysql软件所有deb软件包创建安装目录:mkdir/usr/local/mysql将.tar文......
  • Mysql数据库-DQL操作
    DQL是数据查询语言(DataQueryLanguage)的缩写,是一种用于从数据库中检索数据的编程语言。DQL是SQL(结构化查询语言)的子集,用于查询关系型数据库,例如MySQL、Oracle和SQLServer等。DQL提供了多种查询操作,如SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY等。使用这些操作,可以根据......
  • pg主从复制(一)——流复制机制
    PostgreSQL9.1之前,主从复制传输以WAL日志文件为单位,主库写完一个WAL日志文件后才传送到备库,这种方式导致主备延迟特别大。9.1引入了主备流复制,传输单位是WAL日志的record,备库不断从主库同步相应的数据,并apply每个WALrecord,因此9.1能够做到同步复制。同时9.1提供了HotStandby,备库......
  • MySQL并行导入导出工具——mysqlpump
    一、 mysqlpump简介mysql官方从5.7开始推出了mysqlpump工具,它和mysqldump一样属于逻辑备份。1.优点基于表并行备份数据库和数据库中对象,加快备份过程。(--default-parallelism)更好地控制数据库和数据库对象(表,存储过程,用户帐户)的备份。备份用户账号作为帐户管理语句(CREATEUSER,GRAN......
  • mysql锁及锁出现总结
    转载请注明出处:1.按锁粒度分类:行锁:锁某行数据,锁粒度最小,并发度高;;行锁是指加锁的时候锁住的是表的某一行或多行记录,多个事务访问同一张表时,只有被锁住的记录不能访问,其他的记录可正常访问;行锁是对所有行级别锁的一个统称,比如下面说的记录锁、间隙锁、临键锁都是属于行锁表锁:锁整张......
  • 多通道振弦传感器无线采集仪工作模式与工作流程
    河北稳控科技多通道振弦传感器无线采集仪工作模式与工作流程 工作模式VS系列采发仪有两种工作模式,正常工作模式和参数设置模式。正常工作模式:也称“采发模式”,设备启动后自动完成传感器数据采集和发送工作,然后关机,等待下次定时时间。参数设置模式:可对设备工作参数进行访问......
  • 15天玩转redis —— 第十篇 对快照模式的深入分析
       我们知道redis是带有持久化这个能力了,那到底持久化成到哪里,持久化成啥样呢???这篇我们一起来寻求答案。 一:快照模式或许在用Redis之初的时候,就听说过redis有两种持久化模式,第一种是SNAPSHOTTING模式,还是一种是AOF模式,而且在实战场景下用的最多的莫过于SNAPSHOTT......
  • 《3D编程模式》写书-第4次记录
    大家好,这段时间我完成了“再看设计原则”的初稿,包括了设计基础、单一职责原则、依赖倒置原则、接口隔离原则、合成复用原则、最少知识原则、开闭原则目前我已经完成了所有的初稿,后面会进行第二轮的修改,将初稿改为二稿目前暂定删除“提出新的设计原则”的内容感谢大家的支持!......