执行大量插入时,MongoDB复制副本不同步

执行大量插入时,MongoDB复制副本不同步,mongodb,apache-pig,Mongodb,Apache Pig,我有一个使用MongoDB v3.2.4的三人副本集。每个成员都是一个具有8个内核和8GB RAM的VM,在正常操作中,这些节点的CPU和内存消耗非常低 我有一个60GB的数据库(3000万个文档),每个月都会被一个用Pig编写的Map/Reduce作业重新加载一次。在此作业期间,集群接收30k insert/s,几分钟后,辅助设备变得不同步 当前oplog大小为20GB(已从默认值修改),但这无法解决复制同步问题 我不知道再次修改oplog大小是否有帮助。我担心的是,复制似乎是在主服务器上没有

我有一个使用MongoDB v3.2.4的三人副本集。每个成员都是一个具有8个内核和8GB RAM的VM,在正常操作中,这些节点的CPU和内存消耗非常低

我有一个60GB的数据库(3000万个文档),每个月都会被一个用Pig编写的Map/Reduce作业重新加载一次。在此作业期间,集群接收30k insert/s,几分钟后,辅助设备变得不同步

当前oplog大小为20GB(已从默认值修改),但这无法解决复制同步问题

我不知道再次修改oplog大小是否有帮助。我担心的是,复制似乎是在主服务器上没有负载的情况下完成的。由于我的插入作业持续1小时,这是否意味着我需要一个与数据库大小相同的oplog

有没有办法告诉MongoDB在复制上投入更多的精力,并在接受插入和复制之间实现更平衡的工作负载

有没有办法告诉mongo在复制上投入更多精力,以便在接受插入和复制这些插入之间有一个更平衡的工作负载

为了确保数据已复制到二级数据库(并限制插入),您应该将数据量增加到
w:maist
。默认写入问题(
w:1
)仅确认主设备已接受写入操作,因此,如果您的辅助设备无法在较长的插入时间内保持同步,它们最终将失去同步(如您所经历的)

您可以将多数票作为一种选择纳入您的计划,例如:


MongoDB不会实时复制,但它更具有最终一致性。如果主服务器负载过大,此延迟可能会延长。等待一段时间,看看二级数据是否一致。非常感谢,在大多数节点上强制复制应该可以通过跳过复制功能来解决问题。因为对我们来说,解除工作不是一个问题,所以添加这一点应该是可以接受的。
STORE data INTO     
  'mongodb://user:pass@db1.example.net,db2.example.net/my_db.my_collection?replicaSet=replicaSetName&w=majority'
USING com.mongodb.hadoop.pig.MongoInsertStorage('', '');