-
-
Save oswaldoacauan/528c3362968d0fcf50f6234782e57d11 to your computer and use it in GitHub Desktop.
Meteor: Set up Oplog Tailing on Ubuntu --> https://github.com/LeCoupa/awesome-cheatsheets
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# How to set up Oplog Tailing on your Meteor application on Ubuntu. (production environment) | |
# We are going to create a replica set with only one member (the primary) so as to benefit from oplog tailing. | |
# More: https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver | |
# 1. Stop MongoDB | |
$ sudo service mongodb stop | |
# 2. Edit the MongoDB configuration. | |
$ sudo nano /etc/mongodb.conf | |
# 3. Uncomment the default port, the replSet parameter | |
# and add fork at the bottom of the file | |
port = 27017 | |
replSet = rs0 # set to something you can easily remember | |
fork = true # so that you can use your shell after spawning the server instance | |
# 4. Start the replication member. | |
$ mongod --config /etc/mongodb.conf | |
$ ps aux | grep mongo # to check that the process is running | |
# 5. Be sure your admin user have the clusterAdmin role. | |
$ mongo | |
> use admin | |
> db.auth('admin', 'pwd') | |
> db.users.update({'user':'admin'}, {$addToSet: {'roles' :'clusterAdmin'}}) | |
# 6. Start the replication set. | |
> rs.initiate() | |
# 7. Your prompt should change to rs0:PRIMARY>. Then, add the oplogger user into the admin database. | |
rs0:PRIMARY> rs.status() # check the status and display replica set members. | |
rs0:PRIMARY> use admin | |
# For MongoDB 2.4 | |
rs0:PRIMARY> db.addUser({ user:'oplogger', pwd:'pwd', roles:[], otherDBRoles:{ local: ['read'] } }) # can read everything that is written to the local database. | |
# For MongoDB 2.6 | |
rs0:PRIMARY> db.createUser({ user:'oplogger', pwd:'pwd', roles:[] }) | |
rs0:PRIMARY> db.runCommand({ createRole: "oplogger", privileges: [ { resource: { db: 'local', collection: 'system.replset'}, actions: ['find']}, ], roles: [{role: 'read', db: 'local'}] }) | |
rs0:PRIMARY> db.runCommand({ grantRolesToUser: 'oplogger', roles: ['oplogger']}) | |
rs0:PRIMARY> show users # you should see the new oplogger user appear | |
# 8. Launch Meteor with the environment variable "MONGO_OPLOG_URL". (in production) | |
# Note: Of course, you need to set MONGO_URL as usual. | |
$ export PORT=58080 | |
$ export ROOT_URL='http://localhost/' | |
$ export MONGO_URL='mongodb://userDB:[email protected]:27017/DB' | |
$ export MONGO_OPLOG_URL='mongodb://oplogger:[email protected]:27017/local?authSource=admin' | |
$ forever start --append --uid "meteorApp" main.js | |
# 9. How to tell if your queries are using OplogObserveDriver? | |
# https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver#how-to-tell-if-your-queries-are-using-oplogobservedriver |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment