ワイズリマインダー

突然MariaDBが逝った・・・

突然データベースにアクセス出来なくなったので
復旧までの作業を記録

$ systemctl status -l mariadb.service
	● mariadb.service - MariaDB database server
	Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)

ログを確認してみる

$ sudo tail /var/log/mariadb/mariadb.log
	180216 13:30:44 [ERROR] Plugin 'InnoDB' init function returned error.
	180216 13:30:44 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
	180216 13:30:44 [Note] Plugin 'FEEDBACK' is disabled.
	180216 13:30:44 [ERROR] Unknown/unsupported storage engine: InnoDB
	180216 13:30:44 [ERROR] Aborting

InnoDB エンジンが起動していない・・・

問題の切り分けの為、データを削除(移動)してみる

$ sudo cat /etc/my.cnf
	[mysqld]
	datadir=/var/lib/mysql
$ sudo mv /var/lib/mysql /var/lib/mysql.`date +%Y%m%d`
$ sudo mkdir /var/lib/mysql/
$ sudo chown mysql:mysql /var/lib/mysql/

$ sudo systemctl start mariadb.service

起動した!

データを戻してリカバリーモードで起動してみる

$ sudo cp -a /var/lib/mysql.20180216 /var/lib/mysql
$ sudo cp /etc/my.cnf /etc/my.cnf.`date +%Y%m%d`
$ sudo vi /etc/my.cnf
	[mysqld]
	innodb_force_recovery = 1
	:wq

$ sudo systemctl restart mariadb.service

起動する

mysqldumpでデータを抜き出す(クラッシュしているDBもわかるのを期待して)

$ mkdir mariadb
$ mysqldump -u USER DB_NAME_1 > /home/USER/mariadb/DB_NAME_1.dump -p
$ mysqldump -u USER DB_NAME_2 > /home/USER/mariadb/DB_NAME_2.dump -p

あれ?
全部抜けた!!

今回は原因箇所が特定できなかったので、
初期化してから復元する事に・・・

sudo vi /etc/my.cnf
	[mysqld]
	#innodb_force_recovery = 1
	:wq

$ sudo rm -rf /var/lib/mysql
$ sudo mkdir /var/lib/mysql/
$ sudo chown mysql:mysql /var/lib/mysql/
$ sudo systemctl start mariadb.service

$ sudo mysql_secure_installation 
$ mysql -u root -p
MariaDB [(none)]> CREATE DATABASE `DB_NAME_1`;
MariaDB [(none)]> CREATE DATABASE `DB_NAME_2`;
MariaDB [(none)]> CREATE USER 'USER'@'localhost' IDENTIFIED BY 'PASSWORD';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

$ sudo mysql -u USER -D DB_NAME_1 < /home/USER/mariadb/DB_NAME_1.dump -p
$ sudo mysql -u USER -D DB_NAME_2 < /home/USER/mariadb/DB_NAME_2.dump -p

めでたしめでたし

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください