Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MongoDB Replication

MongoDB Replication

Presented at MongoDB Seattle Sept 2012.

Sridhar Nanjundeswaran

September 14, 2012
Tweet

More Decks by Sridhar Nanjundeswaran

Other Decks in Programming

Transcript

  1. 2 • Introduction to Replica Sets • Developing with Replica

    Sets • Operational Considerations • Miscellaneous
  2. 5 Node 1 Secondary Node 2 Secondary Node 3 Primary

    Replication Replication Heartbeat
  3. 8 Node 1 Secondary Node 2 Primary Node 3 Secondary

    Replication Heartbeat Replication
  4. 9 • Priorities – Help control election – Secondary only

    • Slave Delay – Purposely delay replication • Hidden – Not seen as part client connection • Tagging
  5. 10 • New in 2.0.0 • Control over where data

    is written to • Each member can have one or more tags e.g. • tags: {dc: "ny"} • tags: {dc: "ny",
 ip: "192.168",
 rack: "row3rk7"} • Replica set defines rules for where data resides • Rules can change without changing app code
  6. 11 { _id : "mySet", members : [ {_id :

    0, host : "A", tags : {"dc": "ny"}}, {_id : 1, host : "B", tags : {"dc": "ny"}}, {_id : 2, host : "C", tags : {"dc": "sf"}}, {_id : 3, host : "D", tags : {"dc": "sf"}}, {_id : 4, host : "E", tags : {"dc": "cloud"}}] settings : { getLastErrorModes : { allDCs : {"dc" : 3}, someDCs : {"dc" : 2}} } } > db.blogs.insert({...}) > db.runCommand({getLastError : 1, w : "allDCs"})
  7. 15 • Fire and forget • Wait for error •

    Wait for journal sync • Wait for replication
  8. 20 • 5 modes – primary (only) - Default –

    primaryPreferred – secondary – secondaryPreferred – nearest
  9. 21 • Custom read preferences • Control where you read

    from – E.g. { "disk": "ssd", "use": "reporting" } • Use in conjunction with standard read preferences – Except primary
  10. 24 • Single datacenter • Single switch & power •

    Points of failure: – Power – Network – Datacenter – Two node failure • Automatic recovery of single node crash Member 1 Member 2 Member 3
  11. 25 • Multi datacenter • DR node for safety •

    Can’t do multi data center durable write safely since only 1 node in distant DC Member 1 Member 2 Member 3 DC 1 DC 2
  12. 26 • Three data centers • Can survive full data

    center loss • Can do w= { dc : 2 } to guarantee write in 2 data centers (with tags) Member 1 Member 2 Member 3 Member 4 DC 2 Member 5 - DR DC 1 DC 3
  13. 28 • Local DB • Oplog – Capped collection –

    Idempotent version of operation stored db.replsettest.update({},{$inc:{set:1}}) { "ts" : …, "h" : …, "op" : "u", "ns" : "mongo_la.replsettest", "o2" : { "_id" : ObjectId("4f177bc768dad821278224d8") }, "o" : { "$set" : { "set" : 2 } } }
  14. 29 • Full read preference support in mongos – Drivers

    too • Improved RS lag logging • rs.syncFrom command • buildIndexes setting • replIndexPrefetch setting
  15. 30 • Use replica sets • Easy to setup even

    on a single machine • Check doc page for RS tutorials – http://docs.mongodb.org/manual/replication/#t utorials
  16. 31 @mongodb © Copyright 2010 10gen Inc. conferences, appearances, and

    meetups http://www.10gen.com/events http://bit.ly/mongofb Facebook | Twitter | LinkedIn http://linkd.in/joinmongo download at mongodb.org We’re Hiring ! [email protected] @snanjund