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
110
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
100
Built to scale – Cloud Computing and NoSQL databases
sridharnanjundeswaran
0
48
Replication and Replica Sets
sridharnanjundeswaran
1
100
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
57
MongoDB and Windows Azure
sridharnanjundeswaran
0
67
MongoDB 2.2 New Features
sridharnanjundeswaran
2
200
Other Decks in Programming
See All in Programming
iOSエンジニアから始める visionOS アプリ開発
nao_randd
3
120
最近のVS Codeで気になるニュース 2025/01
74th
1
250
Azure AI Foundryのご紹介
qt_luigi
1
280
Domain-Driven Transformation
hschwentner
2
1.9k
ISUCON14公式反省会LT: 社内ISUCONの話
astj
PRO
0
180
TokyoR116_BeginnersSession1_環境構築
kotatyamtema
0
110
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
2
290
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
330
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
120
2024年のkintone API振り返りと2025年 / kintone API look back in 2024
tasshi
0
210
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
550
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
340
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
YesSQL, Process and Tooling at Scale
rocio
171
14k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Fireside Chat
paigeccino
34
3.2k
Thoughts on Productivity
jonyablonski
69
4.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Docker and Python
trallard
44
3.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
400
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