6.2.5. MongoDB
- OpenShift v3 の場合: MongoDB シェルバージョン 3.2.6
- OpenShift v2 の場合: MongoDB シェルバージョン 2.4.9
ssh
コマンドを使用して、v2 アプリケーションにリモートからアクセスします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow rhc ssh <v2_application_name>
$ rhc ssh <v2_application_name>
-d <database_name> -c <collections>
で単一のデータベースを指定して、mongodump を実行します。このオプションがないと、データベースはすべてダンプされます。各データベースは、独自のディレクトリーにダンプされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mongodump -h $OPENSHIFT_MONGODB_DB_HOST -o app-root/repo/mydbdump -u 'admin' -p $OPENSHIFT_MONGODB_DB_PASSWORD cd app-root/repo/mydbdump/<database_name>; tar -cvzf dbname.tar.gz exit
$ mongodump -h $OPENSHIFT_MONGODB_DB_HOST -o app-root/repo/mydbdump -u 'admin' -p $OPENSHIFT_MONGODB_DB_PASSWORD $ cd app-root/repo/mydbdump/<database_name>; tar -cvzf dbname.tar.gz $ exit
dbdump を mongodump ディレクトリーのローカルマシンにダウンロードします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir mongodump rhc scp -a <v2 appname> download mongodump \ app-root/repo/mydbdump/<dbname>/dbname.tar.gz
$ mkdir mongodump $ rhc scp -a <v2 appname> download mongodump \ app-root/repo/mydbdump/<dbname>/dbname.tar.gz
v3 で MongoDB Pod を実行します。最新のイメージ (3.2.6) には mongo-tools が含まれないので、
mongorestore
またはmongoimport
コマンドを使用するには、デフォルトのmongodb-persistent テンプレートを編集して、mongo-tools, “mongodb:2.4"
を含むイメージタグを指定します。このため、以下のoc get --export
コマンドを使用して、編集することが必要です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get -o json --export template mongodb-persistent -n openshift > mongodb-24persistent.json
$ oc get -o json --export template mongodb-persistent -n openshift > mongodb-24persistent.json
mongodb-24persistent.json の L80 を編集します。
mongodb:latest
はmongodb:2.4
に置き換えてください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-app --template=mongodb-persistent -n <project-name-that-template-was-created-in> \ MONGODB_USER=user_from_v2_app -p \ MONGODB_PASSWORD=password_from_v2_db -p \ MONGODB_DATABASE=v2_dbname -p \ MONGODB_ADMIN_PASSWORD=password_from_v2_db oc get pods
$ oc new-app --template=mongodb-persistent -n <project-name-that-template-was-created-in> \ MONGODB_USER=user_from_v2_app -p \ MONGODB_PASSWORD=password_from_v2_db -p \ MONGODB_DATABASE=v2_dbname -p \ MONGODB_ADMIN_PASSWORD=password_from_v2_db $ oc get pods
mongodb Pod の実行中に、データベースのアーカイブファイルを v3 MongoDB Pod にコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsync local/path/to/mongodump <mongodb_pod_name>:/var/lib/mongodb/data oc rsh <mongodb_pod>
$ oc rsync local/path/to/mongodump <mongodb_pod_name>:/var/lib/mongodb/data $ oc rsh <mongodb_pod>
MongoDB Pod で、復元する各データベースについて以下を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /var/lib/mongodb/data/mongodump tar -xzvf dbname.tar.gz mongorestore -u $MONGODB_USER -p $MONGODB_PASSWORD -d dbname -v /var/lib/mongodb/data/mongodump
$ cd /var/lib/mongodb/data/mongodump $ tar -xzvf dbname.tar.gz $ mongorestore -u $MONGODB_USER -p $MONGODB_PASSWORD -d dbname -v /var/lib/mongodb/data/mongodump
データベースが復元されたかどうかを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mongo admin -u $MONGODB_USER -p $MONGODB_ADMIN_PASSWORD use dbname show collections exit
$ mongo admin -u $MONGODB_USER -p $MONGODB_ADMIN_PASSWORD $ use dbname $ show collections $ exit
Pod から mongodump ディレクトリーを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rm -rf /var/lib/mongodb/data/mongodump
$ rm -rf /var/lib/mongodb/data/mongodump
サポート対象の MongoDB 環境変数
v2 | v3 |
---|---|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
|