亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL在線開(kāi)啟或禁用GTID模式

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

基本概述

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

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

而基于GTID的方式一方面在一主多從的架構(gòu)下主從切換有著明顯優(yōu)勢(shì)外,對(duì)于日常復(fù)制異常的故障診斷方面也更為方便,從MySQL 5.7.6之后便開(kāi)始支持動(dòng)態(tài)開(kā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ù)制同步

在線開(kāi)啟GTID

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

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

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

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

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

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

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

3. 設(shè)置GTID_MODE為OFF_PERMISSIVE

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

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

4. 設(shè)置GTID_MODE為ON_PERMISSIVE

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

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

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

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

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

## 在從庫(kù)上多次執(zhí)行該語(yǔ)句
## 方式2: 查詢(xún)?cè)撘晥D中LAST_SEEN_TRANSACTION可以觀測(cè)當(dāng)前同步的事務(wù)是否還存在ANONYMOUS事務(wù)
select * from performance_schema.replication_applier_status_by_worker;

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

確保回放線程回放的事務(wù)都已是GTID事務(wù)

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

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

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

7. 正式開(kāi)啟GTID_MODE為ON

正式開(kāi)啟GTID

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

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

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

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

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

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

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

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

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

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

在線關(guān)閉GTID

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

  1. 先將GTID模式的復(fù)制改為基于POS點(diǎn)的復(fù)制
  2. 設(shè)置GTID_MODE為ON_PERMISSIVE
  3. 設(shè)置GTID_MODE為OFF_PERMISSIVE
  4. 觀測(cè)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點(diǎn)方式

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

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

3. 設(shè)置GTID_MODE為OFF_PERMISSIVE

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

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

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

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

5. 觸發(fā)FLUSH LOGS

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

6. 設(shè)置GTID_MODE為OFF

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

7. 設(shè)置ENFORCE_GTID_CONSISTENCY為OFF

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

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

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

命令簡(jiǎn)版

1. 在線開(kāi)啟GTID

自行判斷命令在主庫(kù)還是從庫(kù)執(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點(diǎn)改為基于GTID
STOP SLAVE;
CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
START SLAVE;
SHOW SLAVE STATUS\G

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

自行判斷命令在主庫(kù)還是從庫(kù)執(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在線開(kāi)啟或禁用GTID模式,希望對(duì)大家有所幫助。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 淺談一下mysql數(shù)據(jù)庫(kù)底層原理

    淺談一下mysql數(shù)據(jù)庫(kù)底層原理

    這篇文章主要介紹了淺談一下mysql數(shù)據(jù)庫(kù)底層原理,介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • MySQL基礎(chǔ)入門(mén)之Case語(yǔ)句用法實(shí)例

    MySQL基礎(chǔ)入門(mén)之Case語(yǔ)句用法實(shí)例

    case語(yǔ)句是mysql中的一個(gè)條件語(yǔ)句,可以在字段中使用case語(yǔ)句進(jìn)行復(fù)雜的篩選以及構(gòu)造新的字段,下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)入門(mén)之Case語(yǔ)句用法的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • mysql下float類(lèi)型使用一些誤差詳解

    mysql下float類(lèi)型使用一些誤差詳解

    我想很多朋友都不怎么會(huì)在mysql中使用float類(lèi)型,特別是用到金錢(qián)時(shí)我們可能會(huì)用雙精度來(lái)做,我們知道m(xù)ysql的float類(lèi)型是單精度浮點(diǎn)類(lèi)型不小心就會(huì)導(dǎo)致數(shù)據(jù)誤差
    2012-11-11
  • Mysql怎么存儲(chǔ)json格式數(shù)據(jù)詳解

    Mysql怎么存儲(chǔ)json格式數(shù)據(jù)詳解

    在開(kāi)發(fā)中遇到存取html值的情況,并且要根據(jù)id進(jìn)行實(shí)時(shí)返回,在做的時(shí)候想到了mysql的json類(lèi)型存儲(chǔ),下面這篇文章主要給大家介紹了關(guān)于Mysql怎么存儲(chǔ)json格式數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Linux環(huán)境下安裝mysql5.7.36數(shù)據(jù)庫(kù)教程

    Linux環(huán)境下安裝mysql5.7.36數(shù)據(jù)庫(kù)教程

    大家好,本篇文章主要講的是Linux環(huán)境下安裝mysql5.7.36數(shù)據(jù)庫(kù)教程,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • MySQL中常見(jiàn)的六個(gè)約束類(lèi)型詳解

    MySQL中常見(jiàn)的六個(gè)約束類(lèi)型詳解

    數(shù)據(jù)類(lèi)型是為了節(jié)約內(nèi)存,提高計(jì)算, 數(shù)據(jù)約束是為了完整性(存儲(chǔ)關(guān)系),下面這篇文章主要給大家介紹了關(guān)于MySQL中常見(jiàn)的六個(gè)約束類(lèi)型的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • centos7安裝mysql5.7的踩坑記錄

    centos7安裝mysql5.7的踩坑記錄

    最近在做項(xiàng)目中發(fā)現(xiàn)CentOS 7下升級(jí)MySQL5.7的一個(gè)坑,所以下面這篇文章主要給大家介紹了關(guān)于centos7安裝mysql5.7的踩坑記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • MySQL對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行復(fù)制的基本過(guò)程詳解

    MySQL對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行復(fù)制的基本過(guò)程詳解

    這篇文章主要介紹了MySQL對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行復(fù)制的基本過(guò)程,解讀了Slave的一些相關(guān)配置,需要的朋友可以參考下
    2015-11-11
  • mysql修改用戶(hù)密碼報(bào)錯(cuò)的解決方法

    mysql修改用戶(hù)密碼報(bào)錯(cuò)的解決方法

    mysql 初始化時(shí),使用臨時(shí)密碼,修改自定義密碼時(shí),由于自定義密碼比較簡(jiǎn)單,就出現(xiàn)了不符合密碼策略的問(wèn)題,這篇文章主要介紹了mysql修改用戶(hù)密碼報(bào)錯(cuò),需要的朋友可以參考下
    2023-03-03
  • 解決mysql模糊查詢(xún)索引失效問(wèn)題的幾種方法

    解決mysql模糊查詢(xún)索引失效問(wèn)題的幾種方法

    我們?cè)谑褂胠ike %通配符時(shí)常常會(huì)引起索引失效的問(wèn)題。本文主要介紹了常見(jiàn)的幾種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-06-06

最新評(píng)論