This document provides an overview and introduction to key MongoDB concepts including:
- Replication which allows for failover, backups, and high availability through asynchronous replication across replica sets.
- Sharding which provides horizontal scalability by automatically distributing and balancing data across multiple shards in a cluster.
- Consistency and durability models including eventual consistency and different write acknowledgement options for ensuring data is safely written.
- Flexibility in data modeling through embedding and linking of related data as well as the use of JSON which maps easily to objects.
24시간 365일 서비스를 위한 MySQL DB 이중화.
MySQL 이중화 방안들에 대해 알아보고 운영하면서 겪은 고민들을 이야기해 봅니다.
목차
1. DB 이중화 필요성
2. 이중화 방안
- HW 이중화
- MySQL Replication 이중화
3. 이중화 운영 장애
4. DNS와 VIP
5. MySQL 이중화 솔루션 비교
대상
- MySQL을 서비스하고 있는 인프라 담당자
- MySQL 이중화에 관심 있는 개발자
2. Single server durabilitySingle server durability 지원이 취약한 이유일부러 하지 않는 않았다.이유는?기존의 DBMS도 single server durability를 보장 못하는 경우가 많다.물리적 파괴와 같은 상황에서 복구가 힘들다.그래서?Multi-server durability를 사용하시라.2
21. 작동 원리( 동기화 )MasterSlave이전 요청 ~ 현재까지 oplog전달oplog21
22. 복제 상태와 로컬 데이터베이스local databaseMongodb에서 사용하는 databaseReplica set에 대한 정보Replica set 관련 collectionlocal.system.replset : config정보local.oplog.rs : oploglocal.replset.minvalid : 내부용, 동기화정보를 추적하기 위한 정보 보관Master/Slave replication 관련 collectionMaster nodelocal.oplog.$main : oploglocal.slavesSlave nodelocal.sourcesOtherlocal.me22
23. 노드 동기화N개의 노드들이 쓰기 연산 복제 완료까지 대기보통 N을 2 ~ 3으로 설정 ( 효율성 / 안정성 trade-off )> db.runCommand( {getLastError: 1, w : N } )23
24. 관리진단Oplog변경> db.printReplicationInfo()configured oplog size: 944.1375732421875MBlog length start to end: 1266secs (0.35hrs)oplog first event time: Thu Aug 04 2011 23:47:12 GMT+0900oplog last event time: Fri Aug 05 2011 00:08:18 GMT+0900now: Fri Aug 05 2011 23:44:46 GMT+0900> db.printSlaveReplicationInfo()source: localhost:27017syncedTo: Fri Aug 05 2011 23:46:11 GMT+0900$ rm /data/db/local.*$ mongod --master --oplogSizesize//slave들을 --autosync로 재시작하거나 수동으로 재 동기화 필요함24
25. 관리인증을 통한 복제마스터 / 슬레이브의local db에 동일한 사용자와 비밀번호 추가Slave 접속 시도“repl”이라는 사용자로 접속시도local.system.users의 제일 처음 이름을 사용> use localSwitched to db local> db.add.User( “repl”, password );{“user” : “repl”, “readOnly” : false, “pwd” : “…” }25
26. 정리복제를 하는 두가지 방법.Master-slaveReplica set ( 편하다 )Oplog사이즈를 적당히 크게 잡아주자.재동기화 방지Slave에 query를 날리려면?--master or --slaveOkey옵션으로 생성26