"

齐发游戏app_官方网站拥有全球最顶尖的原生APP,每天为您提供千场精彩体育赛事,齐发游戏app_官方网站更有真人、彩票、电子老虎机、真人电子竞技游戏等多种娱乐方式选择,齐发游戏app_官方网站让您尽享娱乐、赛事投注等,且无后顾之忧!

  • <nav id="seiua"></nav>
  • <menu id="seiua"><strong id="seiua"></strong></menu>
  • "

    MySQL復制全解析 Part 8 MySQL Auto-Positioning

    小編:啊南 41閱讀 2020.11.20

    實驗環境

    此次實驗的環境如下

    • MySQL 5.7.25
    • Redhat 6.10
    • 操作系統賬號:mysql
    • 數據庫復制賬號:repl
    • 復制格式:基于行的復制

    IP地址

    主從關系

    復制賬號

    復制格式

    11.12.14.29

    主庫

    repl

    Row-Based

    11.12.14.30

    從庫(半同步)

    repl

    Row-Based

    11.12.14.31

    從庫(異步)

    repl

    Row-Based

    通過前面的介紹我們知道MySQL的復制有兩種方法

    • 基于二進制日志文件位置
    • 基于GTID

    上節內容為gtid_next和gtid_purged系統變

    這節的內容為Auto-Positioning

    1. 基于GTID的MySQL同步

    通過第二節的內容我們知道主庫和從庫之間的復制通過日志名和位置點進行同步

    如果啟用了GTID,則可以使用GTID來進行同步

    如果使用基于GTID的MySQL同步我們不需要在change master中使用MASTER_LOG_FILE?和MASTER_LOG_POS?參數,而是使用MASTER_AUTO_POSITION?選項,該選項默認是禁用的

    2. GTID Auto-Positioning

    當啟用了GTID功能(GTID_MODE=ON,?ON_PERMISSIVE,?或?OFF_PERMISSIVE),并且 MASTER_AUTO_POSITION被啟用則表示在從庫連接到主庫時auto-positioning功能被激活了,同樣的主庫的GTID功能必須開啟

    接下來我們來看下auto-positioning是如何工作的

    2.1 從庫發送其已有GTID

    在握手階段,從庫會向主庫發送已經提交過的以及接收過的GTID集合

    已經提交過的通過查詢gtid_executed變量得出

    已接收到的通過如下查詢得出

    SELECT RECEIVED_TRANSACTION_SET FROM PERFORMANCE_SCHEMA.replication_connection_status;
    2.2 主庫發送剩下的GTID事務

    之后主庫會向從庫發送其二進制日志文件中所有事件,不包括從庫發送過來的GTID的事務

    這樣就保證了主庫不會發送從庫已經擁有的GTID的事務

    如果是多源復制(多個主庫),則auto-skip會保證事務不會執行兩次

    以上就是MySQL的Auto-Positioning功能

    3. 常見故障

    如果任何應該被發送到從庫的事務從二進制日志中清除了,或者在手動加入gtid_purged中了,則主庫會發送一個ER_MASTER_HAS_PURGED_REQUIRED_GTIDS?錯誤到從庫,這時復制不會被啟動

    這時可以禁用MASTER_AUTO_POSITION?選項之后重連,不過這時會出現數據丟失,建議有兩種方法解決

    • 從另外位置獲取該GTID事務
    • 使用最近的主庫備份重新還原從庫

    如果在交換期間,從庫接收到的事務在主庫上沒有,這時主庫會發送一個ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER錯誤,之后復制不會啟動

    該問題一般發生在主庫沒有設置sync_binlog=1,這時如果發生服務器宕機,可能會導致事務未記錄在二進制文件中,但是已經被傳輸到從庫了

    還有種錯誤就是主庫和從庫相同的GTID被分配了不同的事物,這時我們需要手動解決沖突或者將其中一個移出復制拓撲結構中


    關聯標簽:
    齐发游戏app_官方网站
  • <nav id="seiua"></nav>
  • <menu id="seiua"><strong id="seiua"></strong></menu>