一、 在每一臺機器上執行命令服務器
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN; 這是很重要的一步,必須確保服務器上沒有違反GTID規範的SQL,不然當設置爲GTID模式後, 這些業務SQL會被拒絕執行,建議設置上面變量值間隔一天後errorLog沒有警告,纔可進行下一步。
二、 在每一臺服務器上執行code
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON; 上面參數表示GTID模式下一些SQL會被拒絕執行,有:create table ...select ....,CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE,在一個事務中更新事務表和非事務表。
三、 在每一臺服務器上執行事務
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; 表示採用匿名事務記錄binlog,slave能夠兼容GTID事務和匿名事務,執行該命令沒有順序可言,可是必須每一個機器都要執行。
四、在每一臺服務器上執行table
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE; 表示採用GTID事務記錄binlog,slave能夠兼容GTID事務和匿名事務,執行該命令沒有順序可言,可是必須每一個機器都要執行。
五、等待步驟5前產生的事務(匿名事務)所有在slave都已應用完成ast
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複製了
六、在每一臺服務器上執行變量
SET @@GLOBAL.GTID_MODE = ON;
七、在全部slave上執行file
stop slave; CHANGE MASTER TO MASTER_AUTO_POSITION = 1; START SLAVE;
八、在每一臺服務器上修改my.cnfselect
gtid_mode = on enforce_gtid_consistency = 1