从单个服务器到群集的重复收集

时间:2013-10-09 07:53:08

标签: mongodb

是否可以将集合从单个服务器复制到集群?我在测试服务器(单机)上有一个集合,我将集合复制到另一个服务器(集群),我不确定我是否可以使用重复集合。

我想复制一次收藏。

2 个答案:

答案 0 :(得分:1)

首先在源服务器上使用mongoexport将集合导出到文件中。

mongoexport --db yourDB --collection yourCollection --out yourCollection.json

当目标分片上尚不存在该集合或尚未配置为分片时,您现在应该通过使用mongo shell连接到mongos实例并使用以下命令来执行此操作:

sh.shardCollection( "yourDatabase.yourCollection", { yourDesiredShardKey: 1 } )

然后在目的地上使用mongoimport来导入集合。

mongoimport --db yourDB --collection yourCollection --file yourCollection.json

mongoimportmongoexport都有可选的--host--port参数从/导出到远程服务器。但我建议您自己将文件复制到目标服务器。首先,这应该更快。其次,在安全配置的网络中,您无论如何都不能从同一台计算机访问测试和生产数据库,至少在没有身份验证的情况下。

答案 1 :(得分:0)

对于使用群集功能的集合,您需要具有分片选项。复制测试集合不会那样做。

您可以使用正确的分片选项创建新的集合,然后将测试集合的项目复制到其中

db.test.mycollection.find().forEach( function(x){db.otherdb.othercollection.insert(x)} );