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's Replica Sets - Painless scaling and High Availability (HA)
Search
Viktor Petersson
August 30, 2012
Technology
3
2.5k
MongoDB's Replica Sets - Painless scaling and High Availability (HA)
Presentation for NoSQL Roadshow (Basel, Switzerland).
Viktor Petersson
August 30, 2012
Tweet
Share
More Decks by Viktor Petersson
See All by Viktor Petersson
State of Open Con '24
vpetersson
0
17
From Pets to Cattle
vpetersson
0
93
Beyond Just a Menu Display
vpetersson
0
33
The history of how Screenly OSE became the most popular digital signage project on GitHub
vpetersson
0
130
The DevSecOps Iceberg @ Cloud Native London
vpetersson
0
300
What's mtLS? @ Docker London
vpetersson
0
400
The "S" in "IoT" stands for "Security"
vpetersson
0
180
Living on the Edge @ Kubernetes London
vpetersson
0
100
The 'S' in IoT Stands for Security (a.k.a. Internet of Shit)
vpetersson
0
280
Other Decks in Technology
See All in Technology
今日からできる!簡単 .NET 高速化 Tips -2024 edition-
xin9le
7
3.6k
JAWS-UG Bedrock Claude Night
yamahiro
3
690
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
1
1.6k
Amplify 🩷 Bedrock 〜生成AI入門〜
minorun365
PRO
8
410
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
8
620
Handling focus in 2024
tahia910
0
210
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
150
成長をサポートするピープルマネジメントのやり方
sioncojp
8
940
いいたいことちゃんという
tkengo
0
230
Building Dashboards as a Hobby
egmc
0
360
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshiitaka
1
300
DMM.com アルファ室採用案内資料
hsugita
1
220
Featured
See All Featured
Bash Introduction
62gerente
605
210k
Designing with Data
zakiwarfel
96
4.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
20k
GraphQLとの向き合い方2022年版
quramy
33
12k
The Language of Interfaces
destraynor
151
23k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
22
1.6k
Automating Front-end Workflow
addyosmani
1357
200k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
222
21k
Gamification - CAS2011
davidbonilla
77
4.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
We Have a Design System, Now What?
morganepeng
44
6.8k
Docker and Python
trallard
35
2.7k
Transcript
Replica Sets Painless scaling and High Availability (HA) Viktor Petersson
@vpetersson
Who am I? { name : ‘Viktor Petersson’, description :
[ ‘geek’, ‘entrepreneur’ ], founder_of : ‘wireload’, twitter : ‘@vpetersson’, email : ‘
[email protected]
’, } @vpetersson
What is MongoDB? @vpetersson • Key-value store • Schemas less
• Distributed file system (GridFS) • Built-in Map/Reduce • Built to scale
MongoDB 101 Relational Database MongoDB Database Database Table Collection Row
Document Database structure (simplified) @vpetersson
MongoDB 101 Relational Database MongoDB Master Primary Slave Secondary Arbiter
(Hidden) Node types @vpetersson
What are Replica Sets and why should I care? @vpetersson
Typical failover with relational databases Master Slave Failover IP Master
Slave Failover IP Master Normal Degraded @vpetersson (two servers, can lose one)
More complex failover with relational databases Failover IP Normal @vpetersson
Proxies Database servers Failover IP Degraded (four servers, can lose one of each kind)
Failover with MongoDB Primary Secondary Normal Degraded Secondary Driver Primary
Secondary Secondary Driver Primary @vpetersson (three servers, can lose two)
Primary Secondary Down -> Recovering Recovering -> Secondary Secondary Driver
Primary Secondary Secondary Driver Primary Secondary Primary Recovering Automatic recovery @vpetersson
Real life example: Taking down the primary for maintenance. No
dropped connections. Primary Secondary @vpetersson
Creating a Replica Set is dead simple. All it takes
is three servers (s0, s1, s2) and three commands¹. $ mongo > rs.initiate() > rs.add(‘s1’) > rs.add(‘s2’) 1. After adding “replSet=myRepSet” and “rest = true” to mongo.conf @vpetersson
Live demo! 3 servers with 1 client @vpetersson
Election @vpetersson 1. Most up to date 2. Highest priority
3. Less than 10s behind Primary
Configure node priority $ cfg = rs.conf() $ cfg.members[x].priority =
n $ rs.reconfig(cfg) x = Member id, n = Priority (0 - 100), default is 1. @vpetersson
Leverage your secondary-nodes Warning: Secondaries may be out-of-date. Read preference
• Primary (default) • Secondary • Secondary_only @vpetersson
What happens when I’ve outgrown my Replica Set? @vpetersson
@vpetersson mongos repset0 repset1 repsetN Sharding
Useful commands View server status $ db.serverStatus() View the replication
status $ rs.status() Step down as Primary $ rs.stepDown(n) @vpetersson
• Improved location awareness • Improved concurrent capacity • TTL
collections @vpetersson What’s new in MongoDB 2.2? Full release notes: http://docs.mongodb.org/manual/release-notes/2.2/ (released yesterday)
Summary @vpetersson • Replica Sets are extremely easy to set
up • Doesn’t require failover IPs or custom scripts • Minimal maintenance • Built to scale
Questions? @vpetersson
Thanks to @vpetersson
Contact me! email:
[email protected]
www: viktorpetersson.com twitter: @vpetersson Also visit
WireLoad.net YippieMove.com @vpetersson This deck will be available at ViktorPetersson.com.
• MongoDB: GridFS, sharding and deploying in the cloud (http://goo.gl/1QAV1)
• MongoDB Replica Set (http://goo.gl/D2pkq) • 10gen (http://goo.gl/3m4Kn) @vpetersson Useful resources