2 Meetup Mongo DB HAReplication Sharding Backup Restore
한국 몽고디비 사용자 그룹 제 2회 Meetup Mongo. DB HA(Replication & Sharding) Backup & Restore 작성자: 강동운(eastluck@lycos. co. kr) 발표일: 2012년 7월 28일
소개 - 강동운(Software Engineer) Electronic Arts FIFA Online Email: eastluck@lycos. co. kr Blog: http: //eastluck. tistory. com Facebook: http: //www. facebook. com/eastluck 주요 업무 및 활동 Mongo. DB 공식 한국 사용자 그룹 스터디 SQL Server MVP 2012 SQLer. com 이스트럭(강동운) SQLer Vision Study Leader
Contents Replication - 복제 셋(Replica sets) 과 master/slave 복제 - 데모 - 복제 셋 삭제, –rest 및 유의점 Sharding - chunk, balancing, balancer - config server, mongos - Sharding DEMO 백업과 복원 - mongodump, mongorestore - 세컨더리 파일 복사
Replication 고가용성의 기능(미러링) 복제 셋(replica set) - 표준, 수동, 결정권자 노드 Master/Slave Replication oplog 와 heartbeat, Priority
Oplog와 heartbeat oplog - capped collection - local database 내에 저장 - collection 이름, 타임 스탬프 변경된 document를 저장 Heartbeat(심장 박동) - 2초마다 각각 서버들에게 ping 전달 - 서버의 상태를 체크
복제 셋 기본 구조 핑(heartbeat) PRIMARY SECONDARY 복제 핑(heartbeat) ARBITER 핑(heartbeat) SECONDARY PRIMARY
복제 셋 기본 구조 PRIMARY SECONDARY Priority 1 SECONDARY PRIMARY Priority 40
복제 셋 기본 구조 PRIMARY SECONDARY Priority 1 SECONDARY PRIMARY 1 Priority 1초전 동기화 SECONDARY Priority 0 SECONDARY Priority 1 3초전 동기화
복제 셋 셋팅 방법(서버시작) mongod --dbpath C: DATAfirst 1 --port 10001 --repl. Set first --oplog. Size 10 --rest mongod --dbpath C: DATAfirst 2 --port 10002 --repl. Set first --oplog. Size 10 --rest mongod --dbpath C: DATAfirstarbiter --port 10003 --repl. Set first --oplog. Size 10 --rest
복제 셋 셋팅 방법 1 mongo localhost: 10001/admin db. run. Command( {"repl. Set. Initiate" : {"_id" : "first", "members" : [ {"_id" : 1, "host" : "localhost: 10001"} , {"_id" : 2, "host" : "localhost: 10002"} , {"_id" : 3, "host" : "localhost: 10003", arbiter. Only: true } ] } } ) Ex) {"_id" : 2, "host" : "localhost: 10002", "Priority" : "50"}
복제 셋 셋팅 방법 2 mongo localhost: 10001/admin rs. initiate() rs. add(“localhost: 10002”) rs. add(“localhost: 10003”, {arbiter. Only: true })
Master/Slave 셋팅 방법 mongod --dbpath C: DATAtestmaster --port 10011 --oplog. Size 10 --rest --master mongod --dbpath C: DATAtestslave --port 10012 --oplog. Size 10 --rest --slave --source localhost: 10011
복제 셋 및 Master/Slave DEMO
Sharding 분산 처리 Shard Key(예: idx 또는 id, name 등 ) Member(100만) 샤드 1 샤드 2 Member (25만) 샤드 3 샤드 4 Member (25만)
Sharding 샤드 1 샤드 2 샤드 3 샤드 4 샤드 5 Member (400 G) (500 Member (400 G) (600 (500 Member (400 G) (700 (500 Member (400 G) (900 (500 Member (400 G) F A <= ID < C K F <= C <= ID ID < <K H T K <= H <= ID ID < < TQ Q <= ID ID < < ZT T <= Z T <= ID < Z 100 G 200 G 300 G 400 G
Sharding 샤드 1 샤드 2 샤드 3 샤드 5 Member (400 G) (500 Member A <= ID < C F F <= ID < K I K <= ID < T Q T <= ID < Z X 100 G C <= ID < F I <= ID < K Q <= ID < T X <= ID < Z
Sharding(Chunk 예제) 샤드 1 샤드 2 샤드 3 샤드 5 Member (500 G) Member (500 G) A <= ID < C F <= ID < G C <= ID < F G <= ID < J J <= ID < K N <= ID < Q R <= ID < S Q <= ID < R S <= ID < T K <= ID < N T <= ID < X X <= ID < Z
Sharding(Config server) 3개의 Config 서버가 필요 Config DB의 chunks collection에 chunk 정보 저장 하나라도 죽을 경우 balancing 작동 안함
Sharding(구조) Config 1 Mongos CLIENT Config 2 Config 3 샤드 1 Primary Second ary Arbiter 샤드 2 Primary Second ary Arbiter 샤드 3 Primary Second ary Arbiter
Sharding(DEMO chunk. Size 1) 샤드(fourth) P(50010) S(50011) 2. 5만 Config 1 (50051) Mongos (55555) Config 2 (50052) A(50012) Config 3 (50053) 샤드(first) 10만 P(50001) 3. 3만 2. 5만 S(50002) 3. 3만 2. 5만 A(50003) 샤드(second) 샤드(third) P(50004) S(50005) P(50007) 3. 3만 2. 5만 A(50006) S(50008) 3. 3만 2. 5만 A(50009)
Sharding DEMO
SUMMARY 복제 셋, master/slave 복제 sharding(chunk, balancer, config server, mongos) 백업과 복원(mongodump, mongorestore, 파일복사) Document 공간을 미리 확보하자
참고 자료 주디아줌마 블로그 http: //judydba. tistory. com/169 Mongo. DB 활용 가이드 Mong. DB 완벽 가이드 Mongo. DB. org DOCS
- Slides: 39