如何将记录从一个mongo集合复制到另一个mongo集合,这些集合驻留在可通过ssh访问的不同主机上

时间:2018-04-11 10:26:01

标签: bash mongodb mongo-shell

我在不同的主机(dev& stage)上有两个Mongo实例,可以通过ssh访问。

如何从 dev 实例上的集合中复制记录并将其插入阶段实例?

已尝试的步骤:

尝试使用mongodump和mongorestore,但没有任何用处,因为我的mongo实例可通过SSH访问。

1 个答案:

答案 0 :(得分:1)

使用SSH时,您可以将MongoDB端口转发到本地计算机并使用常用的MongoDB工具:

# first terminal
ssh -L27017:localhost:27017 mongohostA

# second terminal
ssh -L27018:localhost:27017 mongohostB

# third terminal
mongodump -h localhost -p 27017 ....
mongorestore -h localhost -p 27018 ....

您在此处执行的操作是将本地计算机端口27017连接到mongohostA MongoDB,将本地计算机端口27018连接到mongohostB MongoDB。然后像往常一样使用MongoDB工具,但配置不同的端口。在此处查找有关这些工具的文档:https://docs.mongodb.com/manual/reference/program/mongodump/

要使用shellcript工作,我们使用auto closing SSH tunnels。在此示例中,我们还使用--query选项mongodump

#!/bin/bash
ssh -f -L27017:localhost:27017 mongohostA sleep 10

mongodump -h localhost -p 27017 -d databaseName -c collectionName \
          --query '{"_id": yourSingleDocumentID }' ....

ssh -f -L27018:localhost:27017 mongohostB sleep 10

mongorestore -h localhost -p 27018 ....