如何从 OpenShift 进行 mongodump 并在 MongoDB 2.4.9 上本地进行 mongorestore?

8

我自己刚刚完成了这个操作(因为RockMongo的导入和导出出现了问题),所以在这里发布一下。

请注意,这是针对MongoDB 2.4.9版本及其相应版本的mongodump和mongorestore进行的。


1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - ramdog
这是来自旧帖子的内容,因此在采取任何行动之前,请务必阅读有关该主题的官方文档并备份等等。但是,反思所涉及的逻辑可能会有所帮助:https://forums.openshift.com/how-to-perform-mongorestore-on-openshift-online - user1063287
1个回答

22

首先阅读与您版本相关的文档,备份数据,确保以下解决方案适用于您的情况等。

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=******

您可以运行以下命令来显示项目中的所有 pod:
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

所以我不知道这是否会在执行并需要确保和版本兼容时成为问题:/。 20/11/18更新结束

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

在本地命令行中,进入您下载zip文件的目录:
cd /var/www/html

解压转储文件夹

unzip dump.zip -d dump

查看mongorestore的版本,确保一切兼容:

mongorestore --version
mongorestore version 2.4.9

在这一点上,我删除了RockMongo中所有本地*对应的*数据库,以便还原过程可以从头开始创建它们。 mongorestore
mongorestore dump

默认使用的主机和端口为localhost27017

1
你也可以使用 rhc scp 进行下载 rhc scp dev download {localpath} {remotepath} - jay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接