출처 : https://devs0n.tistory.com/43
/home/ubuntu/mongod/docker-compose.yml
version: "3.6"
services:
mongo-1:
image: mongo:4.4
container_name: mongo-1
ports:
- "30000:30000"
command: mongod --replSet replset --port 30000 **--bind_ip 0.0.0.0**
mongo-2:
image: mongo:4.4
container_name: mongo-2
ports:
- "30001:30001"
command: mongod --replSet replset --port 30001 **--bind_ip 0.0.0.0**
mongo-3:
image: mongo:4.4
container_name: mongo-3
ports:
- "30002:30002"
command: mongod --replSet replset --port 30002 **--bind_ip 0.0.0.0**
C:\Windows\System32\drivers\etc\hosts 추가 (MongoDB IP)
**192.168.0.53** mongo-1
192.168.0.53 mongo-2
192.168.0.53 mongo-3
시작
docker compose up &
종료
docker compose down
**도커에 접속**
docker exec -it mongo-1 mongo --port 30000
**mongod 1 :** PRIMARY
**mongod 2 :** SECONDARY
**mongod 3 :** SECONDARY
> config = {
"_id" : "replset", // docker-compose에 있는 replSet과 동일하게
"members" : [
{
"_id" : 0,
"host" : "mongo-1:30000"
},
{
"_id" : 1,
"host" : "mongo-2:30001"
},
{
"_id" : 2,
"host" : "mongo-3:30002"
}
]
}
> rs.initiate(config);
{ "ok" : 1 }
**mongod 1]**
**샘플데이터 입력**
db.wallets.insert(
{
wid: 4,
uid: "11e035c6-ed09-4c91-aae7-50a72ea3f344",
ucPubkey: "0x029c8804e80db19ffe796746ae70c04f25e137c14b08d3e1ea925b92b734812632",
created: "2022-08-11T14:00:51.059Z"
}
)
**샘플 데이터 확인**
> db.wallets.find({})
{ "_id" : ObjectId("63acdad42c351689ae8b3af7"), "wid" : 4, "uid" : "11e035c6-ed09-4c91-aae7-50a72ea3f344", "ucPubkey" : "0x029c8804e80db19ffe796746ae70c04f25e137c14b08d3e1ea925b92b734812632", "created" : "2022-08-11T14:00:51.059Z" }
>
- Robo 3T docker compass 접속 정보 설정
SECONDARY에 접근하기 위한 명령어
**mongod 2] , mongod 3]**
replset:SECONDARY> rs.slaveOk()
- mongod 1] , mongod 2] , mongod 3] 데이터 동일 여부 확인
/home/ubuntu/mongod/docker-compose.ymlC:\Windows\System32\drivers\etc\hosts 추가 (MongoDB IP)
시작
docker compose up &
종료
docker compose down
**도커에 접속**
docker exec -it mongo-1 mongo --port 30000
**mongod 1 :** PRIMARY
**mongod 2 :** SECONDARY
**mongod 3 :** SECONDARY
> config = {
"_id" : "replset", // docker-compose에 있는 replSet과 동일하게
"members" : [
{
"_id" : 0,
"host" : "mongo-1:30000"
},
{
"_id" : 1,
"host" : "mongo-2:30001"
},
{
"_id" : 2,
"host" : "mongo-3:30002"
}
]
}
> rs.initiate(config);
{ "ok" : 1 }
**mongod 1]**
**샘플데이터 입력**
db.wallets.insert(
{
wid: 4,
uid: "11e035c6-ed09-4c91-aae7-50a72ea3f344",
ucPubkey: "0x029c8804e80db19ffe796746ae70c04f25e137c14b08d3e1ea925b92b734812632",
created: "2022-08-11T14:00:51.059Z"
}
)
**샘플 데이터 확인**
> db.wallets.find({})
{ "_id" : ObjectId("63acdad42c351689ae8b3af7"), "wid" : 4, "uid" : "11e035c6-ed09-4c91-aae7-50a72ea3f344", "ucPubkey" : "0x029c8804e80db19ffe796746ae70c04f25e137c14b08d3e1ea925b92b734812632", "created" : "2022-08-11T14:00:51.059Z" }
>
- Robo 3T docker compass 접속 정보 설정
**mongod 2] , mongod 3]**
replset:SECONDARY> rs.slaveOk()
- mongod 1] , mongod 2] , mongod 3] 데이터 동일 여부 확인