MySQL レプリケーション トラブルシューティング1
ネットワーク機器の設定変更に伴って、ネットワークの切断が発生し、MySQL のレプリケーションが停止した時のトラブルシューティングの備忘録。
まずは、状態の確認。
マスタのバイナリログの状態の確認。Position が増加すること。
mysql> show master status\G;
スレーブの状態の確認。Slave_IO_Running と Slave_SQL_Running が、どちらも Yes となっていること。
mysql> show slave status\G;
スレーブのプロセスリストの確認。Command: Connection が2つ (I/O スレッドと SQL スレッド) あることを確認する。
mysql> show processlist\G;
スレーブの I/O スレッドが "Waiting for master to send event" であれば、マスタ-スレーブの接続は問題なし。"Connecting to master" の場合は、マスタ-スレーブの接続に問題が発生している可能性がある。
- ネットワークの疎通を、ping にて確認。
- ポート番号の設定が同一 (3306) であるか確認。
- iptables や F/W の設定に問題が無いか確認。
- skip-networking オプションが my.cnf や起動スクリプトに設定されていないか確認。
- server-id が正しいか (異なっているか) 確認。
- サーバ名.err ログを確認。
今回は、サーバ名.err ログにて、
[Error] Slave I/O thread: error connecting to master 'repl:server1:3306':
Error: 'Host 'server1' is blocked because of many connection errors;
unblock with 'mysqladmin flush-hosts''
の行を見つけ、flush hosts ステートメントにて接続要求のブロックを解除。
マスタ側のアプリケーションを一時停止し、MySQL の I/O スレッドの接続を確認後、アプリケーションを再開。
レプリケーションが停止していた期間のバイナリログが同期するまでの間、DB 負荷が高めになるため、サービス側の同時処理数を絞り込んで負荷を調整。
森田::