2013-10-09 99 views
0

是否有可能將單個服務器的集合複製到集羣?我在測試服務器(單機)上有一個集合,我將集合複製到另一個服務器(集羣),我不確定是否可以使用重複集合。從單個服務器到集羣的重複集合

我想複製一次收集。

+0

你只是想複製一次,還是希望集合在單一服務器和集羣之間實時同步? – Philipp

+0

我更新了問題。 – Katja

回答

1

首先使用mongoexport到集合導出到文件中。

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

當收集並不目標上已存在碎片或者還沒有被配置爲分片,你應該這樣做,現在通過連接到與蒙戈外殼的mongos實例,並使用命令:

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

然後在目標上使用mongoimport來導入集合。

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

兩個mongoimportmongoexport具有可選--host--port參數從/導出導入到遠程服務器。但我建議你自己將文件複製到目標服務器。首先,這應該更快。其次,在安全配置的網絡中,無論如何,您都不應該能夠從同一臺機器訪問測試數據庫和生產數據庫,至少不能沒有身份驗證。

+1

我更喜歡mongodump和mongorestore,它會以bson格式導出數據。導出爲json時,數值的數據類型不會保留。這會導致目標應用程序中的數字格式異常。 – titogeo

0

要使集羣能夠使用集羣,您需要具有分片選項。複製測試集合不會那樣做。

您可以創建正確的分片選擇一個新的集合,然後測試收集的項目複製到源服務器上

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