1. 程式人生 > >mysql 主從複製change master to

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不變。

參考

CHANGE MASTER TO Syntax