概要

redmineの障害に備え、DBのバックアップ/リストアの検証試験を行いました。

これはあくまでもDBのみでの結果です。添付ファイルやソースに関しては検討課題となります。

MySQL Dumpを行う

まずは公式サイトのように

https://redmine.jp/faq/system_management/backup/

mysqldump -u [redmineのDBユーザ] -p[DBパスワード] [DB名] > /バックアップ先のパス/backup.sql

と入力したら、以下のエラーが出てきました。

mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

1つめのWarning:

[以下引用]
これは、「警告:コマンドラインインターフェイスでパスワード使うのは安全ではない場合があります」というメッセージで、パスワードをそのままシェルスクリプトに記述するのは望ましくない、ということです。
(中略)
このWarningは、パスワードを外部ファイルから読み出すようにすれば出なくなります。

https://resource-sharing.co.jp/mysql-command-password-warning/

そこで、MySQLのユーザー名とパスワードを保存したファイルを別に作成します。

外部ファイル作成

vi dbaccess.conf

ファイル内容

[client]
user = [ユーザー名]
password = [パスワード]
host = localhost
# DBの接続先。

作成後、

mysql --defaults-extra-file=dbaccess.conf
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

とログインできることを確認しました。

Warning解消後のmysqldumpエラー

この外部ファイルを用いてmysqldumpを試みましたが

mysqldump --defaults-extra-file=dbaccess.conf -h localhost redmine > ./test.sql
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

このエラーを検索したところ以下の記事に行き当たりました。

https://www.koikikukan.com/archives/2021/02/17-235555.php

MySQLを5.7にバージョンアップしたことで、PROCESS特権が必要になるようです。
テーブルスペース情報をダンプする必要がないユーザーは、-no-tablespacesオプションを指定してmysqldumpを呼び出すことにより、前述の要件を回避できます。

そこで、もう一度試します。

mysqldump --defaults-extra-file=dbaccess.conf --no-tablespaces -h [DBサーバ] [DB名] > backup.sql

今度はエラーがありません。DBのバックアップが取れたことでいよいよリストア試験を行います。

DBリストア確認

リストア前準備

まず、バックアップが取れた状況で、トップページを編集します。


 ↓

リストア

mysql --defaults-extra-file=dbaccess.conf redmine < [取得したバックアップsql]
sudo systemctl restart apache2

httpdサービス再起動後、

と、バックアップを取った直後に切り戻った後に戻りました。

ToDo

  • 定期バックアップのスケジュールをとる
  • 添付ファイルのバックアップを行う

などがありますけれど、まずはクリティカルな部分の検証が完了しました。