PowerCMS X のデータベースバックアップとリストア
PowerCMS X をインストールしたら、一番最初にバックアップとリストアのテストをオススメします。構築作業が進むと、なかなかリストアテストができなくなるので、早めの実施がよいですね。
私のサーバー環境は Rocky Linux で運用していて、 PowerCMS X ディレクトリは以下になっています。
/var/www/html/PowerCMSX
最初にバックアップフォルダを作ります。
場所は下記にしました。
/var/www/backup
フォルダを作成するコマンドです。
管理者になっておくと良いですね。
合わせてパーミッションも調整しましょう。
sudo su
mkdir /var/www/backup
chmod 777 /var/www/backup
chown apache: /var/www/backup
config.json を修正します。
vi /var/www/html/PowerCMSX/config.json
ファイルの最下部でよいので、追記しましょう。
json のお約束として、最後の行はカンマが不要なのでお気を付けください。
"backup_dir" : "/var/www/backup/",
"mysql_path" : "/bin/mysql",
"mysqldump_path" : "/bin/mysqldump",
"backup_compress" : "zip",
"backup_rotate" : "30"
backup_dir は作成したバックアップフォルダのパスです。
mysql_pathは下記コマンドの結果を記述します。
which mysql
mysqldump_path は下記コマンドの結果を記述します。
which mysqldump
backup_compress は圧縮形式ですので、zip でよいですね。
zipがインストールされていない場合は下記のコマンドを実行してください。
dnf install zip unzip
// php-zip もインストールしておきましょう !
dnf -y install php-zip
backup_rotate は世代管理です。バックアップファイルを何個作るかの設定になります。ディスクの空き容量で決めてください。最初のうちはDBの容量が少ないと思うので、世代管理の設定数は多めでよいかと思います。
コマンドを実行してみます。apache ユーザーで実行する習慣をつけると良いですね。
cd /var/www/html/PowerCMSX
sudo -u apache php ./tools/backupSQL.php
コンソールに「データベースをバックアップしました。」と表示されたら成功です。
実際にバックアップファイルが作成されたか確認します。
ls -l /var/www/backup/
ファイルはできていました。
-rw-r--r-- 1 apache apache 1531685 Dec 6 21:11 sqldump.sql.zip
もう一度、backupSQL.php を実行して、backup フォルダの中身を確認してみてください。ファイルが複数できています。
-rw-r--r-- 1 apache apache 1531685 Dec 6 21:11 sqldump-1.sql.zip
-rw-r--r-- 1 apache apache 1531713 Dec 6 21:13 sqldump.sql.zip
backup_rotate を 30 で設定をしたので、最大で30ファイル作成されます。31ファイル目は一番古い日付のデータが自動で削除されます。
「sqldump.sql.zip」という名称のファイルが最新のファイルになります。連番が付与されるファイルは過去のデータで、数字が大きくなるほど古いデータです。
毎日2時に自動でバックアップをしたいので、apache ユーザーの cron に登録します。
sudo crontab -u apache -e
以下の行を追加します。
0 2 * * * cd /var/www/html/PowerCMSX; php ./tools/backupSQL.php
あとは翌日にファイルが作成されているか確認します。
ls コマンドは -ltr を付けると更新日の昇順でリスト表示できるので便利です。
ls -ltr /var/www/backup/
続いてリストアです。バックアップファイルを確認します。
ll /var/www/backup/
sqldump.sql.zip が存在していたら解凍します。
cd /var/www/backup
sudo -u apache unzip sqldump.sql.zip
拡張子.sql が作成されたと思います。.sql データは backup フォルダ内に1つだけにしてください。
リストアが成功したかを確認するために、 リストア実行の直前に PowerCMS X 管理画面でテスト用の記事データを作成しておいてください。リストア後にテストデータが消えていれば成功です。
リストアコマンドを実行します。
cd /var/www/html/PowerCMSX
sudo -u apache php tools/restoreSQL.php
メッセージが表示されます。緊張しますね。y を入力してリターンキーを押してください。
データベースをリストアしてもよろしいですか? (y/n):
サーバースペックにもよりますが、結構時間がかかります。以下のメッセージが表示されたら成功です。
データベースをバックアップからリストアしました。
リストア直前に作成したテストデータにアクセスして、データが消えていることを確認します。
あとは、過去に登録したデータが問題なく表示されていれば成功です。お疲れ様でした。
リストアコマンドはオプションでファイルパスを指定することも可能です。
sudo -u apache php tools/restoreSQL.php --file=/var/www/backup/sqldump.sql
公式のドキュメントを見ると、sqldump.sql.gz と記載があるので、圧縮ファイルのままリストアできるかと思いましたが、.zip はできませんでした。
以上です。