2019-05-09に更新

MariaDB の InnoDB がぶっ壊れて起動できなくなったので復旧した

はじめに

右往左往して復旧に6時間程度かかった。もうこりごりなので内容をざっくりまとめる。

手順(概略)

KUSANAGI(CentOS7)での手順。

sudo su
vi /etc/my.cnf.d/server.cnf
i
[mysqld]
innodb_force_recovery = 3

[esc] キーで vi 終了。

systemctl start mysqld
mysqldump -u root -p -x --all-databases > alldatabase.dump
systemctl stop mysqld
rm -rf /var/lib/mysql/*
yum remove -y MariaDB-devel MariaDB-client MariaDB-server
yum install -y MariaDB-devel MariaDB-client MariaDB-server
systemctl start mysqld
mysql -u root
UPDATE mysql.user SET password=password('password') WHERE user = 'root';
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON db_name.* TO 'username'@'localhost';
flush privileges;
exit;
mysql -u root -p < alldatabase.dump

要点

  • innodb_force_recovery を 3 以下に設定しておくと InnoDB が壊れていても Read only でとりあえず起動出来るようになるっぽい
  • 起動したら mysqldump でバックアップ。MariaDB を再インストール後に戻す
  • 構成ファイルがいかれていたので /var/lib/mysql/ 配下を消しておく。(必要であれば設定ファイルは逃しておく)

原因

数日前に単純に MariaDB が落ちたことがあり、何かしら高負荷がかかっている可能性があるが、アクセス数も多くなく、環境である仮想ハードウェアの負荷も目立った様子は無い。できれば関係ログを追って探りたいところだが不明。

(2019.4.14 追記) 原因判明したので記事書きました

KUSANAGI で MySQL が頻繁に落ちる際の対処 - Crieit

参考

ツイッターでシェア
みんなに共有、忘れないようにメモ

sola

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント