mysql在線將基於日誌的複製和基於事務的複製互換

在mysql5.7之前,變更復制類型,需要重啓master。基於事務的複製能夠更好的保證數據的完整性。
1.在線將基於日誌的複製變更爲基於事務的複製
條件
1)集羣中所有的服務器版本要高於5.7.6
2)集羣中所有服務器的gtid_mode都設置爲off
處理步驟
(1) 主從上執行  set @@global.enforce_gtid_consistency=warn
執行完後查看mysql日誌沒有錯誤信息,
打印log:2016-05-07T18:12:23.972070Z 6 [Note] Changed ENFORCE_GTID_CONSISTENCY from OFF to WARN.
(2) 主從上執行 set @@global.enforce_gtid_consistency=on
打印log:2016-05-07T18:15:44.249460Z 9 [Note] Changed ENFORCE_GTID_CONSISTENCY from WARN to ON.
(3) 主從上執行 set @@global.gtid_mode=off_permissive
打印log:2016-05-07T18:16:45.417557Z 9 [Note] Changed GTID_MODE from OFF to OFF_PERMISSIVE.
(4) 主從上執行 set @@global.gtid_mode=on_permissive
打印log:2016-05-07T18:20:46.307022Z 10 [Note] Changed GTID_MODE from OFF_PERMISSIVE to ON_PERMISSIVE.
(5) 從上執行  show status like 'ongoing_anonymous_transaction_count';
顯示 0值或者空值即可,如果非0 需要等待同步事務全部執行完成。
(6) 主從上執行 set @@global.gtid_mode =on;   #並加gtid-mode=on到my.cnf
打印:2016-05-07T18:24:39.581763Z 11 [Note] Changed GTID_MODE from ON_PERMISSIVE to ON.
可以通過show variables like '%gtid_mode%';查看狀態
(7)從上執行  stop slave [for channel 'channel'];
(8) 從上執行 change master to master_auto_position=1 [for channel 'channel'];
(9) 從上執行 start slave [for channel 'channel'];
完成後,可以通過 show slave status \G;查看同步複製狀態;
Auto_Position: 1

2.在線將基於事務的複製變更爲基於日誌的複製
條件
1)集羣中所有的服務器版本要高於5.7.6
2)集羣中所有服務器的gtid_mode都設置爲on
處理步驟
(1) 從上執行 stop slave [for channel 'channel'];
(2)從上執行  change master to master_auto_position=0 [for channel 'channel'],
                     master_log_file='mysql-master-bin.000004',master_log_pos=448;
                    start slave;
(4)主從上執行 set @@global.gtid_mode=on_permissive
(5)主從上執行 set @@global.gtid_mode=off_permissive
(6)主從上查看  select @@global.gtid_owned;
在所有機器上都爲空時,進行下面操作。
(7)主從上執行 set @@global.gtid_mode=off #在my.cnf中修改 gtid-mode=off
(8)主從上執行 set @@global.enforce_gtid_consistency=off

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章