昨日、原因不明の不運な停電に見舞われラズパイmysqldが起動しなくなった問題の続編です(^_^)
<状況のおさらい>
停電後、mysqldが起動せず以下のエラーを吐く。
# systemctl start mysql
Job for mysql.service failed. See ‘systemctl status mysql.service’ and ‘journalctl -xn’ for details.
# mysql
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
このエラーをググればそれなりに解決策が出てくるかと思いますが、私の場合は駄目でした(^_^;
冷静にエラーログを確認します。
# cat /var/log/mysql/error.log
以下のくだりを発見、ググります。
stack_bottom = 0 thread_stack 0x30000
そして起動に導いてくれるサイトに辿り着きました。
https://bugs.mysql.com/bug.php?id=65071
なるほど~、innodbがcrashしちゃった訳ですね。
# vi /etc/mysql/my.cnf
[mysqld]
innodb_force_recovery = 6 ←追加
# systemctl start mysql
エラーを吐かなくなりました。これは期待!
# mysql
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
無事起動したっぽい(^_^)
起動後、この「innodb_force_recovery = 6」をmy.cnfからコメントアウトしてmysqlをリスタートしましたが、起動しませんでした。
innnodb_forece_recoveryの詳細です。
https://dev.mysql.com/doc/refman/5.6/ja/forcing-innodb-recovery.html
う~ん、読み取り専用になるのかぁ(^_^;実際にUpdateを実行しようとすると、
ERROR 1030 (HY000): Got error -1 from storage engine
怒られました(笑)この後、mysqldumpを試すもwordpressのとあるテーブルが壊れていて失敗。
しかしながら、どうしてもデータが必要な場合はこれで十分救われる可能性がありますね(^_^)
今回はバックアップも活用できたし、良い頭の運動になりました(笑)