bitsCN.com

全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性。它为维护特定的复制拓扑结构下服务器的DBA们大幅度改善他们的工作状况提供了多种可能性。然而,你还应该明白当前实现的一些局限。本博文是专门对在生产环境中启用GTID到底意味着什么进行讨论的一系列文章的第一部分。

这个手册非常到位地描述了如何才能切换到基于GTID的复制,我就不再鏊叙。

其基本步骤如下所示:让主机成为只读模式,这样就可以让从机执行所有的时间从而同主机保持为同步状态。

修改所有服务器的配置并对它们进行重启

使用CHANGE MASTER TO,让所有的服务器使用GTID

关闭主机的只读模式

这个步骤会把你所有的服务器从普通复制切换到GTID复制。但是,如果你运行的是生产系统,你可能会想一点一点启用GTID,这样一旦除了什么问题,也更容易进行回滚了。相关文档中有些条目写得不是很清楚。

比如:我们真地需要同时重启所有的服务器吗? 停机时间可是我们千方百计要避免的事情!

有必要让主机变成只读模式吗?

我们能不能在有些从机中使用普通复制的同时,在另外的一些从机上使用GTID复制?

为了找到这些问题的答案,先让我们创建一个比较简单的复制配置,其中有一个主机和两个从机,所有服务器运行的都是MySQL 5.6,都未启用GTID。

首试:仅将其中的一个服务器配置为启用GTID

让我们先停止2号从机的服务,修改配置后重启:1mysql> show slave status/G2[...]3Slave_IO_Running: No4Slave_SQL_Running: Yes5 [...]错误日志说明了为什么IO线程没有启动起来:12013-05-17 13:21:26 3130 [ERROR] Slave I/O: The slave IO thread stops because the master has GTID_MODE OFF and this server has GTID_MODE ON, Error_code: 1593

看来,很不幸的是,如果想要复制正常运行,gtid_mode必须在所有的服务器上都是ON或者都是OFF才行, 半半拉拉的绝对不行。

要是我们对主机进行重新配置会怎样?这次,1号从机的复制会停止运行:12013-05-17 13:32:08 2563 [ERROR] Slave I/O: The slave IO thread stops because the master has GTID_MODE ON and this server has GTID_MODE OFF, Error_code: 1593

这两个简单的试验回答了头两个问题:只有在所有的服务器中的gtid_mode具有相同的值时,复制才能正常运行,因此,你应该对它们同时进行重启,而且最好是在将主机成为只读模式后进行。然而,“同时”的意思是“在同一个binlog位置上”,所以你完全可以一个接一个对服务器进行重启。

再试:启用GTID,混合使用普通复制和GTID复制

这次我们在1号从机而不是2号从机上启用GTID:1# slave #12mysql> change master to master_auto_position = 1;3mysql> start slave;接下来让我们在主机上创建一个新表:

1mysql> create table test.t (id int not null auto_increment primary key);

在两个从机上都运行SHOW TABLES FROM test表明,所有的服务器都创建了这个新表。因此,一旦在所有的服务器上启用GTID,你就可以让某些从机使用基于文件的定位而让另外一些从机使用基于GTID的定位。

这就回答了第二个问题:我们可以让不同的服务器具有不同的复制模式,但所有的服务器必须将将gtid_mode设置为ON。在gtid_mode为ON的情况下还运行基于文件的复制,这能有什么意思?我还没有发现这有什么用处,所以在实践中,你可能会要么只用基于文件的复制在(所有服务器都设置为gtid_mode=off),要么只用基于GTID的复制(所有服务器都设置为gtid_mode=on)。

还有一个问题:如何通过查看SHOW SLAVE STATUS的输出才能看出来一个从机是不是基于GTID的复制?这可以通过查看最后一个字段,Auto_Position,的值进行区分:1# Slave #12mysql> show slave status/G3[...]4Auto_Position: 1 -> GTID-based positioning5# Slave #26mysql> show slave status/G7[...]8Auto_Position: 0 -> File-based positioning

结束语

如果你的应用轻易不能容忍停机时间或者只读模式,那么基于GTID的复制启用起来就会非常棘手,特别在需要重新配置大量服务器的情况下,便更是如此了。要是能将gtid_mode为ON的服务器同gtid_mode为OFF的服务器混合使用就好了,因为这样的话,就就能够简化转向基于GTID的复制的所需的过程,如果出了错还更容易进行回滚。

