MongoDB Local Replica 설정 ( With Docker )
Introduction
- MongoDB Watch 기능을 사용하여 서비스를 개발하려고 하니 로컬 환경에서 Replica 를 구성해야 했음
- Docker 를 사용하여 로컬 환경에서 Mongo Replica 를 구성하는 방법 정리
- MongoDB 4.0 버전을 기준으로 설명
Step
-
MongoDB 도커 이미지를 다운로드
$ docker pull mongo:4.0 -
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 -
Docker Container 의 MongoDB Shell 접속
$ docker exec -it mongo /bin/sh# mongo -
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 -
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")}}