データーベースが死んだので、もちろんWEBサーバーにエラーが出てアクセスできない
早急に直したい。でもデーターベース(以後:DB)が動いていないのでmysqldumpは使えないので、DBのデーター領域(デフォルトは/var/lib/mysql/だが私は変更している)をバックアップ(実は毎日午前3時に全てのDBのバックアップはあるのですが、この時点で既に変更があるので、ここからリストアはとりあえずやらない)DBが止まっていることを確認後
$ sudo \cp -af DBのデーたDIR/* コピー先のDIR
$ sudo rm -rf DBのデータDIR/*
これで、DBをスターとすると必要なファイルを自動で作るので
$ sudo systemctl start mariadb
$ sudo systemctl status mariadb
で確認。OK動いている。ではリストア
$ sudo \cp -af バックアップしてあったDIR/* DBのデータDIR
そしてDBスタート
$ sudo systemctl start mariadb
Job for mariadb.service failed because the control process exited with error code.
See “systemctl status mariadb.service” and “journalctl -xeu mariadb.service” for details.
あちゃー、又エラー
$ journalctl -xeu mariadb.service
長いので要点
Database MariaDB is probably initialized in /Rails/mysql already, nothing is done.
If this is not the case, make sure the /Rails/mysql is empty before running mariadb-prepare-db-dir.
ようは、最初と同じ、DBのデータDIRを空にしてスタートしろと
だったらログを見てみよう
$ sudo gedit /var/log/mariadb/mariadb.log
抜粋
-
[ERROR] File '/Rails/mysql/aria_log_control' not found (Errcode: 13 "Permission denied") -
[ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable - [ERROR] InnoDB: Missing FILE_CHECKPOINT …
ibdata1は書き込み可だし、オーナーもmysql なのに!
色々調べると、コピー元の壊れた(または整合性の合わない)ib_logfile を読み込んでしまっていることが原因です。ということだ。だったら、ib_logfileを消せば、起動時に作ってくれるので、一様DBが止まっている事を確認後
$ sudo rm -f /Rails/mysql/ib_logfile*
念の為、所有者や権限を設定
$ sudo chown -R mysql:mysql /Rails/mysql
権限の変更(ディレクトリは755、ファイルは660)
$ sudo find /Rails/mysql -type d -exec chmod 755 {} \;
$ sudo find /Rails/mysql -type f -exec chmod 660 {} \;
私はSELinuxはdisableしているので、
$ sudo syatemctl start mariadb
$ sudo systemctl status mariadb
やっとアクティブになったので、WEBを確認、
バッチリ,動いている。バンザーイ