鍍金池/ 問答/數(shù)據(jù)庫/ MongoDB集群如何高效的復(fù)制Collection

MongoDB集群如何高效的復(fù)制Collection

目前有一套MongoDB集群,集群中存在Collection A,新建一個Collection B,想要通過Mongos將Collection A中的數(shù)據(jù)復(fù)制到Collection B中,請問有哪些高效的實現(xiàn)方式?

目前了解到的復(fù)制Collection的方法有兩種:
1、官方文檔中提到的db.cloneCollection(from, collection, query),該方法不能通過Mongos進(jìn)行操作,而且是將遠(yuǎn)程的Collection復(fù)制到本地,看起來不太符合需求。
2、使用腳本遍歷Collection A,逐條將數(shù)據(jù)插入到Collection B中。

db.復(fù)制源表.find().forEach(function(x){
    db.目的表.insert(x);
})

這種實現(xiàn)比較符合需求,但是存在另外一個問題:逐條查詢源表并插入到新表,必定會有很大開銷(數(shù)據(jù)數(shù)量大概在4000w條,100GB左右)。

想請教各位大牛,有沒有什么更加高效便捷的方法實現(xiàn)題設(shè)需求?如果沒有更便捷的方法,那么上述的兩種方法存在哪些可以改進(jìn)的地方呢?
謝謝!

回答
編輯回答
帥到炸

export出來,再import進(jìn)去

2017年4月15日 12:29
編輯回答
痞性

你的第二種方法,你可以監(jiān)控你的MongoDb集群的狀態(tài),當(dāng)比較閑置的再去循環(huán)復(fù)制你的數(shù)據(jù),若監(jiān)控到你的集群負(fù)載比較大了,就停止復(fù)制。等到監(jiān)控到下次集群閑置的時候,在重上次復(fù)制結(jié)束的地方開始

2018年2月22日 05:02