最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL在線開啟或禁用GTID模式

 更新時間:2021年11月28日 14:46:54   作者:ZhenXing_Yu  
本文詳細(xì)講解了MySQL在線開啟或禁用GTID模式的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

基本概述

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

  1. 基于binlog文件名及位點的指定方式
    - 匿名事務(wù)(Anonymous_gtid_log_event)
  2. 基于GTID(全局事務(wù)ID)的指定方式
    - GTID事務(wù)(Gtid_log_event)

而基于GTID的方式一方面在一主多從的架構(gòu)下主從切換有著明顯優(yōu)勢外,對于日常復(fù)制異常的故障診斷方面也更為方便,從MySQL 5.7.6之后便開始支持動態(tài)開啟和關(guān)閉GTID模式,其參數(shù)GTID_MODE有以下取值

  • OFF - 只允許匿名事務(wù)被復(fù)制同步
  • OFF_PERMISSIVE - 新產(chǎn)生的事務(wù)都是匿名事務(wù),但也允許有GTID事務(wù)被復(fù)制同步
  • ON_PERMISSIVE - 新產(chǎn)生的都是GTID事務(wù),但也允許有匿名事務(wù)被復(fù)制同步
  • ON - 只允許GTID事務(wù)被復(fù)制同步

在線開啟GTID

1. 設(shè)置GTID校驗ENFORCE_GTID_CONSISTENCY為WARN

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

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

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

2. 設(shè)置GTID校驗ENFORCE_GTID_CONSISTENCY為ON

觀測一段時間(嚴(yán)謹(jǐn)?shù)那闆r可能觀測一天以上),確認(rèn)上一個步驟未在錯誤日志中出現(xiàn)相關(guān)Warning信息后,正式開啟GTID一致性校驗,當(dāng)設(shè)置為ON后,如果再執(zhí)行CREATE TABLE AS SELECT語句則會直接報錯

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

3. 設(shè)置GTID_MODE為OFF_PERMISSIVE

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

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

4. 設(shè)置GTID_MODE為ON_PERMISSIVE

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

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

5. (關(guān)鍵點)確保匿名事務(wù)回放完畢

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

## 該操作僅在從庫執(zhí)行即可
## 方式1:確保該狀態(tài)值輸出的匿名事務(wù)數(shù)顯示為0(注意:只要出現(xiàn)過0即可表示已經(jīng)轉(zhuǎn)換完成,即使后續(xù)該狀態(tài)值從0變?yōu)榱舜笥?的值也不影響)
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

## 在從庫上多次執(zhí)行該語句
## 方式2: 查詢該視圖中LAST_SEEN_TRANSACTION可以觀測當(dāng)前同步的事務(wù)是否還存在ANONYMOUS事務(wù)
select * from performance_schema.replication_applier_status_by_worker;

確保匿名事務(wù)數(shù)為0

確?;胤啪€程回放的事務(wù)都已是GTID事務(wù)

6. 觸發(fā)一輪日志切換FLUSH LOGS

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

## 該操作僅在主庫執(zhí)行即可
FLUSH LOGS;

7. 正式開啟GTID_MODE為ON

正式開啟GTID

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

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

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

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

9. 修改復(fù)制模式為GTID方式

將復(fù)制模式從基于POS點改為基于GTID

## 停止復(fù)制
STOP SLAVE;

## 修改為GTID模式
CHANGE MASTER TO MASTER_AUTO_POSITION = 1;

## 開啟復(fù)制
START SLAVE;

## 觀測復(fù)制同步狀態(tài)
SHOW SLAVE STATUS\G

在線關(guān)閉GTID

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

  1. 先將GTID模式的復(fù)制改為基于POS點的復(fù)制
  2. 設(shè)置GTID_MODE為ON_PERMISSIVE
  3. 設(shè)置GTID_MODE為OFF_PERMISSIVE
  4. 觀測GTID_OWNED狀態(tài)變量變?yōu)榭罩导皉eplication_applier_status_by_worker表中事務(wù)均轉(zhuǎn)為匿名事務(wù)
  5. 觸發(fā)FLUSH LOGS
  6. 設(shè)置GTID_MODE為OFF
  7. 設(shè)置ENFORCE_GTID_CONSISTENCY為OFF
  8. 修改my.cnf配置文件中GTID相關(guān)參數(shù)為OFF

1. 將復(fù)制改為基于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. 設(shè)置GTID_MODE為ON_PERMISSIVE

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

3. 設(shè)置GTID_MODE為OFF_PERMISSIVE

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

4. (關(guān)鍵點)確保GTID事務(wù)回放完畢

觀測GTID_OWNED狀態(tài)變量變?yōu)榭罩导皉eplication_applier_status_by_worker表中事務(wù)均轉(zhuǎn)為匿名事務(wù)

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

5. 觸發(fā)FLUSH LOGS

## 該操作在主庫執(zhí)行即可
FLUSH LOGS;

6. 設(shè)置GTID_MODE為OFF

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

7. 設(shè)置ENFORCE_GTID_CONSISTENCY為OFF

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

