일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 알고리즘
- 오라클
- 오라클 디비
- 백준 알고리즘
- dynamic query
- jsp
- auto configure
- oracle
- resilience4j
- 프로젝트
- 초대장
- 문법 정리
- 티스토리
- 운영체제
- gradle
- 학점
- 파이썬 소스
- 파이썬
- SQL
- spring
- K6
- c#
- JVM
- 자바 프로젝트
- 자바
- hyperledger
- 유사코드
- smart cast
- MongoDB
- 리눅스
- Today
- Total
모종닷컴
[MongoDB] Replication 본문
MongoDB 준비
MongoDB replication 세팅을 위해서는 2개 이상의 몽고 인스턴스가 필요합니다. 문서를 보면 일반적으로는 3개의 인스턴스로 구성하는 게 가장 일반적인 설정인 것 같습니다.
테스트 편의를 위해 도커를 사용하도록 하겠습니다. 도커가 없다면 로컬에 몽고DB 인스턴스를 3개 준비해주셔도 무방 할 겁니다.
version: "3.6"
services:
mongo-1:
image: mongo:4.4
container_name: mongo-1
ports:
- "30000:30000"
command: mongod --replSet replset --port 30000
mongo-2:
image: mongo:4.4
container_name: mongo-2
ports:
- "30001:30001"
command: mongod --replSet replset --port 30001
mongo-3:
image: mongo:4.4
container_name: mongo-3
ports:
- "30002:30002"
command: mongod --replSet replset --port 30002
위의 스크립트를 복해서 docker-compose.yml 파일을 만들어주시면 됩니다. 저는 USER_HOME/docker_script/mongo_replication 디렉터리를 만들고 해당 디렉터리에 파일을 생성해주었습니다.
docker 앱을 실행시켜줍니다. 그리고 파일이 있는 디렉토리에 가서 아래 명령어로 docker-compose를 실행해줍시다.
docker compose up -d
위의 명령어를 실행시키고 난 뒤 mongodb 인스턴스 3개가 도커로 띄워져 있는지 확인해주세요.
docker ps
이제 mongodb에 아래 설정을 통해 replication 구성을 마무리하도록 하겠습니다.
# mongodb 접속
mongo --port 30000
# config
config = {"_id": "replset", "members": [{"_id":0, "host": "mongo-1:30000"},{"_id":1, "host": "mongo-2:30001"},{"_id":2, "host": "mongo-3:30002"}]}
# 설정 적용
rs.initiate(config)
이제 replication 세팅이 끝이 났습니다.
Host 등록해주기
저는 앞으로도 이 replication 된 몽고를 사용해야 하기 때문에 미리 host(경로 /etc/hosts)에 아래와 같이 등록을 해주었습니다.
127.0.0.1 mongo-1
127.0.0.1 mongo-2
127.0.0.1 mongo-3
테스트
replication이 제대로 구성되었다면 이제 데이터를 하나 넣고 나머지 인스턴스에도 제대로 데이터가 존재하는지 확인해보면 될 것 같습니다. terminal을 열고 mongo-1(port= 30000), mongo-2(port=30001)에 접속합니다. 각각 인스턴스에 해당 명령어들을 통해 replication이 되는지 확인하면 완료입니다.
mongo-1
# connect mongo-1
mongo --port 30000
# create database and use it
use test
# create collection and insert data
db.user.insert({'name':'mojong'})
# find
db.user.find()
mongo-2
# connect mongo-2
mongo --port 30001
# enable read operations on replica set’s secondary node
rs.slaveOk()
use test
db.user.find()
'Programming > 데이터베이스' 카테고리의 다른 글
[MariaDB] 변수 사용해서 시퀀스 테이블 초기화하기 (0) | 2023.06.24 |
---|---|
[MongoDB] Transaction (0) | 2022.10.23 |
VIEW 알고리즘 이해하기 - TEMPTABLE 편 (0) | 2022.08.13 |
VIEW 알고리즘 이해하기 - MERGE 편 (0) | 2022.08.11 |
MongoDB 시간 관련 쿼리 주의할 점 (0) | 2022.08.09 |