Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MongoDB Replication
Search
Sridhar Nanjundeswaran
September 14, 2012
Programming
1
120
MongoDB Replication
Presented at MongoDB Seattle Sept 2012.
Sridhar Nanjundeswaran
September 14, 2012
Tweet
Share
More Decks by Sridhar Nanjundeswaran
See All by Sridhar Nanjundeswaran
MongoDB Introduction
sridharnanjundeswaran
2
110
Built to scale – Cloud Computing and NoSQL databases
sridharnanjundeswaran
0
56
Replication and Replica Sets
sridharnanjundeswaran
1
110
MongoDB Roadmap
sridharnanjundeswaran
1
120
MongoDB Replication and Replica Sets
sridharnanjundeswaran
1
54
MongoDB Roadmap
sridharnanjundeswaran
1
52
Building your first MongoDB app
sridharnanjundeswaran
0
59
MongoDB and Windows Azure
sridharnanjundeswaran
0
70
MongoDB 2.2 New Features
sridharnanjundeswaran
2
200
Other Decks in Programming
See All in Programming
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
17
4.9k
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
880
datadog dash 2025 LLM observability for reliability and stability
ivry_presentationmaterials
0
110
KotlinConf 2025 現地で感じたServer-Side Kotlin
n_takehata
1
230
Create a website using Spatial Web
akkeylab
0
300
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
190
GraphRAGの仕組みまるわかり
tosuri13
7
480
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
260
Result型で“失敗”を型にするPHPコードの書き方
kajitack
4
320
Elixir で IoT 開発、 Nerves なら簡単にできる!?
pojiro
1
150
[初登壇@jAZUG]アプリ開発者が気になるGoogleCloud/Azure+wasm/wasi
asaringo
0
130
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
The Language of Interfaces
destraynor
158
25k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
BBQ
matthewcrist
89
9.7k
For a Future-Friendly Web
brad_frost
179
9.8k
Become a Pro
speakerdeck
PRO
28
5.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Designing for Performance
lara
609
69k
Rails Girls Zürich Keynote
gr2m
94
14k
Rebuilding a faster, lazier Slack
samanthasiow
81
9.1k
Optimizing for Happiness
mojombo
379
70k
Transcript
1 Sridhar Nanjundeswaran, 10gen
[email protected]
@snanjund
2 • Introduction to Replica Sets • Developing with Replica
Sets • Operational Considerations • Miscellaneous
Introduction to Replica Sets What is it? Configuration Options
4 Node 1 Node 2 Node 3
5 Node 1 Secondary Node 2 Secondary Node 3 Primary
Replication Replication Heartbeat
6 Node 1 Secondary Node 2 Secondary Node 3 Primary
Heartbeat Primary Election
7 Node 1 Secondary Node 2 Primary Node 3 Primary
Heartbeat Replication
8 Node 1 Secondary Node 2 Primary Node 3 Secondary
Replication Heartbeat Replication
9 • Priorities – Help control election – Secondary only
• Slave Delay – Purposely delay replication • Hidden – Not seen as part client connection • Tagging
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
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"})
Developing with Replica Sets Consistency Write Preference Read Preference
13 Primary Secondary Secondary Read Write Driver Client
14 Primary Read Write Driver Read Secondary Secondary Client Application
15 • Fire and forget • Wait for error •
Wait for journal sync • Wait for replication
16 Driver Primary write apply in memory
17 Driver Primary getLastError apply in memory
18 Driver Primary getLastError apply in memory write j:true Write
to journal
19 Driver Primary getLastError apply in memory write w:2 Secondary
replicate
20 • 5 modes – primary (only) - Default –
primaryPreferred – secondary – secondaryPreferred – nearest
21 • Custom read preferences • Control where you read
from – E.g. { "disk": "ssd", "use": "reporting" } • Use in conjunction with standard read preferences – Except primary
Operational Considerations Upgrade/Maintenance Common Deployment Scenarios
23 • No downtime • Rolling upgrade/maintenance – Start with
Secondary – Primary last
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
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
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
Miscellaneous Behind the scenes What’s new in 2.2
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 } } }
29 • Full read preference support in mongos – Drivers
too • Improved RS lag logging • rs.syncFrom command • buildIndexes setting • replIndexPrefetch setting
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
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