我自己刚刚完成了这个操作(因为RockMongo的导入和导出出现了问题),所以在这里发布一下。
请注意,这是针对MongoDB 2.4.9版本及其相应版本的mongodump和mongorestore进行的。
我自己刚刚完成了这个操作(因为RockMongo的导入和导出出现了问题),所以在这里发布一下。
请注意,这是针对MongoDB 2.4.9版本及其相应版本的mongodump和mongorestore进行的。
首先阅读与您版本相关的文档,备份数据,确保以下解决方案适用于您的情况等。
http://docs.mongodb.org/v2.4/reference/program/mongodump/
http://docs.mongodb.org/v2.4/reference/program/mongorestore/
获取OC命令行界面
以下步骤使用OpenShift命令行界面(运行oc
命令)。
您可以通过访问以下链接找到适用于您操作系统的下载链接:
OpenShift Online Console
> [点击帮助图标]
> 命令行工具
该位置还包含登录所需的命令。
它看起来像这样:
oc login https://api.pro-ap-southeast-2.openshift.com --token=******
oc get pods
开始20/11/18更新
我刚刚又重新查看了这些步骤,以下内容可能对其他人有帮助:
01)
要查看所有MongoDB环境变量,请从本地计算机运行:
oc exec mongodb-XX-XXXXX env
(摘自这里的评论)
02)
要执行转储,请进入OpenShift控制台中的pod终端:
OpenShift在线控制台
> 应用程序
> Pods
> MongoDB-**-*****
> 终端
然后输入以下内容:
mongodump --host MONGODB_SERVICE_HOST:MONGODB_SERVICE_PORT --username admin --password "MONGODB_ADMIN_PASSWORD"
admin
而不是环境变量MONGODB_USER
的值。2023-01-14T06:09:37.689+0000 writing admin.system.users to
2023-01-14T06:09:37.690+0000 done dumping admin.system.users (2 documents)
2023-01-14T06:09:37.690+0000 writing admin.system.version to
2023-01-14T06:09:37.692+0000 done dumping admin.system.version (2 documents)
2023-01-14T06:09:37.692+0000 writing <my-db-name-1>.<my-collection-name-1> to
2023-01-14T06:09:37.692+0000 writing <my-db-name-2>.<my-collection-name-2> to
2023-01-14T06:09:37.692+0000 writing <my-db-name-3>.<my-collection-name-3> to
2023-01-14T06:09:37.692+0000 writing users.users to
2023-01-14T06:09:37.694+0000 done dumping <my-db-name-1>.<my-collection-name-1> (100 documents)
2023-01-14T06:09:37.694+0000 writing <my-db-name-4>.<my-collection-name-4> to
2023-01-14T06:09:37.695+0000 done dumping <my-db-name-4>.<my-collection-name-4> (3 documents)
2023-01-14T06:09:37.695+0000 writing <my-db-name-5>.<my-collection-name-5> to
2023-01-14T06:09:37.696+0000 done dumping <my-db-name-5>.<my-collection-name-5> (1 document)
2023-01-14T06:09:37.707+0000 done dumping users.users (6 documents)
2023-01-14T06:09:37.709+0000 done dumping <my-db-name-3>.<my-collection-name-3> (13 documents)
2023-01-14T06:09:37.716+0000 done dumping <my-db-name-2>.<my-collection-name-2> (78 documents)
03)
如果您想要压缩dump文件夹,请在控制台中的pod终端执行以下操作:
# sanity check to see where you are
pwd
# returns /opt/app-root/src
# list the directory contents
ls
# returns dump
# zip the folder
tar czf my_dump.tar.gz dump
# list the directory contents again
ls
# returns dump my_dump.tar.gz
(从这里评论中获得)
04)
要下载文件夹,请在本地PC终端执行以下操作:
oc rsync mongodb-20-XXXXX:/opt/app-root/src/dump /c/Users/Your-Directory
或者如果你想下载压缩包文件,可以执行以下操作:
oc rsync mongodb-20-XXXXX:/opt/app-root/src/my_dump.tar.gz /c/Users/Your-Directory
如果您想将集合导出到.json
文件(而不是所有数据库的mongodump
),则可以从pod终端执行以下操作,然后使用上面显示的oc rsync
下载该文件:
mongoexport --host ***.**.**.** --port 27017 --authenticationDatabase admin --username admin --password "*******" --db <your-db-name> --collection <your-collection-name> --out my_collection_export.json
随机更新(14/01/23):
令人恼火的是,当我从Pod终端运行以下命令时,我无法看到正在使用的mongodump
版本:
mongodump --version
mongodump version: built-without-version-string
git version: built-without-git-spec
Go version: go1.8.5
os: linux
arch: amd64
compiler: gc
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
SSH登录
rhc ssh [app-name]
cd app-root/repo/
检查您拥有的mongodump版本:
mongodump --version
mongodump version 2.4.9
mongodump
以下命令将导出*所有*数据库。
mongodump --host $OPENSHIFT_MONGODB_DB_HOST:$OPENSHIFT_MONGODB_DB_PORT --username $OPENSHIFT_MONGODB_DB_USERNAME --password $OPENSHIFT_MONGODB_DB_PASSWORD
压缩包转储文件夹
zip -r dump.zip dump
退出SSH
exit
通过SCP下载
(将下面的环境变量替换为实际值)。
scp OPENSHIFT_APP_UUID@appname-username.rhcloud.com:~/app-root/repo/dump.zip /var/www/html
重新连接SSH并删除转储文件
rhc ssh [app-name]
cd app-root/repo/
rm -r dump
rm -r dump.zip
cd /var/www/html
解压转储文件夹
unzip dump.zip -d dump
查看mongorestore的版本,确保一切兼容:
mongorestore --version
mongorestore version 2.4.9
mongorestore dump
localhost
和27017
。