1. 程式人生 > >線上修改GTID模式

線上修改GTID模式

線上修改GTID模式

1、 在每一臺機器上執行命令

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;

這是很重要的一步,必須確保伺服器上沒有違反GTID規範的SQL,否則當設定為GTID模式後,
這些業務SQL會被拒絕執行,建議設定上面變數值間隔一天後errorLog沒有警告,才可進行下一步。

2、 在每一臺伺服器上執行

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;

上面引數表示GTID模式下一些SQL會被拒絕執行,有:create table ...select ....,CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE,在一個事務中更新事務表和非事務表。

3、 在每一臺伺服器上執行

SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

表示採用匿名事務記錄binlog,slave可以相容GTID事務和匿名事務,執行該命令沒有順序可言,但是必須每個機器都要執行。

4、在每一臺伺服器上執行

SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;

表示採用GTID事務記錄binlog,slave可以相容GTID事務和匿名事務,執行該命令沒有順序可言,但是必須每個機器都要執行。

5、等待步驟5前產生的事務(匿名事務)全部在slave都已應用完成

6.1)在master上執行:show master status;記錄file和pos
6.2) 在所有slave執行:SELECT MASTER_POS_WAIT('file', pos);如果執行結果都為0表示都已經應用完成,可以進行下一步,否則需要一直等待完成。

方法二:在每一臺slave上都執行show master status;檢視Executed_Gtid_Set是否有值,如果不為空了,說明已經開始使用GTID複製了

6、在每一臺伺服器上執行

SET @@GLOBAL.GTID_MODE = ON;

7、在所有slave上執行

 stop slave;
 CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
 START SLAVE;
 

8、在每一臺伺服器上修改my.cnf

 gtid_mode = on
 enforce_gtid_consistency = 1