我在不同的主机(dev& stage)上有两个Mongo实例,可以通过ssh访问。
如何从 dev 实例上的集合中复制记录并将其插入阶段实例?
已尝试的步骤:
尝试使用mongodump和mongorestore,但没有任何用处,因为我的mongo实例可通过SSH访问。
答案 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 ....