目前有一套MongoDB集群,集群中存在Collection A,新建一个Collection B,想要通过Mongos将Collection A中的数据复制到Collection B中,请问有哪些高效的实现方式?
目前了解到的复制Collection的方法有两种:
1、官方文档中提到的db.cloneCollection(from, collection, query)
,该方法不能通过Mongos进行操作,而且是将远程的Collection复制到本地,看起来不太符合需求。
2、使用脚本遍历Collection A,逐条将数据插入到Collection B中。
db.复制源表.find().forEach(function(x){
db.目的表.insert(x);
})
这种实现比较符合需求,但是存在另外一个问题:逐条查询源表并插入到新表,必定会有很大开销(数据数量大概在4000w条,100GB左右)。
想请教各位大牛,有没有什么更加高效便捷的方法实现题设需求?如果没有更便捷的方法,那么上述的两种方法存在哪些可以改进的地方呢?
谢谢!
你的第二种方法,你可以监控你的
MongoDb
集群的状态,当比较闲置的再去循环复制你的数据,若监控到你的集群负载比较大了,就停止复制。等到监控到下次集群闲置的时候,在重上次复制结束的地方开始