全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性。它为维护特定的复制 拓扑结构下服务器的DBA们大幅度改善他们的工作状况提供了多种可能性。然而,你还应该明白当前实现的 一些局限。本博文是专门对在生产环境中启用GTID到底意味着什么进行讨论的一系列文章的第一部分。 这个手册非常到位地描述了如何才能切换到基于GTID的复制,我就不再鏊叙。 其基本步骤如下所示:
这个步骤会把你所有的服务器从普通复制切换到GTID复制。但是,如果你运行的是生产系统,你可能会想一 点一点启用GTID,这样一旦除了什么问题,也更容易进行回滚了。相关文档中有些条目写得不是很清楚。 比如:
为了找到这些问题的答案,先让我们创建一个比较简单的复制配置,其中有一个主机和两个从机,所有服务器 运行的都是MySQL 5.6,都未启用GTID。 首试:仅将其中的一个服务器配置为启用GTID让我们先停止2号从机的服务,修改配置后重启:
错误日志说明了为什么IO线程没有启动起来:
看来,很不幸的是,如果想要复制正常运行,gtid_mode必须在所有的服务器上都是ON或者都是OFF才行, 半半拉拉的绝对不行。 要是我们对主机进行重新配置会怎样?这次,1号从机的复制会停止运行:
这两个简单的试验回答了头两个问题:只有在所有的服务器中的gtid_mode具有相同的值时,复制才能正常运行, 因此,你应该对它们同时进行重启,而且最好是在将主机成为只读模式后进行。然而,“同时”的意思是“在同一个 binlog位置上”,所以你完全可以一个接一个对服务器进行重启。 |