我在单个主实例中使用mongodb oplog.$main
集合甚至在我的应用中进行流式传输。当我的应用程序启动时,它会使用等待新数据的tailable游标查询oplog集合,但是mongo cpu spikes因为此查询扫描完整的oplog集合(在我的情况下是25GB)。来自mongodb文档:
有没有办法跳过查询的初始扫描?我只对添加到oplog的新文档感兴趣。
我尝试使用{oplogReplay: true}
和过滤器{ts: {$gt: lastOplogTime}}
,但mongo CPU仍然高峰。我使用mongo 3.0.3与存储引擎wiredTiger。此外,使用sort({$natural: -1})
不起作用,因为我从mongo得到此错误:
invalid sort specified for tailable cursor: { $natural: -1 }
。看起来sort
错误是由于使用wiredTiger
。
非常感谢任何帮助。谢谢!