我在某处发现了一条说明Meteor不支持最新版Mongo中的oplog拖尾的说明。如果我想要oplog拖尾,我可以安全地使用Meteor的最新版Mongo是什么?
我需要oplog拖尾,因为我打算从外部Python进程写入我的Meteor数据库。我想使用MongoDB 2.6.5,因为它支持批量写入,这大大加快了我的系统。
另外,如果我使用Mongo 2.6.5并且oplog尾部不可用,我的数据库写入将在10秒轮询延迟之后出现,我认为是在引入oplog尾部之前的行为。
答案 0 :(得分:6)
不支持官方MongoDB 2.6。可以使用Mongo 2.6启用oplog拖尾,但鉴于Mongo 2.6的新身份验证系统,该过程是不同的
这只是一个指导原则,我不完全确定这会对你有用,但它会给你一些方向。您需要管理员权限才能执行此操作,以确保您可以与您用于登录的用户一起使用。
此外,您需要一个副本集。对于单个mongodb数据库,您需要一个集副本:(更好的信息在这里:https://gentlenode.com/journal/meteor-10-set-up-oplog-tailing-on-ubuntu/17)
这是您遇到问题的地方
1)首先创建一个用户oplogger
(http://docs.mongodb.org/manual/reference/method/db.createUser/)。
2)创建oplogger
角色
db.runCommand({ createRole: "oplogger", privileges: [ { resource: {
db: 'local', collection: 'system.replset'}, actions: ['find']}, ],
roles: [{role: 'read', db: 'local'}] })
3)将此角色授予您的用户
db.runCommand({ grantRolesToUser: 'oplogger', roles: ['oplogger']})
然后你可以在mongo url的末尾使用MONGO_OPLOG_URL
环境变量和?authSource=local
来启用你的流星应用程序上的oplog拖尾。
其他有用的链接:
同样,我不确定命令是否会完全正常工作。我记得这样做了几次,但需要进行一些调整,而mongo在授予角色时非常顽固。
但总而言之,到目前为止,我一直在使用Mongo 2.6 / Meteor 1.0进行oplog拖尾而没有任何问题。
此外,是的,如果您将文档直接插入MongoDB,最多会延迟10秒而不会出现oplog拖尾。