データのバックアップとリストア
Jijiのデータをバックアップ/リストアする手順を解説します。
エージェントのコードやバックテストの結果、通知、ログ、設定情報などすべてのデータは、 MongoDB に格納されています。
このデータをバックアップすれば、あとで環境を復元できます。
MongoDB 内のデータのうち、利用者のメールアドレス、およびSMTPサーバーのアカウント/パスワードは、暗号化して格納されています。
暗号化には以下のキーを使用しており、この値が変わるとデータを復号できなくなります。
- Herokuの場合、セットアップ時に内部で生成される
SECRET_KEY変数 - AWS/Dockerの場合、
docker-compose.ymlのUSER_SECRET変数
別の環境にデータを移した場合など、この値が変わった場合は、リストア後に設定画面から値を再設定する必要がありますのでご注意ください。
mongodump mongorestore など MongoDB Tools に含まれるコマンドが必要です。
ご利用の環境に合わせたものを、こちらから事前にインストールしておいてください。
Herokuにインストールしている場合
前準備:
Heroku にインストールした場合、クラウド型のMongoDBサービスの MongoLab を利用するように設定されています。
最初に、 MongoLab の管理画面にアクセスし、データベースのホスト名とデータベース名を取得します。
また、バックアップを実行するユーザーも作成します。
-
Heroku にログインして、
Dashboardからアプリを選択します。
-
Add-onsのMongoLabをクリックします。
-
MongoLabの管理画面が開くので、データベースのホスト名とデータベース名をメモしておきます。
-
次に
Usersタブを選択して、Add database userからバックアップで使用するユーザーを作成します。
以上で前準備は終わりです。
バックアップ:
以下を実行します。
$ mongodump -h <データベースホスト名> -d <データベース名> -u <バックアップ用ユーザー名> -p <バックアップ用ユーザーのパスワード> -o <バックアップの保存先ディレクトリ>バックアップの保存先ディレクトリの下にデータベース名でディレクトリが作成され、その中にバックアップデータが出力されます。リストア時には、データベース名のディレクトリを指定します。
リストア:
システムを一旦停止します。
$ heroku ps:scale web=0 --app <Herokuのアプリ名>MongoLab管理画面のCollectionsタブから、すべてのコレクションを削除します。

以下を実行してデータベースをリストアします。
$ mongorestore --batchSize=100 -h <データベースホスト名> -d <データベース名> -u <バックアップ用ユーザー名> -p <バックアップ用ユーザーのパスワード> <バックアップの保存先ディレクトリ>システムを再起動します。
$ heroku ps:scale web=1 --app <Herokuのアプリ名>新しく構築した環境にデータを移した場合は、メールアドレスとSMTPサーバーの設定を再度行ってください。
AWS,Dockerにインストールしている場合
バックアップ:
jiji_mongodb コンテナが動作している状態で、以下を実行します。
$ mongodump -d jiji --port <mongodbが動作しているポート:デフォルト27018> -o <バックアップの保存先ディレクトリ>バックアップの保存先ディレクトリの下にデータベース名でディレクトリが作成され、その中にバックアップデータが出力されます。リストア時には、データベース名のディレクトリを指定します。
リストア:
システム全体を一旦停止し、jiji_mongodb コンテナだけを起動します。
$ sudo docker-compose stop
$ sudo docker start jiji_mongodbjiji_mongodb コンテナの jiji データベースを削除します。
$ mongo --port <mongodbが動作しているポート:デフォルト27018>
> show dbs
jiji 0.203GB
local 0.078GB
> use jiji
switched to db jiji
> db.dropDatabase()
{ "dropped" : "jiji", "ok" : 1 }
> show dbs
local 0.078GB
> exit以下を実行してデータベースをリストアします。
$ mongorestore -d jiji --batchSize=100 --port <mongodbが動作しているポート:デフォルト27018> <バックアップの保存先ディレクトリ>システムを再起動します。
$ sudo docker-compose start新しく構築した環境にデータを移した場合は、メールアドレスとSMTPサーバーの設定を再度行ってください。