MySQL GTID (二)

MySQL GTID 系列之二

三.在線將GTID轉化爲傳統模式

環境見上篇系列文章mysql

關閉GTID,不用中止服務,不影響線上業務sql

3.1 關閉GTID複製,調整爲傳統複製

#SLVAE實例上中止複製 
STOP SLAVE

#SLVAE實例上查看複製的位置
SHOW SLAVE STATUS \G
# 查看 Master_Log_File 和 Read_Master_Log_Pos對應的值
binlog.000012:1821

#從新 CHANGE MASTER
CHANGE MASTER TO MASTER_AUTO_POSITION=0,
                 MASTER_LOG_FILE='binlog.000012',
                 MASTER_LOG_POS=1821;

#開啓SLAVE
START SLAVE;

3.2 全部服務器上設置GTID模式爲 ON_PERMISSIVE

SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE;

3.3 全部服務器上設置GTID模式爲 OFF_PERMISSIVE

SET @@GLOBAL.GTID_MODE=OFF_PERMISSIVE;

3.4 等待全部服務器上的變量@@GLOBAL.GTID_OWNED爲空,它表示正在由線程執行的全局GTID集合

mysql> SELECT @@GLOBAL.GTID_OWNED;
+---------------------+
| @@GLOBAL.GTID_OWNED |
+---------------------+
|                     |
+---------------------+
1 row in set (0.00 sec)

3.5 等待全部SLAVE上都複製完成匿名事務。

3.6 全部服務器上關閉GTID.

SET @@GLOBAL.GTID_MODE=OFF;

3.7 修改配置文件,以便下次重啓,配置也是生效的。

gtid_mode=OFF
enforce_gtid_consistency=OFF

四. 傳統模式轉換爲GTID模式

MySQL5.7.6版本之後,支持在線修改GTID模式服務器

4.1 全部服務器上設置ENFORCE_GTID_CONSISTENCY=WARN,使得全部事務容許違反GTID的一致性

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=WARN;

4.2 全部服務器上設置ENFORCE_GTID_CONSISTENCY=ON.確保全部事務不能違反GTID的一致性

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY=ON;

4.3 全部服務器上設置GTID_MODE=OFF_PERMISSIVE

SET @@GLOBAL.GTID_MODE=OFF_PERMISSIVE;

4.4 全部服務器上設置GTID_MODE=ON_PERMISSIVE

SET @@GLOBAL.GTID_MODE=ON_PERMISSIVE;

4.5 等待全部從庫 ONGOING_ANONYMOUS_TRANSACTION_COUNT爲0

SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

4.6 全部服務器上設置 GTID_MODE=ON,開啓GTID

SET @@GLOBAL.GTID_MODE=ON;

4.7 修改配置文件,以便下次重啓,配置也是生效的。

gtid_mode=ON
enforce_gtid_consistency=1
相關文章
相關標籤/搜索