6.2.5. MongoDB
- 对于 OpenShift v3:MongoDB shell 版本 3.2.6
- 对于 OpenShift v2:MongoDB shell 版本 2.4.9
通过
ssh
命令远程访问 v2 应用程序:$ rhc ssh <v2_application_name>
运行 mongodump,使用
-d <database_name> -c <collections>
指定单个数据库。如果没有这些选项,转储所有数据库。每个数据库在其自己的目录中转储:$ 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 目录中的本地机器:
$ 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
命令并编辑:$ oc get -o json --export template mongodb-persistent -n openshift > mongodb-24persistent.json
编辑 mongodb-24persistent.json 的第 80 行;将
mongodb:latest
替换为mongodb:2.4
。$ 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 中:
$ oc rsync local/path/to/mongodump <mongodb_pod_name>:/var/lib/mongodb/data $ oc rsh <mongodb_pod>
在 MongoDB pod 中,为您要恢复的每个数据库完成以下内容:
$ 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
检查数据库是否已恢复:
$ mongo admin -u $MONGODB_USER -p $MONGODB_ADMIN_PASSWORD $ use dbname $ show collections $ exit
从 pod 中删除 mongodump 目录:
$ rm -rf /var/lib/mongodb/data/mongodump
支持的 MongoDB 环境变量
v2 | v3 |
---|---|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
|