当前位置: 首页 > 知识库问答 >
问题:

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

夏俊杰
2023-03-14

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

是否有一种方法可以告诉MongoDB在复制上投入更多的精力,并在接受插入和复制之间有一个更平衡的工作负载?

共有1个答案

艾焱
2023-03-14

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

为了确保数据已经复制到次要服务器(并限制插入操作),您应该将写问题增加到W:modulation。缺省的写关注点(W:1)只确认主操作已经接受了写操作,因此,如果辅助操作在较长的插入时间内无法跟上,它们最终将失去同步(正如您所经历的那样)。

您可以在MongoDB连接字符串URI中包含大多数作为选项,例如:

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('', '');
 类似资料:
  • 查看,我看到状态为: 我不知道我能做什么来搞砸这件事。我想这应该管用。我怎么过去?

  • 我写了一个maven插件,我正在一些项目中使用它。在第一个项目中,它只有一次执行,我可以直接用 在第二个项目中,插件有多个执行,当我尝试上面的命令时,我最终失败了,因为插件尝试使用空参数执行。 请注意,在这两种情况下,插件在作为流程资源阶段的一部分执行时都可以正常工作。只有当我试图执行插件目标时,它才会失败。有人能帮我理解为什么第二个示例尝试使用空白参数执行吗? 第一个项目(一次执行-工程罚款):

  • 本文向大家介绍如何执行批量插入?相关面试题,主要包含被问及如何执行批量插入?时的应答技巧和注意事项,需要的朋友参考一下 首先,创建一个简单的 insert 语句:   然后在 java 代码中像下面这样执行批处理插入:

  • 问题内容: 我正在考虑使用Redis的协议进行批量插入,如下所述:http : //redis.io/topics/mass-insert 在我忙于编写代码来处理此问题之前,我只是想确保自己清楚什么是Redis要求进行此工作。 上面的链接建议使用大容量插入调用SET操作[SET myKey Value myValue],我需要创建一个命令,该命令可以在文件的多行或单个引号字符串中完成。 假设我不想

  • 我正在为SQL Server使用大容量插入命令,但由于某些原因,第一行没有插入。为什么不能从第一行插入数据?大容量插入是否需要标头作为默认设置,如何规避?如果我添加一个虚拟行,并将设置为,那么插入第一行就没有问题了,但我认为这不是一个好的解决方案。 示例数据: