深夜のメンテナンス作業。仕様変更の為MySQLのコンフィグの反映をさせる為にスレーブDBのMySQLを再起動したら1台起動しなかった。
1 |
# /etc/init.d/mysqld restart |
・・・・・・起動失敗。
あらら、プロセスが残ってしまっているのか。
1 |
# killall -9 mysqld && /etc/init.d/mysqld restart |
起動失敗。コンフィグの記述ミスかな?
まず心を鎮める。
ログを確認
1 2 3 4 5 |
# tail -n 500 /var/log/mysqld.log /usr/sbin/mysqld: File './mysql-bin.010553' not found (Errcode: 2 - No such file or directory) 2016-02-05 03:52:11 28129 [ERROR] Failed to open log (file './mysql-bin.010553', errno 2) 2016-02-05 03:52:11 28129 [ERROR] Could not open log file |
1 2 3 4 5 6 7 8 |
# vi /var/lib/mysql/mysql-bin.index (略) ./mysql-bin.010550 ./mysql-bin.010551 ./mysql-bin.010552 ./mysql-bin.010553 ←この行を削除する。 |
1 |
# /etc/init.d/mysqld restart |
起動成功٩(๑❛ᴗ❛๑)۶
マスター側でレプリケーションの確認
1 2 3 4 5 6 7 8 9 |
mysql> SHOW PROCESSLIST; +--------+------------+----------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +--------+------------+----------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+ | 3 | replmaster | 153.xxx.yyy.68:6429 | NULL | Binlog Dump | 57733 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL | | 19 | replmaster | 153.xxx.yyy.67:54711 | NULL | Binlog Dump | 57726 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL | | 197333 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST | +--------+------------+----------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+ |
起動失敗から3分以下で復旧出来ました。今回のコマンドはコピペです。サービスの再起動時のエラーは複数パターンがあるので、障害パターン別にテキストファイルにコマンドセットや手順書を用意して再起動します。また今回のシステムではDB用のバランサーもがっちり組んでいるので参照の接続障害も20秒もなかったはず。