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 負荷が高めになるため、サービス側の同時処理数を絞り込んで負荷を調整。

森田::