處理一則MySQL Slave環境出現ERROR 1201 (HY000): Could not initialize master info structure的案例

 

mysql> start slave;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

 

處理一則MySQL Slave環境出現ERROR 1201 (HY000): Could not initialize master info structure的案例。
 
冷備份方式複製一份新的slave,初始化參數中已經修改了相關文件路徑及server_id等關聯參數。
但在啓動slave時發現error_log中出現下列錯誤信息:
120326 11:10:23 [ERROR] /usr/local/mysql//libexec/mysqld: File '/data/mysqldata/3306/binlog/mysql-relay-bin.000002' not found (Errcode: 2)
120326 11:10:23 [ERROR] Failed to open log (file '/data/mysqldata/3306/binlog/mysql-relay-bin.000002', errno 2)
120326 11:10:23 [ERROR] Failed to open the relay log '/data/mysqldata/3306/binlog/mysql-relay-bin.000002' (relay_log_pos 126074557)
120326 11:10:23 [ERROR] Could not open log file
120326 11:10:23 [ERROR] Failed to initialize the master info structure

 

 
因爲新的slave改變了服務端口和文件路徑,分析應該是因爲mysql-relay-bin.index中仍然保存着舊relay日誌文件的路徑,而這些路徑下又找不到合適的文件,所以報錯。
 
對於這類問題解決起來是比較簡單的,重置slave的參照便可,執行命令以下:
mysql> reset slave;
Query OK, 0 rows affected (0.01 sec)
 
mysql> change master to 
    -> master_host='10.0.0.101',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='repl',
    -> master_log_file='mysql-bin.000011',
    -> master_log_pos=1;

 

ERROR 29 (HY000): File '/data/mysqldata/3306/binlog/mysql-relay-bin.000001' not found (Errcode: 2)
看來應該仍是mysql-relay-bin.index的問題,刪除該文件及關聯的relay-bin文件。再次配置master:
mysql> change master to 
    -> master_host='10.0.0.101',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='repl',
    -> master_log_file='mysql-bin.000011',
    -> master_log_pos=1;
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

 

 
出現了新的錯誤,按照提示查看error_log也沒發現更多錯誤信息,error_log中只是顯示一條:
120326 11:14:27 [ERROR] Error reading master configuration
在操做系統端查看master/slave的配置文件,發現是兩個0字節文件:
-rw-rw---- 1 mysql mysql     0 Mar 26 11:13 master.info
-rw-rw---- 1 mysql mysql     0 Mar 26 11:13 relay-log.info

 

會不會是這個緣由呢,直接刪除這兩個文件,而後嘗試從新執行change master:
 
mysql> change master to 
    -> master_host='10.0.0.101',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='repl',
    -> master_log_file='mysql-bin.000011',
    -> master_log_pos=1;
Query OK, 0 rows affected (0.00 sec)

 

 
成功,啓動slave並查看狀態:
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.101
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000011
          Read_Master_Log_Pos: 101

 

...........
 
故障解決。
 
轉自: http://blog.itpub.net/7607759/viewspace-719707/
相關文章
相關標籤/搜索