2013年08月01日

MySQL スレーブが Errno 1872 で停止した時の対処

MySQLのスレーブが走っているマシンを再起動したら、スレーブがエラーを吐いて止まってしまった。
Last_Errno は 1872。
ドキュメントによれば、

(http://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html)
Error: 1872 SQLSTATE: HY000 (ER_SLAVE_RLI_INIT_REPOSITORY)
Message: Slave failed to initialize relay log info structure from the repository
ER_SLAVE_RLI_INIT_REPOSITORY was introduced in 5.6.12.

とのこと。
何らかの理由で、リレーログが読めなくなってしまったか何か?

この時は、MySQLは上がっていて、スレーブのステータスもとれるので、SHOW SLAVE STATUSで最後の状態を調べる。
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: ***.***.***.***
Master_User: ********
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000009
:(略)
Last_Errno: 1872
Last_Error: Slave failed to initialize relay log info structure from the repository
Skip_Counter: 0
Exec_Master_Log_Pos: 4840135
:(略)
1 row in set (0.00 sec)
で、Master_Log_FileExec_Master_Log_Posを見る。ここまでマスターのバイナリログの実行が終わっているので、一旦スレーブをリセットして、ここから再開させる。

RESET SLAVE;

CHANGE MASTER TO
MASTER_HOST='***.***.***.***',
MASTER_USER='********',
MASTER_PASSWORD='********',
MASTER_LOG_FILE='mysql-bin.000009', // Master_Log_Fileのファイル名をセット
MASTER_LOG_POS=4840135; // Exec_Master_Log_Posの値をセット

START SLAVE;
これで、スレーブが再開するか確認。
今回はこれで動き出したようだ。ふう。
タグ:MySQL
posted by usoinfo at 07:19 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]