系統:centos7
主庫:192.168.225.128:3307
從庫1:192.168.225.129:3307
主從複製傳統複製已配置完畢mysql
1.要求全部的mysql版本5.7.6或更高的版本。 2.目前拓撲結構中全部的mysql的gtid_mode的值爲off狀態。 3.以下的操做步驟都是有序的,不要跳躍着進行。
補充一下全局系統變量GTID_MODE變量值說明:sql
OFF 新事務是非GTID, Slave只接受不帶GTID的事務,傳送來GTID的事務會報錯 OFF_PERMISSIVE 新事務是非GTID, Slave即接受不帶GTID的事務也接受帶GTID的事務 ON_PERMISSIVE 新事務是GTID, Slave即接受不帶GTID的事務也接受帶GTID的事務 ON 新事務是GTID, Slave只接受帶GTID的事務
須要注意的是,這幾個值的改變是有順序的,即centos
off<--->OFF_PERMISSIVE<--->ON_PERMISSIVE<--->ON
不能跳躍執行,會報錯。函數
前提:測試步驟中S1默認都是打開log-bin選項的,
操做步驟測試
M:mysql> set @@global.enforce_gtid_consistency=warn; S:mysql> set @@global.enforce_gtid_consistency=warn;
注意:執行完這條語句後,若是出現GTID不兼容的語句用法,在錯誤日誌會記錄相關信息,那麼須要調整應該程序避免不兼容的寫法,直到徹底沒有產生不兼容的語句,能夠經過應該程序去排查全部的sql,也能夠設置後觀察錯誤日誌一段時間,這一步很是重要。centos7
M:mysql> set @@global.enforce_gtid_consistency=on; S:mysql> set @@global.enforce_gtid_consistency=on;
M:mysql> SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; S:mysql> SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
M: Mysql> SET @@GLOBAL.GTID_MODE = on_permissive; S: Mysql> SET @@GLOBAL.GTID_MODE = on_permissive;
Mysql> SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT'; Mysql> SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
M:show master status; S:show slave status\G 或者或者slave直接用函數: SELECT MASTER_POS_WAIT('mysql-binlog.000005',154);
返回結果大於等於0就說明匿名事務已經所有複製完成spa
如以前產生的全部匿名事務已經所有被執行完畢,甚至二進制日誌中也不要有匿名事務,能夠經過flush logs,並讓mysql來自動清理舊的二進制日誌文件。日誌
M: mysql> SET @@GLOBAL.GTID_MODE = ON; S: mysql> SET @@GLOBAL.GTID_MODE = ON;
增長code
gtid-mode=ON enforce_gtid_consistency=on