Blog

MongoDB Local Replica 설정 ( With Docker )

Introduction

MongoDB Watch 기능을 사용하여 서비스를 개발하려고 하니 로컬 환경에서 Replica 를 구성해야 했음
Docker 를 사용하여 로컬 환경에서 Mongo Replica 를 구성하는 방법 정리
MongoDB 4.0 버전을 기준으로 설명

Step

1.
MongoDB 도커 이미지를 다운로드
$ docker pull mongo:4.0
Shell
복사
2.
MongoDB 도커 컨테이너 실행
$ mkdir -p ~/Documents/docker/mongo/data/db $ docker run --name mongo -d -p 27017:27017 -v ~/Documents/docker/mongo/data/db:/data/db mongo:4.0 --replSet localDev
Shell
복사
3.
Docker Container 의 MongoDB Shell 접속
$ docker exec -it mongo /bin/sh # mongo
Shell
복사
4.
Replica 설정
ddocdocDev:OTHER> rs.initiate() ddocdocDev:OTHER> rsconf = rs.conf(); ddocdocDev:OTHER> rsconf.members = [{ _id: 0, host: '127.0.0.1:27017' }] ddocdocDev:OTHER> rs.reconfig(rsconf, { force: true }); ddocdocDev:PRIMARY> exit
Shell
복사
5.
OTHER 에서 PRIMARY 로 변경되면 설정이 모두 끝난거다

Finish

좀 더 간단하게 설정할 수 있는 방법을 찾을 경우 문서를 업데이트한다
rs.initiate() 를 했을 때 자동으로 설정되어 있다면 rs.reconfig 를 할 필요가 없다
Replica 설정 정보
{ "_id" : "localDev", "version" : 45345, "protocolVersion" : NumberLong(1), "writeConcernMajorityJournalDefault" : true, "members" : [ { "_id" : 0, "host" : "127.0.0.1:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : -1, "catchUpTakeoverDelayMillis" : 30000, "getLastErrorModes" : { }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ObjectId("5d26dcefa2e3659e1b79e5b6") } }
JavaScript
복사