8. 修改my.cnf配置文件中GTID相關(guān)參數(shù)為OFF

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

命令簡版

1. 在線開啟GTID

自行判斷命令在主庫還是從庫執(zhí)行

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

## 將復(fù)制模式從基于POS點改為基于GTID
STOP SLAVE;
CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
START SLAVE;
SHOW SLAVE STATUS\G

2. 在線關(guān)閉GTID

自行判斷命令在主庫還是從庫執(zhí)行

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相關(guān)參數(shù)為OFF
gtid-mode                 = OFF
enforce-gtid-consistency  = 1

參考鏈接

https://dev.mysql.com/doc/refman/5.7/en/replication-mode-change-online.html

https://dev.mysql.com/doc/refman/5.7/en/replication-mode-change-online-enable-gtids.html

https://dev.mysql.com/doc/refman/5.7/en/replication-mode-change-online-disable-gtids.html

以上所述是小編給大家介紹的MySQL在線開啟或禁用GTID模式,希望對大家有所幫助。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • MySQL group by分組后如何將每組所得到的id拼接起來

    MySQL group by分組后如何將每組所得到的id拼接起來

    這篇文章主要介紹了MySQL group by分組后如何將每組所得到的id拼接起來,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • MYSQL數(shù)據(jù)庫連接池及常見參數(shù)調(diào)優(yōu)方式

    MYSQL數(shù)據(jù)庫連接池及常見參數(shù)調(diào)優(yōu)方式

    這篇文章主要介紹了MYSQL數(shù)據(jù)庫連接池及常見參數(shù)調(diào)優(yōu)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Mysql中強制索引的具體使用

    Mysql中強制索引的具體使用

    Mysql強制索引可以通過強制使用某些列的索引來提高查詢的性能,本文就來介紹一下Mysql中強制索引的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • mysql5.6建立索引報錯1709問題及解決

    mysql5.6建立索引報錯1709問題及解決

    這篇文章主要介紹了mysql5.6建立索引報錯1709問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 簡單了解mysql方言dialect

    簡單了解mysql方言dialect

    這篇文章主要介紹了簡單了解數(shù)據(jù)庫方言dialect,數(shù)據(jù)庫方言也是如此,MySQL 是一種方言,Oracle 也是一種方言,MSSQL 也是一種方言,他們之間在遵循 SQL 規(guī)范的前提下,都有各自的擴展特性,需要的朋友可以參考下
    2019-07-07
  • Mysql 5.5.56版本(二進(jìn)制包安裝)自定義安裝路徑步驟記錄

    Mysql 5.5.56版本(二進(jìn)制包安裝)自定義安裝路徑步驟記錄

    這篇文章主要介紹了Mysql 5.5.56版本(二進(jìn)制包安裝)自定義安裝路徑步驟記錄,需要的朋友可以參考下
    2017-07-07
  • Mysql主從同步如何重置

    Mysql主從同步如何重置

    在MySQL數(shù)據(jù)庫運維中,遇到主從數(shù)據(jù)庫數(shù)據(jù)不一致時需要進(jìn)行同步重置,本文介紹了主從同步重置的具體步驟:首先對從庫操作,包括停止slave、重置從庫;其次對主庫進(jìn)行操作,包括重置主庫同步設(shè)置、鎖定主庫;最后從庫導(dǎo)入主庫數(shù)據(jù)
    2024-10-10
  • MySQL之使用UNION和UNION ALL合并兩個或多個SELECT語句的結(jié)果集

    MySQL之使用UNION和UNION ALL合并兩個或多個SELECT語句的結(jié)果集

    這篇文章主要介紹了MySQL之使用UNION和UNION ALL合并兩個或多個SELECT語句的結(jié)果集,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • MySQL數(shù)據(jù)庫約束操作示例講解

    MySQL數(shù)據(jù)庫約束操作示例講解

    約束是用來限制表中的數(shù)據(jù)長什么樣子的,即什么樣的數(shù)據(jù)可以插入到表中,什么樣的數(shù)據(jù)插入不到表中,下面這篇文章主要給大家介紹了關(guān)于如何通過一文理解MySQL數(shù)據(jù)庫的約束與表的設(shè)計的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • MYSQL中 char 和 varchar的區(qū)別

    MYSQL中 char 和 varchar的區(qū)別

    這篇文章主要介紹了MYSQL中 char 和 varchar的區(qū)別,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09

最新評論

休宁县| 普陀区| 长海县| 资中县| 武清区| 西藏| 汤阴县| 石嘴山市| 临湘市| 美姑县| 那曲县| 东乡族自治县| 陈巴尔虎旗| 武冈市| 罗定市| 周至县| 天柱县| 三都| 五家渠市| 航空| 山东| 拉萨市| 大竹县| 天门市| 西安市| 泸定县| 凌源市| 搜索| 仁寿县| 分宜县| 滦平县| 普安县| 南康市| 固原市| 遂溪县| 修文县| 桐乡市| 长宁县| 漠河县| 宁蒗| 鄢陵县|