首頁  >  文章  >  資料庫  >  了解 Mysql基於GTID的複製模式

了解 Mysql基於GTID的複製模式

coldplay.xixi
coldplay.xixi轉載
2020-12-28 10:12:212293瀏覽

mysql教學欄位介紹Mysql基於GTID的複製模式是什麼

了解 Mysql基於GTID的複製模式

推薦(免費):mysql教學

#GTID定義

GTID ( Global Transaction Identifier)全域事務識別。 GTID是5.6 版本引入的一個有關於主從複製的重大改進,相對於先前版本基於Binlog檔案Position的主從複製,基於GTID的主從複製,資料一致性更高,主從資料複製更健壯,主從切換、故障切換不易出錯,很少需要人為介入處理。

表示方式

GTID = server_uuid:transaction_id
其GTID通常會記錄在MySQL的系統變數@@GLOBAL .gtid_executed 以及系統表mysql.gtid_executed中,系統變數@@GLOBAL.gtid_executed 在記憶體中,屬於非持久化存儲,而係統表mysql.gtid_executed屬於持久化儲存。

GTID比傳統複製的優勢

  1. #更簡單的搭建主從複製
  2. 更簡單的實現failover (主從切換),不用以前那樣一步一步的去找log_filelog_pos
  3. GTID是連續的沒有空洞的,保證資料的一致性,零丟失。
  4. 複製叢集有一個統一的方式識別複製位置,為叢集管理帶來了便利

GTID的限制

  1. #在一個交易裡面混合使用引擎如Innodb,myisam,造成多個GTIDS
  2. CREATE TABLE…..SELECT# 不能使用
  3. #CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE 不能在交易內使用

##主從複製流程圖


GTID生命週期

    當一個交易在一個主庫上被執行和提交,那麼這個事務就會被指派一個和該主函式庫uuid相關聯的gtid,這個gtid被寫入到主函式庫的binlog檔中。
  1. 當這個binlog檔案達到最大值發生輪轉,或是MySQL Server關閉時,上一個binlog檔案中的事務GTID將會被寫入到
  2. mysql.gtid_executed表中。
  3. 交易提交時,該交易的gtid會很快的加入到系統變數
  4. @@GLOBAL.gtid_executed,但是係統表mysql.gtid_executed 則不會,應為有部分gtid還在binlog中,要等到binlog輪轉或mysqlServer關閉時才會寫入到mysql。 gtid_executed表中.
  5. 主庫上的binlog透過主從複製協定傳送到從庫,並寫入到從庫的relay log(中繼日誌), 從庫讀取relay log中的gtid和對應的事務訊息,把
  6. gtid_next設定為該gtid值,使得從庫使用該gtid值應用其對應的事務
  7. 如果多個執行緒並發應用同一個事務,例如多個執行緒設定gtid_next為同一個值,MySQL Server 只允許其中一個執行緒執行,
  8. gtid_owned系統變數記錄誰擁有該GTID.

傳統更換GTID複製模式

    設定GTID
  1. #所有伺服器設定
  2. global.read_only參數,等待主從伺服器同步完成;<pre class="brush:php;toolbar:false">mysql&gt; SET @@global.read_only = ON;</pre>
  3. 依序重啟主從伺服器;
  4. 使用change master 更新主從設定;
    mysql> CHANGE MASTER TO
    MASTER_HOST = host,
    MASTER_PORT = port,
    MASTER_USER = user,
    MASTER_PASSWORD = password,
    MASTER_AUTO_POSITION = 1;
    5、開啟複製
    mysql> START SLAVE;
    6、驗證主從複製
    mysql> show slave status \G

以上是了解 Mysql基於GTID的複製模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除