mysql5.6 优点_MySQL5.6复制:GTID的优点和限制(第一部分)_MySQL相关推荐

  1. mysql5.7主从复制--在线变更复制类型【转】

    这里说一下关于如何在线变更复制类型(日志复制到全局事物复制),参考课程:mysql5.7复制实战 先决条件     (1)集群中所有的服务器版本均高于5.7.6 (2)集群中所有的服务器gtid_mo ...

  2. mysql gtid 搭建主从_MySQL5.7 - 基于GTID复制模式搭建主从复制

    MySQL5.7 - 基于GTID复制模式搭建主从复制 发布时间:2020-04-17 10:09:20 来源:51CTO 阅读:226 作者:insist_way 环境: MySQL5.7.24版本 ...

  3. mysql gitd 数据结构同步失败_Mysql5.7版本Gtid复制出现不同步的情况

    Mysql5.7版本,Gtid复制出现不同步的情况: 问题:由于shell检测Mysql从库状态 : Slave_IO_Running: Yes Slave_SQL_Running: Yes 一直都为 ...

  4. Centos mysql5.7 主从复制 之 无损复制,增强版的半同步复制 ( lossless replication )单向同步

    mysql 有四种同步方式: 1.异步复制( asynchronous replication) 原理:在异步复制中,master写数据到binlog且sync,slave request binlo ...

  5. mysql 5.6 gtid 主从_MySQL5.6基于GTID的主从复制

    一.GTID简介 MySQL 5.6 的新特性之一,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力. 什么是GTID? 官方文档:http://dev.mysq ...

  6. mysql5.6下主主复制的配置实现

    两台虚拟机192.168.183.131和192.168.183.132,装完系统之后直接把所有开发包都装上 下载软件包mysql-5.6.10.tar.gz,cmake-2.8.10.2.tar.g ...

  7. mysql5.6编译_mysql5.6编译安装

    MySQL 从5.5开始改用cmake来编译源码,本例为编译源码安装 mysql : # 添加 Mysql 帐号 useradd mysql -s /sbin/nologin #创建文件夹 mkdir ...

  8. mysql-5.6.x半同步复制配置

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1764324 本文环境 ...

  9. mysql5.7 xtrabackup_MySQL 5.7 基于GTID建立运行主库的从库-xtrabackup+mysqldump

    一.GTID innobackupex备份实现主从同步 1)master备份 innobackupex --defaults-file=/etc/my.cnf --user=root --passwo ...

最新文章

  1. 【微服务架构】SpringCloud之路由网关(zuul)
  2. Spring 事务失效?看这篇文章就够了!
  3. python增删改查的框架_python的Web框架,Django的ORM,模型基础,MySQL连接配置及增删改查...
  4. web项目错误页面友好处理404,500等
  5. e.getMessage 为空NULL
  6. DataReceivedEventHandler 委托 接收调用执行进程返回数据
  7. BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)
  8. opencv的android.mk,android-opencv 版本下JNI Android.mk文件的书写
  9. 推算周期软件有哪些,推算周期软件怎么用
  10. 简单就是美,桌面管理Fences分享
  11. excel合并工作簿怎么做?
  12. Road_slam论文阅读及理解
  13. python竖线_6.1. re模块搜索时要注意竖线|的使用
  14. 计算机中mu的作用是什么,计算机上M+ M- MU GT等分别代表意思.doc
  15. Ipad上选择专业好用的思维导图软件
  16. 《剑指Offer》题解与笔记(Java实现)
  17. 面试笔记(51信用卡-Java开发实习)
  18. 申宝股票-股指超跌反弹
  19. php zitian虚拟主机配置_虚拟主机租用应注意些什么?
  20. 商品交易和风险管理软件市场现状、市场份额、市场规模及未来发展趋势

热门文章

  1. 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
  2. php 怎么循环数组取有值的,php怎么循环数组取有值的-PHP问题
  3. 学术英语:关于such as, for example, etc., and so on, i.e., 和e.g.的使用
  4. 第十二届蓝桥杯省赛A组试题:左儿子右兄弟Java
  5. 计算机二级web题目(6)--动态网页技术概述
  6. C++中使用cin读取一组词存入vector后将其大写打印
  7. 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。...
  8. 支付宝H5 与网页端支付开发
  9. linux下如何安装配置redis及主从配置
  10. Python练习-从小就背不下来的99乘法表