溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Mysql中基于GTID的復(fù)制模式是什么

發(fā)布時(shí)間:2020-12-28 12:48:08 來(lái)源:億速云 閱讀:221 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章主要介紹了Mysql中基于GTID的復(fù)制模式是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

GTID定義

GTID( Global Transaction Identifier)全局事務(wù)標(biāo)識(shí)。GTID是5.6 版本引入的一個(gè)有關(guān)于主從復(fù)制的重大改進(jìn),相對(duì)于之前版本基于Binlog文件+Position的主從復(fù)制,基于GTID的主從復(fù)制,數(shù)據(jù)一致性更高,主從數(shù)據(jù)復(fù)制更健壯,主從切換、故障切換不易出錯(cuò),很少需要人為介入處理。

表示方式

GTID = server_uuid:transaction_id
其GTID通常會(huì)記錄在MySQL的系統(tǒng)變量@@GLOBAL.gtid_executed 以及系統(tǒng)表mysql.gtid_executed中,系統(tǒng)變量@@GLOBAL.gtid_executed 在內(nèi)存中,屬于非持久化存儲(chǔ),而系統(tǒng)表mysql.gtid_executed屬于持久化存儲(chǔ)。

GTID比傳統(tǒng)復(fù)制的優(yōu)勢(shì)

  1. 更簡(jiǎn)單的搭建主從復(fù)制

  2. 更簡(jiǎn)單的實(shí)現(xiàn)failover (主從切換),不用以前那樣一步一步的去找log_filelog_pos

  3. GTID是連續(xù)的沒(méi)有空洞的,保證數(shù)據(jù)的一致性,零丟失。

  4. 復(fù)制集群有一個(gè)統(tǒng)一的方式識(shí)別復(fù)制位置,給集群管理帶來(lái)了便利

GTID的限制

  1. 在一個(gè)事務(wù)里面混合使用引擎如Innodb,myisam,造成多個(gè)GTIDS

  2. CREATE TABLE…..SELECT 不能使用

  3. CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE 不能在事務(wù)內(nèi)使用

主從復(fù)制流程圖

Mysql中基于GTID的復(fù)制模式是什么
Mysql中基于GTID的復(fù)制模式是什么

GTID生命周期

  1. 當(dāng)一個(gè)事務(wù)在一個(gè)主庫(kù)上被執(zhí)行和提交,那么這個(gè)事務(wù)就會(huì)被分配一個(gè)和該主庫(kù)uuid相關(guān)聯(lián)的gtid,這個(gè)gtid被寫(xiě)入到主庫(kù)的binlog文件中。

  2. 當(dāng)這個(gè)binlog文件達(dá)到最大值發(fā)生輪轉(zhuǎn),或者M(jìn)ySQL Server關(guān)閉時(shí),上一個(gè)binlog文件中的事務(wù)GTID將會(huì)被寫(xiě)入到mysql.gtid_executed表中。

  3. 事務(wù)提交時(shí),該事務(wù)的gtid會(huì)很快的添加到系統(tǒng)變量@@GLOBAL.gtid_executed,但是系統(tǒng)表 mysql.gtid_executed 則不會(huì),應(yīng)為有部分gtid還在binlog中,需要等到binlog輪轉(zhuǎn)或者mysqlServer關(guān)閉時(shí)才會(huì)寫(xiě)入到mysql。gtid_executed表中.

  4. 主庫(kù)上的binlog通過(guò)主從復(fù)制協(xié)議傳送到從庫(kù),并寫(xiě)入到從庫(kù)的relay log(中繼日志), 從庫(kù)讀取relay log中的gtid和對(duì)應(yīng)的事務(wù)信息,把gtid_next設(shè)置為該gtid值,使得從庫(kù)使用該gtid值應(yīng)用其對(duì)應(yīng)的事務(wù)

  5. 如果多個(gè)線程并發(fā)應(yīng)用同一個(gè)事務(wù),比如多個(gè)線程設(shè)置gtid_next為同一個(gè)值,MySQL Server 只允許其中一個(gè)線程執(zhí)行,gtid_owned系統(tǒng)變量記錄著誰(shuí)擁有該GTID.

傳統(tǒng)更換GTID復(fù)制模式

  1. 配置GTID

  2. 所有服務(wù)器設(shè)置global.read_only參數(shù),等待主從服務(wù)器同步完畢;

    mysql> SET @@global.read_only = ON;
  3. 依次重啟主從服務(wù)器;

  4. 使用change master 更新主從配置;

    mysql> CHANGE MASTER TO
    MASTER_HOST = host,
    MASTER_PORT = port,
    MASTER_USER = user,
    MASTER_PASSWORD = password,
    MASTER_AUTO_POSITION = 1;

    5、開(kāi)啟復(fù)制

    mysql> START SLAVE;

    6、驗(yàn)證主從復(fù)制

    mysql> show slave status \G

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Mysql中基于GTID的復(fù)制模式是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI