首页 > 数据库技术 > 详细

mongodb监听oplog时发生的一个问题处理

时间:2021-02-03 23:26:11      阅读:40      评论:0      收藏:0      [点我收藏+]

1月底上线时,遇到一个问题,3.0任务创建,没有同步到4.0的表中。之前团队小伙伴做了监听oplog操作。

 

原因剖析:

1、oplog监听应该是监听了有问题的从节点,所以没有监听到

2、从节点为什么出问题。继续往下看

1)可以先查看下述链接,关于mongo的此问题的bug描述:https://jira.mongodb.org/browse/SERVER-30939

 

2)mongo的从节点不可用是因为在不停的创建索引。如果数据跟索引全部同步完成了,从节点是可以恢复的。

 

问题触发条件:对很多个集合后台创建索引,mongo会进入一种状态,其中一个或多个“repl index builder”线程会无限循环,从而一次又一次地重复创建索引。关键是,这个不是必现,多做测试可以出现。

技术分享图片

 

3)风险:

这个问题需要尽快解决,不然会是一个大问题。如果这时主节点失效,发生切换,数据同步延迟,会导致数据丢失

 

4)解决思路:不要同时对多个集合后台创建索引。

 

5)解决方法:

方法一:项目中是遍历集合,创建索引时sleep操作下,避免并发

方法二:经排查创建索引的集合中,有很多只有几十、几百条数据。数据量较小,创建索引没意义。所以,可以对超出一万条记录的集合创建索引。这样能减少创建索引的操作次数

方法三:mongo3.6之后解决了这个问题,可以升级到4.0+版本

 

mongodb监听oplog时发生的一个问题处理

原文:https://www.cnblogs.com/mabiao008/p/14370160.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!