Meteor.js - 我可以将Mongodb 2.6.5版用于我的Meteor应用程序吗?我需要oplog拖尾

时间:2014-11-11 17:44:39

标签: mongodb meteor

我在某处发现了一条说明Meteor不支持最新版Mongo中的oplog拖尾的说明。如果我想要oplog拖尾,我可以安全地使用Meteor的最新版Mongo是什么?

我需要oplog拖尾,因为我打算从外部Python进程写入我的Meteor数据库。我想使用MongoDB 2.6.5,因为它支持批量写入,这大大加快了我的系统。

另外,如果我使用Mongo 2.6.5并且oplog尾部不可用,我的数据库写入将在10秒轮询延迟之后出现,我认为是在引入oplog尾部之前的行为。

1 个答案:

答案 0 :(得分:6)

不支持官方MongoDB 2.6。可以使用Mongo 2.6启用oplog拖尾,但鉴于Mongo 2.6的新身份验证系统,该过程是不同的

这只是一个指导原则,我不完全确定这会对你有用,但它会给你一些方向。您需要管理员权限才能执行此操作,以确保您可以与您用于登录的用户一起使用。

启用oplog拖尾

此外,您需要一个副本集。对于单个mongodb数据库,您需要一个集副本:(更好的信息在这里:https://gentlenode.com/journal/meteor-10-set-up-oplog-tailing-on-ubuntu/17

创建Meteor可以访问的用户

这是您遇到问题的地方

1)首先创建一个用户oploggerhttp://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拖尾。