mongodb sharded cluster - how to vinodh krishnaswamy ... · 3 © 2019 percona agenda sharded...

54
© 2019 Percona 1 Vinodh Krishnaswamy MongoDB Sharded Cluster - How to design your topology Support Engineer - MongoDB & MySQL Percona

Upload: others

Post on 19-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona1

Vinodh Krishnaswamy

MongoDB Sharded Cluster - How to design your topology

Support Engineer - MongoDB & MySQL Percona

Page 2: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona2

◆ Started as MySQL DB DBA

◆ Support for MongoDB

◆ Trainer

◆ Scripting, Reading, Driving

◆ “Guruji” - who shares knowledge◆ Now here I am - Perconian!!!

Who am I

Page 3: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona3

Agenda▪ Sharded Cluster - components

▪ Ranged Sharding

▪ Hashed Sharding

▪ Zones / Tags

Page 4: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona4

Agenda

▪ HA

▪ ReplicaSet - Key points

▪ Topology

▪ Q&A

Page 5: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona5

Sharded Cluster

Page 6: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona6

Sharded Cluster▪ Horizontal Scaling

•Data across multiple nodes

• Reduce stress for larger working set

• Ability to add more servers

Page 7: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona7

Architecture

mongos

Page 8: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona8

Sharded Cluster

▪ Shard Key

▪ Chunks

▪ Balancer - Chunk distribution

Page 9: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona9

POINTS TO NOTE

TARGET vs BROADCAST

Page 10: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona10

Primary Shard

A

A

Page 11: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona11

Primary Shardsh.status()

Page 12: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona12

Primary Shard▪ Routing - sharded vs unsharded

▪ Keep at right shard

db.adminCommand( { movePrimary:

<databaseName>, to: <newPrimaryShard> } )

Page 13: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona13

Ranged Sharding

Page 14: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona14

Strategy

▪ Ranged Sharding

Page 15: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona15

Strategy

▪ Ranged Sharding

sh.shardCollection( "database.collection", { <shard

key> } )

Example:

sh.shardCollection( "vinodh.testData", { empNo: 1 } )

Page 16: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona16

Monotonically Changing Shard Key

Page 17: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona17

Page 18: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona18

Page 19: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona19

Ranged Sharding▪ Contiguous ranges determined by Shard Key

▪ Default method

▪ Efficient when

• High cardinality

• Low Shard Key frequency

• Non-Monotonically Changing Shard key

Page 20: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona20

Hashed Sharding

Page 21: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona21

Strategy

▪ Hashed Sharding

Page 22: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona22

Strategy▪ Hashed Sharding uses hashed index

sh.shardCollection( "database.collection", {

<field> : “hashed” } )

Example:

sh.shardCollection( "vinodh.testData",

{ UUIDfield: “hashed” } )

Page 23: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona23

Monotonically Changing Shard Key - Hash

Page 24: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona24

Hashed Sharding▪ Provides equal distribution

▪ Target vs Broadcast operations

▪ Ideal for fields that changes monotonically like

ObjectID, timestamp etc

Page 25: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona25

Zones

Page 26: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona26

Why Zones?

▪ Isolate data set

▪ Geographically closest

▪ Route data to desired Shard h/w

▪ Distribute Writes based on DC

Page 27: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona27

How to...▪ First create tagRange with Shards

sh.addShardTag("shard01", "tag1")

sh.addShardTag("shard02", "tag2")

▪ Assign tagRanges to collections

sh.addTagRange( "<database>.<collection>",

{ "gender" : "Male", "userid" : MinKey },

{ "gender" : "Male", "userid" : MaxKey },

"tag1")

Page 28: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona28

Zone

Page 29: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona29

Zone

Page 30: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona30

HA overview

Page 31: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona31

HA

• Instance down

• Loss of DC

•Network Partition

•Backup

•Etc.

Page 32: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona32

HA

▪ Sharded Cluster itself is NOT HA

▪ SC + RS = Complete HA

▪ Failover Scenarios - Do your Exercise!

Page 33: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona33

ReplicaSet - Key Points

Page 34: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona34

Replicaset

Page 35: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona35

Replicaset

Page 36: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona36

Replicaset - ARBITER

Page 37: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona37

replicaSet Configuration

▪ Priority

▪ Hidden

▪ Delayed

▪ Arbiter

Page 38: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona38

Page 39: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona39

Replicaset - Election+Priority

ELECTION - VOTING & CHOOSING

Priority: 5Priority: 1

Priority: 1 Priority: 5

Page 40: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona40

Points to Note

▪ Set proper {Priority:n} to elect a member as

Primary

•Avoid setting Priority for all members

▪ Set {writeConcern:majority} to avoid data loss

▪ Set readPreference for reads

Page 41: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona41

Topology- Application Servers

Page 42: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona42

Applications and mongos in one server

Page 43: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona43

mongos/router in each Application servers

Page 44: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona44

Sharded Cluster in Private network

Page 45: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona45

Topology- Shards

Page 46: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona46

Shard instances deployed in dedicated servers design

Page 47: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona47

Multiple Shard members in each Server + HA design

Page 48: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona48

Production DC and DR DC + HA design

Page 49: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona49

Using Zones / Tags + HA design

Page 50: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona50

Points to Note

Page 51: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona51

POINTS TO NOTE▪ SHARD KEY - Pain Point!

•Monotonically increased key

•Do your tests!

▪ SHARD EARLY!

▪ ZONES

Page 53: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona53

[email protected]://in.linkedin.com/in/vinodhkrish

Page 54: MongoDB Sharded Cluster - How to Vinodh Krishnaswamy ... · 3 © 2019 Percona Agenda Sharded Cluster - components Ranged Sharding Hashed Sharding Zones / Tags

© 2019 Percona54

THANK YOU