mysqldが起動しなくなったときの対処方法
クラウド上で動かしているmysqlでcreate databaseとdrop database の操作を繰り返してたら、mysqlが無応答になってしまった。
CentOSをリブートしてみたけど、やはりmysqldが起動しない。
ぐぐってみたら、こちらがヒット。
≫[手順] MySQL データベースでの InnoDB 破損を修復するには – ヘルプセンター
バックアップして、my.cnfを変更して、復旧させる方法らしい。
# mkdir /root/mysql_backup # cp -a /var/lib/mysql/* /root/mysql_backup/ # vi /etc/my.cnf [mysqld] innodb_force_recovery = 1
このあとで mysqld を起動させるってことだけど、やはり起動しない。
# /etc/rc.d/init.d/mysqld start MySQL Daemon failed to start. Starting mysqld:
さらなる情報をもとめてぐぐる。
こちらがヒット。
≫ Resolved - MYSQL database is not starting since today morning | Plesk Forum
forcing InnoDB Recovery solution has not working for me. I have fixed the issue as follows:
1) remove the syslog entry under --> /etc/mysql/conf.d/mysqld_safe_syslog.cnf
2) backup & remove both ib_logfile0 & ib_logfile1 files under --> /var/lib/mysql
3) remov entry innodb_force_recovery = 1 from --> etc/mysql/my.cnf
4) command --> sudo service mysql start
5) server is starting and works fine again without loosing any data
1にあるファイルはなかったので無視。
2のバックアップはすでにやっている。追加で ib_logfile[01] を削除した。
3のmy.cnfの修正、さきほど追加した1行を削除。
4でmysqldを起動。
サクッと起動した!
ib_logfile[01]が壊れていたらしい。
再起動後、削除したファイルは復活してた。
# ls -l /var/lib/mysql/ib_logfile* -rw-rw---- 1 mysql mysql 50331648 Aug 1 14:20 /var/lib/mysql/ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 Aug 1 13:45 /var/lib/mysql/ib_logfile1