EC-CUBE3、EC-CUBE4のバックアップ
EC-CUBEはECサイトを運営するためのものですので、バックアップが何よりも重要です。
もし何らかの問題が発生し顧客データが失われたらと考えると…夜も眠れませんよね。
データベースの定期バックアップ
特に重要なことは、MySQLやPostgreSQLで作られているデータベースの定期バックアップを取ることです。
データベースは注文や顧客の情報が保存されているため、ファイルのバックアップよりも優先度が高いのです。サーバーに何かあっても、データベースさえあれば顧客対応や出荷などの運用を続けれられる可能性が高くなります。
手動でバックアップを取るかレンタルサーバーによっては1日ごとの定期バックアップサービスを提供しているところもありますので、ぜひサーバー会社に確認してみてください。
例えばエックスサーバーでは、標準サービスでMySQLデータベース「過去14日分」のデータを保持しています。ただし1日1回の取得であることが注意点です。
自分でデータベースをバックアップ
自分でバックアップするにはシェルスクリプトとCronを利用しましょう。エックスサーバー などCronとSSHが使えるサーバーであれば、バックアップ取得頻度も自分で決めることができます。
バックアップのためのスクリプトをbackupdb.shとして書きます。タイムスタンプをファイル名にして保存します。
cd "$(dirname "$0")"
ec_filename=ec`date "+%Y%m%d_%H%M%S"`.sql
mysqldump --single-transaction -u ユーザー名 -pパスワード -h localhost データベース名 | gzip > ../data/${ec_filename}.gz
CRONを3時間おきに設定する例
0 */3 * * * sh /home/xb000000/example.com/script/backupdb.sh
ソースファイルのバックアップ
次にファイルのバックアップを行います。ソースは基本的にGit管理しているのでバックアップ不要では?と思われる方もいるでしょうが、アップロードした画像のようにGit管理されていないファイルもまとめてバックアップしておくと何かあったときに役立ちます。
tar で1つの圧縮ファイルにまとめて保存しておきましょう。サイズが大きいのでが、最低でも数世代は残すようにしましょう。
バックアップファイルの保管方法
データベースとソースファイルの保管方法は、そのままサーバーに置いておくよりも、AWS S3などのクラウドストレージに自動保管することがおすすめです。
AWS-CLIをインストールできるサーバーであれば、S3へのアップロードも完全に自動化可能です。
PCへダウンロードしても良いのですが、サイズがかなり大きくなるため容量を圧迫します。
復元方法
まず、バックアップしてあるEC-CUBEのデータベースを新しいサーバーへインポートします。
次に、全ファイルをFTPやSSHでアップロードしてやります。
最後に3系であればapp/config/eccube/database.yml、4系であれば.envに書かれているDBログイン情報を新しいサーバーで使用するデータに書き換えます。
基本的にはこれだけでサーバーの移転を行った上でEC-CUBEの運用を再び始めることができます。
自動バックアップ
バックアップは自動で定期的に保存するのが好ましいと思いますが、サーバー会社がサービスを提供していないこともあります。
理想を言えば、やはりVPSやクラウドサーバー・専用サーバーを使用しサーバーを自由に使える状況であれば自動バックアップや復元は非常に楽になります。
レンタルサーバーでは1日1回バックアップを取った時点への復元しかできませんが、VPSであれば問題が発生する直前のデータへ復元ができるなどの違いがあります。
サーバーによって方法は異なりますが、プログラムや設定で自動バックアップに対応できることも多いので自動バックアップをお考えの方はぜひご検討ください。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。