目錄
首试:仅将其中的一个服务器配置为启用GTID
再试:启用GTID,混合使用普通复制和GTID复制
结束语
首頁 資料庫 mysql教程 MySQL 5.6 复制:GTID 的优点和限制(第一部分)_MySQL

MySQL 5.6 复制:GTID 的优点和限制(第一部分)_MySQL

Jun 01, 2016 pm 01:34 PM
可能性 伺服器

bitsCN.com

 

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

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

其基本步骤如下所示:

  • 让主机成为只读模式,这样就可以让从机执行所有的时间从而同主机保持为同步状态。
  • 修改所有服务器的配置并对它们进行重启
  • 使用CHANGE MASTER TO,让所有的服务器使用GTID
  • 关闭主机的只读模式

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

比如:

  • 我们真地需要同时重启所有的服务器吗? 停机时间可是我们千方百计要避免的事情!
  • 有必要让主机变成只读模式吗?
  • 我们能不能在有些从机中使用普通复制的同时,在另外的一些从机上使用GTID复制?

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

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

让我们先停止2号从机的服务,修改配置后重启:

1 mysql> show slave status/G 2 [...] 3 Slave_IO_Running: No 4 Slave_SQL_Running: Yes 5           [...] 错误日志说明了为什么IO线程没有启动起来: 1 2013-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号从机的复制会停止运行:

1 2013-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 #1 2 mysql> change master to master_auto_position = 1; 3 mysql> start slave; 接下来让我们在主机上创建一个新表: 
1 mysql> 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 #1 2 mysql> show slave status/G 3 [...] 4 Auto_Position: 1  -> GTID-based positioning 5 # Slave #2 6 mysql> show slave status/G 7 [...] 8 Auto_Position: 0  -> File-based positioning

结束语

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

原文地址:http://www.mysqlperformanceblog.com/2013/05/21/replication-in-mysql-5-6-gtids-benefits-and-limitations-part-1/

bitsCN.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

電驢搜尋連不上伺服器如何解決 電驢搜尋連不上伺服器如何解決 Jan 25, 2024 pm 02:45 PM

電驢搜尋連不上伺服器如何解決

CentOS安裝fuse及CentOS安裝伺服器詳解 CentOS安裝fuse及CentOS安裝伺服器詳解 Feb 13, 2024 pm 08:40 PM

CentOS安裝fuse及CentOS安裝伺服器詳解

無法連接到RPC伺服器導致無法進入桌面的解決方法 無法連接到RPC伺服器導致無法進入桌面的解決方法 Feb 18, 2024 am 10:34 AM

無法連接到RPC伺服器導致無法進入桌面的解決方法

用PHP建構IP代理伺服器的最佳實務指南 用PHP建構IP代理伺服器的最佳實務指南 Mar 11, 2024 am 08:36 AM

用PHP建構IP代理伺服器的最佳實務指南

如何將Dnsmasq設定為DHCP中繼伺服器 如何將Dnsmasq設定為DHCP中繼伺服器 Mar 21, 2024 am 08:50 AM

如何將Dnsmasq設定為DHCP中繼伺服器

如何開啟TFTP伺服器 如何開啟TFTP伺服器 Oct 18, 2023 am 10:18 AM

如何開啟TFTP伺服器

epic伺服器離線進不了遊戲怎麼辦? epic離線進不了遊戲解決方法 epic伺服器離線進不了遊戲怎麼辦? epic離線進不了遊戲解決方法 Mar 13, 2024 pm 04:40 PM

epic伺服器離線進不了遊戲怎麼辦? epic離線進不了遊戲解決方法

如何在伺服器上安裝 PHP FFmpeg 擴充功能? 如何在伺服器上安裝 PHP FFmpeg 擴充功能? Mar 28, 2024 pm 02:39 PM

如何在伺服器上安裝 PHP FFmpeg 擴充功能?

See all articles