Mongodb oplog同步

Mongodb oplog同步,mongodb,mongodb-query,apache-storm,Mongodb,Mongodb Query,Apache Storm,我正在用ApacheStorm评估Mongo DB。我的用例是这样的,我必须在ApacheStorm中从MongoDB读取数据,在bolt中进行一些处理,并将其转储到Neo4J图形数据库中 我使用的是Mongo喷口,它将从oplog文件中读取数据。我阅读了文档,其中说明主节点将数据写入oplog文件,副本读取将异步进行。我知道oplog是一个有上限的集合(指定大小),数据以非常高的速度写入oplog,而与副本集的同步有点慢。如果oplog达到其最大大小,它将覆盖文件开头的文档。在异步过程中,如果

我正在用ApacheStorm评估Mongo DB。我的用例是这样的,我必须在ApacheStorm中从MongoDB读取数据,在bolt中进行一些处理,并将其转储到Neo4J图形数据库中

我使用的是Mongo喷口,它将从oplog文件中读取数据。我阅读了文档,其中说明主节点将数据写入oplog文件,副本读取将异步进行。我知道oplog是一个有上限的集合(指定大小),数据以非常高的速度写入oplog,而与副本集的同步有点慢。如果oplog达到其最大大小,它将覆盖文件开头的文档。在异步过程中,如果我们得到一些其他数据,并且复制仍处于完成状态,则可能会丢失复制集,因为它将不会同步

我的问题是

1) 有没有办法克服这个问题

2) 在与ApacheStorm一起使用时,我们如何更好地利用此封顶集合

3) 如果我给最大的oplog大小,比如我给500GB,oplog有1gb的数据,它会占用并保留500GB的大小吗

4) 对于我的用例,这是正确的解决方案吗


提前感谢

是的,您可以通过增加oplog的大小来克服这一问题。这需要关闭mongo实例才能生效

我最近做了一个概念验证,类似于您在Mongo中使用尾部游标订阅主数据库的oplog中所做的任何更改,并将它们迁移到另一个数据库。我们也最终调查了暴风雪,以便以更干净的方式做到这一点。对于这个用例,我们在Storm上也没有100%的销售,但是尾部光标有点难看和不可靠。我会在尾随光标之前使用Storm

通过让Storm仅拾取新命令,您可以更好地利用Storm的此capped集合。您遇到的复制问题似乎与从主服务器上的Oplog获取新命令并将这些感兴趣的操作执行到Neo4j的任务是相互排斥的。如果您在中学阅读oplog,我会更好地理解这是一个关于您声称目标是什么的问题(即将数据写入Neo4j)。由于您正在读取主操作日志,并且可以在最新命令进入时处理它们,因此我不确定这里是否存在问题

关于您提出的RS同步问题;如果您的二级数据集不同步,导致复制丢失,那么应该提前解决一些问题。我理解并赞赏你的观点,但一个允许这种情况发生的系统需要一些帮助

正如您所说,oplog是一个有上限的集合。当空间不足时,它将为执行任何新命令腾出空间。没有你说的保留。您的辅助设备将无法将这些命令应用于它们,并且需要完全重新同步。您需要关注表示1的。这是操作在被新条目覆盖之前保留在oplog中的时间量。2.辅助成员可以脱机多长时间,并且在不执行完全重新同步的情况下仍能赶上主成员