如何在mongodb中将数据库从一台服务器复制到另一台服务器

时间:2018-12-18 10:28:01

标签: linux mongodb nginx meteor

我正在尝试将Nginx托管的生产服务器中的数据库[mongodb]复制到本地开发环境设置[linux计算机]。

我尝试了以下网址中给出的解决方案 How do I copy a database from one MongoDB server to another?

但是当我建立ssh隧道并尝试复制时,出现以下错误

db.copyDatabase("admin","testadmin","localhost:27018")
{
        "ok" : 0,
        "errmsg" : "couldn't connect to server localhost:27018, connection attempt failed"
}

如果我尝试直接在目标服务器中复制数据库。我收到以下错误

db.copyDatabase("admin","testadmin","mongodb://<remotehostname>:27017")
{
        "operationTime" : Timestamp(1545126863, 1),
        "ok" : 0,
        "errmsg" : "Must specify set name for replica set ConnectionStrings",
        "code" : 9,
        "codeName" : "FailedToParse",
        "$clusterTime" : {
                "clusterTime" : Timestamp(1545126863, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

请帮助。我被问题困扰了两天。我不确定是否可以使用mongodump和还原。我在远程服务器上使用mongo 3.4版,在本地服务器上使用mongo 3.6版。这可能是个问题吗?

我也尝试添加副本集,但出现以下错误。如何找到副本集名称?

db.copyDatabase("admin","testadmin","mongodb://<remotehostname>:27017/?replicaSet=test")
{
        "operationTime" : Timestamp(1545117923, 135),
        "ok" : 0,
        "errmsg" : "Bad digit \"/\" while parsing 27017/?replicaSet=test",
        "code" : 9,
        "codeName" : "FailedToParse",
        "$clusterTime" : {
                "clusterTime" : Timestamp(1545117923, 135),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

1 个答案:

答案 0 :(得分:0)

替代方法可能是使用mongoDump / mongorestore。

https://stackoverflow.com/a/22201759/5107937