今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

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