中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL怎么開啟或禁用GTID模式

發布時間:2021-11-29 09:05:25 來源:億速云 閱讀:678 作者:iii 欄目:開發技術

這篇文章主要講解了“MySQL怎么開啟或禁用GTID模式”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL怎么開啟或禁用GTID模式”吧!

    基本概述

    我們知道MySQL有2種方式指定復制同步的方式,分別為:

    • 基于binlog文件名及位點的指定方式

    - 匿名事務(Anonymous_gtid_log_event)

    • 基于GTID(全局事務ID)的指定方式

    - GTID事務(Gtid_log_event)

    而基于GTID的方式一方面在一主多從的架構下主從切換有著明顯優勢外,對于日常復制異常的故障診斷方面也更為方便,從MySQL 5.7.6之后便開始支持動態開啟和關閉GTID模式,其參數GTID_MODE有以下取值

    • OFF - 只允許匿名事務被復制同步

    • OFF_PERMISSIVE - 新產生的事務都是匿名事務,但也允許有GTID事務被復制同步

    • ON_PERMISSIVE - 新產生的都是GTID事務,但也允許有匿名事務被復制同步

    • ON - 只允許GTID事務被復制同步

    在線開啟GTID

    1. 設置GTID校驗ENFORCE_GTID_CONSISTENCY為WARN

    該操作的目的是允許在主庫執行的SQL語句違反GTID一致性校驗,且只在主庫的錯誤日志中輸出warning級別日志以作提醒,目的是為了考慮如果復制方式改為GTID模式后應用程序不會因為GTID的一些限制導致異常報錯,

    如:使用CREATE TABLE AS SELECT語法在GTID模式下不支持,而ENFORCE_GTID_CONSISTENCY設置為WARN時,只會在錯誤日志提示,不會直接報錯,

    MySQL怎么開啟或禁用GTID模式

    ## 該操作在主從庫均執行
    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;

    2. 設置GTID校驗ENFORCE_GTID_CONSISTENCY為ON

    觀測一段時間(嚴謹的情況可能觀測一天以上),確認上一個步驟未在錯誤日志中出現相關Warning信息后,正式開啟GTID一致性校驗,當設置為ON后,如果再執行CREATE TABLE AS SELECT語句則會直接報錯

    MySQL怎么開啟或禁用GTID模式

    ## 該操作在主從庫均執行
    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;

    3.  設置GTID_MODE為OFF_PERMISSIVE

    該操作是一個過渡屬性,表示新產生的事務依舊是匿名事務,但也允許有GTID事務被復制同步

    ## 該操作在主從庫均執行
    SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

    4. 設置GTID_MODE為ON_PERMISSIVE

    該操作依舊是一個過渡屬性,而其表示的則是新產生的都是GTID事務,但也允許有匿名事務被復制

    ## 該操作在主從庫均執行
    SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;

    5. (關鍵點)確保匿名事務回放完畢

    該步驟的目的是確保在正式轉換為完整的GTID模式前,老的匿名事務均以被回放完畢,確保GTID_MODE設置為ON時,不會因為殘留的匿名事務導致復制同步報錯,有以下2種方式進行校驗

    ## 該操作僅在從庫執行即可
    ## 方式1:確保該狀態值輸出的匿名事務數顯示為0(注意:只要出現過0即可表示已經轉換完成,即使后續該狀態值從0變為了大于0的值也不影響)
    SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
    
    ## 在從庫上多次執行該語句
    ## 方式2: 查詢該視圖中LAST_SEEN_TRANSACTION可以觀測當前同步的事務是否還存在ANONYMOUS事務
    select * from performance_schema.replication_applier_status_by_worker;

    確保匿名事務數為0

    MySQL怎么開啟或禁用GTID模式

    確保回放線程回放的事務都已是GTID事務

    MySQL怎么開啟或禁用GTID模式

    6. 觸發一輪日志切換FLUSH LOGS

    該操作的目的是為了在主庫觸發binlog的輪換,使新生成的binlog都是包含GTID的事務(防止一個binlog中包含2種類型的事務日志)

    ## 該操作僅在主庫執行即可
    FLUSH LOGS;

    7. 正式開啟GTID_MODE為ON

    正式開啟GTID

    ## 該操作在主從庫均執行
    SET @@GLOBAL.GTID_MODE = ON;
    SELECT @@GTID_MODE,@@ENFORCE_GTID_CONSISTENCY;

    8. 修改配置文件確保GTID參數持久化

    在my.cnf配置文件中增加GTID參數,確保重啟不會失效,該操作也可在第一步進行

    ## 該操作在主從庫均執行
    gtid-mode                 = ON
    enforce-gtid-consistency  = 1

    9. 修改復制模式為GTID方式

    將復制模式從基于POS點改為基于GTID

    ## 停止復制
    STOP SLAVE;
    
    ## 修改為GTID模式
    CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
    
    ## 開啟復制
    START SLAVE;
    
    ## 觀測復制同步狀態
    SHOW SLAVE STATUS\G

    在線關閉GTID

    方式類似于在線開啟GTID的逆向操作,以下只寫出步驟和具體命令,不做詳細解釋

    1. 先將GTID模式的復制改為基于POS點的復制

    2. 設置GTID_MODE為ON_PERMISSIVE

    3. 設置GTID_MODE為OFF_PERMISSIVE

    4. 觀測GTID_OWNED狀態變量變為空值及replication_applier_status_by_worker表中事務均轉為匿名事務

    5. 觸發FLUSH LOGS

    6. 設置GTID_MODE為OFF

    7. 設置ENFORCE_GTID_CONSISTENCY為OFF

    8. 修改my.cnf配置文件中GTID相關參數為OFF

    1. 將復制改為基于POS點方式

    stop slave;
    show slave status\G
    
    ## 取show slave status\G中的Master_Log_File和Exec_Master_Log_Pos填入
    CHANGE MASTER TO
      MASTER_AUTO_POSITION = 0,
      MASTER_LOG_FILE='mysql-bin.000017',
      MASTER_LOG_POS=224126137;
    start slave;
    show slave status\G

    2. 設置GTID_MODE為ON_PERMISSIVE

    ## 該操作在主從庫均執行
    SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;

    3. 設置GTID_MODE為OFF_PERMISSIVE

    ## 該操作在主從庫均執行
    SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

    4. (關鍵點)確保GTID事務回放完畢

    觀測GTID_OWNED狀態變量變為空值及replication_applier_status_by_worker表中事務均轉為匿名事務

    ## 該操作在從庫執行即可
    SELECT @@GLOBAL.GTID_OWNED;
    select * from performance_schema.replication_applier_status_by_worker;

    5. 觸發FLUSH LOGS

    ## 該操作在主庫執行即可
    FLUSH LOGS;

    6. 設置GTID_MODE為OFF

    ## 該操作在主從庫均執行
    SET @@GLOBAL.GTID_MODE = OFF;

    7. 設置ENFORCE_GTID_CONSISTENCY為OFF

    ## 該操作在主從庫均執行
    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = OFF;

    8. 修改my.cnf配置文件中GTID相關參數為OFF

    ## 該操作在主從庫均執行
    gtid-mode                 = OFF
    enforce-gtid-consistency  = 1

    命令簡版

    1. 在線開啟GTID

    自行判斷命令在主庫還是從庫執行

    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
    SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
    SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
    SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
    select * from performance_schema.replication_applier_status_by_worker;
    FLUSH LOGS;
    SET @@GLOBAL.GTID_MODE = ON;
    
    ## 配置文件修改
    gtid-mode                 = ON
    enforce-gtid-consistency  = 1
    
    ## 將復制模式從基于POS點改為基于GTID
    STOP SLAVE;
    CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
    START SLAVE;
    SHOW SLAVE STATUS\G

    2. 在線關閉GTID

    自行判斷命令在主庫還是從庫執行

    stop slave;
    show slave status\G
    
    ## 取show slave status\G中的Master_Log_File和Exec_Master_Log_Pos填入
    CHANGE MASTER TO
      MASTER_AUTO_POSITION = 0,
      MASTER_LOG_FILE='mysql-bin.000017',
      MASTER_LOG_POS=224126137;
    start slave;
    show slave status\G
    
    SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
    SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
    SELECT @@GLOBAL.GTID_OWNED;
    select * from performance_schema.replication_applier_status_by_worker;
    FLUSH LOGS;
    SET @@GLOBAL.GTID_MODE = OFF;
    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = OFF;
    
    ## 修改my.cnf配置文件中GTID相關參數為OFF
    gtid-mode                 = OFF
    enforce-gtid-consistency  = 1

    感謝各位的閱讀,以上就是“MySQL怎么開啟或禁用GTID模式”的內容了,經過本文的學習后,相信大家對MySQL怎么開啟或禁用GTID模式這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    宁陵县| 武鸣县| 开阳县| 东源县| 永顺县| 奉贤区| 蓝田县| 青海省| 孝昌县| 阿克| 汝州市| 关岭| 兴化市| 理塘县| 隆化县| 洞口县| 曲水县| 黔东| 高清| 双鸭山市| 策勒县| 开化县| 江山市| 高邮市| 平原县| 福清市| 松江区| 邮箱| 乐业县| 江永县| 沁阳市| 三门县| 故城县| 札达县| 远安县| 昌图县| 象州县| 博客| 晋江市| 海南省| 白城市|