修改hostname導致mysql重啟slave失敗的修復方法

  • 2019 年 10 月 5 日
  • 筆記

修改hostname導致mysql重啟slave失敗的修復方法

(只針對於把slave的資訊存在文件裡面會出現這種情況,如果存在表裡就不會有這種問題發生):

有時候我們很早之前修改完主機名後,跑了好幾個月後,突然系統出問題,重啟了資料庫,發現start slave起不來了。提示找不到relay-log的文件名和位移了。

解決方法:

> show slave statusG 記下目前的執行到的master的binlog的文件名和binlog pos:

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 10.0.21.66

                  Master_User: rpl

                  Master_Port: 3306

              Master_Log_File: mysql-bin.000308

          Exec_Master_Log_Pos: 169761782

然後執行:

> reset slave all; 

重新執行change master:

> CHANGE MASTER TO

MASTER_HOST='10.0.21.66', 

MASTER_USER='rpl',

MASTER_PASSWORD='rpl',

MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.000308',

MASTER_LOG_POS=169761782;

啟動slave:

> start slave;

> show slave statusG 

#### 要避免這種情況的發生,我們只要在配置從庫之前,在my.cnf裡面配置上

master_info_repository = TABLE

relay_log_info_repository = TABLE

relay_log_recovery = 1

重啟資料庫,然後再配置change master即可。