mysql 主從複製change master to
CHANGE MASTER TO命令用於slave配置連線master的資訊,例如master host、master port等。
關於CHANGE MASTER TO命令,總結幾點使用心得。
在CHANGE MASTER TO之前,slave 的複製執行緒(I/O執行緒,SQL執行緒)必須停止,可以使用 STOP SLAVE 來停止。
如果一些引數不指定,則其引數值使用以前設定的值。
如果使用了引數RELAY_LOG_FILE 或者RELAY_LOG_POS,relay log檔案會被保留, relay_log_purge全域性變數被設定為0.
否則,會刪除所有的relay log檔案,建立一個新的relay log檔案。在執行CHANGE MASTER TO ... MASTER_AUTO_POSITION = 1使用gtid之前,
gtid_mode必須開啟,否則會報錯。某個例項已經開啟GTID,如果指向新主庫,使用的命令
CHANGE MASTER TO只帶MASTER_HOST、MASTER_PORT兩個引數,會根據GTID自動定位位置開始複製。5.7.4以前的版本,使用CHANGE MASTER TO時如果沒有帶引數MASTER_HEARTBEAT_PERIOD,預設會將MASTER_HEARTBEAT_PERIOD設定成slave_net_timeout的一半,並將Slave_received_heartbeats 設定為0.
目前,只有使用RESET SLAVE才會將heartbeat週期重置。這個地方是有疑問的。
關於MASTER_HEARTBEAT_PERIOD的疑問
測試版本:5.7.21
兩種情況的測試:
CHANGE MASTER TO只帶MASTER_HOST、MASTER_PORT兩個引數時,
MASTER_HEARTBEAT_PERIOD會變為slave_net_timeout的一半。CHANGE MASTER TO只帶引數MASTER_CONNECT_RETRY時,
MASTER_HEARTBEAT_PERIOD不變。