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
복사