MySQL GTID 系列之二

三.在线将GTID转化为传统模式

环境见上篇系列文章

关闭GTID,不用停止服务,不影响线上业务

3.1 关闭GTID复制,调整为传统复制

#SLVAE实例上停止复制
STOP SLAVE #SLVAE实例上查看复制的位置
SHOW SLAVE STATUS \G
# 查看 Master_Log_File 和 Read_Master_Log_Pos对应的值
binlog.000012:1821 #重新 CHANGE MASTER
CHANGE MASTER TO MASTER_AUTO_POSITION=0,
MASTER_LOG_FILE='binlog.000012',
MASTER_LOG_POS=1821; #开启SLAVE
START SLAVE;

3.2 所有服务器上设置GTID模式为 ON_PERMISSIVE

SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE;

3.3 所有服务器上设置GTID模式为 OFF_PERMISSIVE

SET @@GLOBAL.GTID_MODE=OFF_PERMISSIVE;

3.4 等待所有服务器上的变量@@GLOBAL.GTID_OWNED为空,它表示正在由线程执行的全局GTID集合

mysql> SELECT @@GLOBAL.GTID_OWNED;
+---------------------+
| @@GLOBAL.GTID_OWNED |
+---------------------+
| |
+---------------------+
1 row in set (0.00 sec)

3.5 等待所有SLAVE上都复制完成匿名事务。

3.6 所有服务器上关闭GTID.

SET @@GLOBAL.GTID_MODE=OFF;

3.7 修改配置文件,以便下次重启,配置也是生效的。

gtid_mode=OFF
enforce_gtid_consistency=OFF

四. 传统模式转换为GTID模式

MySQL5.7.6版本以后,支持在线修改GTID模式

4.1 所有服务器上设置ENFORCE_GTID_CONSISTENCY=WARN,使得所有事务允许违反GTID的一致性

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=WARN;

4.2 所有服务器上设置ENFORCE_GTID_CONSISTENCY=ON.确保所有事务不能违反GTID的一致性

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON;

4.3 所有服务器上设置GTID_MODE=OFF_PERMISSIVE

SET @@GLOBAL.GTID_MODE=OFF_PERMISSIVE;

4.4 所有服务器上设置GTID_MODE=ON_PERMISSIVE

SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE;

4.5 等待所有从库 ONGOING_ANONYMOUS_TRANSACTION_COUNT为0

SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

4.6 所有服务器上设置 GTID_MODE=ON,开启GTID

SET @@GLOBAL.GTID_MODE=ON;

4.7 修改配置文件,以便下次重启,配置也是生效的。

gtid_mode=ON
enforce_gtid_consistency=1

MySQL GTID (二)的更多相关文章

  1. MySQL GTID 错误处理汇总

    MySQL GTID是在传统的mysql主从复制的基础之上演化而来的产物,即通过UUID加上事务ID的方式来确保每一个事物的唯一性.这样的操作方式使得我们不再需要关心所谓的log_file和log_P ...

  2. MySQL GTID (一)

    MySQL GTID 系列之一 一.GTID相关概念 GTID:全局事务标识符,MySQL5.6版本开始在主从复制中推出的重量级特性. 每提交一个事务,当前执行线程都会拿到一个给定复制环境中唯一的GT ...

  3. MySQL优化二(连接优化和缓存优化)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  4. 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建

    从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...

  5. python/MySQL练习题(二)

    python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...

  6. Python/MySQL(二、表操作以及连接)

    Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...

  7. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  8. mysql进阶(二十八)MySQL GRANT REVOKE用法

    mysql进阶(二十八)MySQL GRANT REVOKE用法   MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...

  9. mysql进阶(二十七)数据库索引原理

    mysql进阶(二十七)数据库索引原理 前言   本文主要是阐述MySQL索引机制,主要是说明存储引擎Innodb.   第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础.    ...

随机推荐

  1. [转载]Java抽象类和接口的学习

    http://android.blog.51cto.com/268543/385282/ 抽象类 abstract class     包含抽象方法的类,叫抽象类.而抽象的概念就是抽象出共同属性:成员 ...

  2. BZOJ2223 [Coci 2009]PATULJCI

    求区间内个数大于rank的一个数 主席树求一下就好啦! /************************************************************** Problem: ...

  3. 005——php字符串中的处理函数(四)

    <?php /** * 字符串处理函数: * parse_url 解析URL.返回其组成部分 */ /* $url="http://www.lantianwang.com/admin/ ...

  4. SQLServer查看用户连接数

    SELECT login_name, ) user_count FROM Sys.dm_exec_requests dr WITH(nolock) RIGHT OUTER JOIN Sys.dm_ex ...

  5. jQuery的无new创建方法

    一般我们去写一个框架,会采用什么样的设计呢?比如设计一个jQuery框架,一般我们会创建一个函数对象 function jQuery(params){ //构造函数 }jQuery.prototype ...

  6. 『转』谷歌发布Windows版Chrome App Launcher

    据国外媒体报道,谷歌发布了Windows版Chrome App Launcher,Windows用户现在因此能够使用谷歌的许多网络应用,如Chrome浏览器.Gmail.Google Drive和Ch ...

  7. synchronized一个(二)

    今天遇到了一个关于synchronized的一个问题,关于其持有锁的问题.这个问题以前是有看过相关文章的,但是一直没有记录,今天大概记录一下当前的认知. 对于静态方法,synchronized的使用的 ...

  8. react拖拽(表格拖拽排序、普通拖拽排序以及树形拖拽排序)

    表格拖拽排序:组件地址:https://reactabular.js.org/#/drag-and-drop 拖动的排序是用React-DnD:React-DnD:http://react-dnd.g ...

  9. CH3201 Hankson的趣味题

    题意 3201 Hankson的趣味题 0x30「数学知识」例题 描述 Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson ...

  10. 优先队列底层实现是堆(heap)(操作系统进程调度)

    只有一个CPU的情况下,比如作业系统中的调度程序,当一个作业完成后,需要在所有等待调度的作业中选择一个优先级最高的作业来执行(删除),并且也可以添加一个新的作业到作业的优先队列中(插入). 插入操作 ...