Back-End/MongoDB

[MongoDB] Replica Set Local에 구축하기

유자맛바나나 2024. 5. 31. 01:13

1. Mongodb 커뮤니티 버전 설치

1.1. 다운로드, 설치

MongoDB: 애플리케이션 데이터 플랫폼

 

MongoDB: 개발자 데이터 플랫폼

업계 최고의 최신 데이터베이스를 토대로 구축된 개발자 데이터 플랫폼을 사용해 아이디어를 더욱 빠르게 실현하세요. 공통 쿼리 인터페이스와 개발자들이 원하는 데이터 모델을 사용하는 동

www.mongodb.com

 

 

 

 

제품 > 커뮤니티 에디션 클릭

 

Select package 클릭

 

 

다운로드

 

mongodb-macos-aarch64-7.0.6.tgz 파일을 압축 해제하면 MongoDB 설치가 된 것이다

 

 

1.2. 기본 세팅

  1. 적절한 위치에 다음 폴더들을 생성한다
    1. mongodb
    2. mongodb/data : mongodb 인스턴스가 데이터를 저장시킬 위치
    3. mongodb/log : mongodb 실행중 생기는 log를 저장할 위치
    4. mongodb/config : mongodb 설정 파일 위치
  2. mongodb-macos-aarch64-7.0.6를 mongodb 폴더에 이동시킨다

 

2. MongoDB 단일 인스턴스 실행

2.1. Data 폴더 생성

아래 경로로 폴더 생성

mongodb/data/my-mongodb

 

 

2.2. 인스턴스 실행 (MongoDB 서버 띄우기)

실행 방법1. Binary 옵션 이용

1. bin 디렉토리로 이동

$ cd /mongodb/mongodb-macos-aarch64-7.0.6/bin

 

2. 터미널에서 mongod 파일을 이용해 다음 명령어를 실행 

$ ./mongod --port 27017 --bind_ip "0.0.0.0" --dbpath /mongodb/data/my-mongodb

 

실행 방법2. Config File 이용

1. 아래와 같이 Config File 생성

net:
  port: 27017 # 첫 번째 인스턴스의 port
  bindIp: 0.0.0.0 # 접속을 허용할 IP

storage:
  dbPath: "/mongodb/data/my-mongodb" # MongoDB 인스턴스가 데이터를 저장할 위치
  directoryPerDB: true # 데이터베이스 별로 storage 디렉토리를 만들겠다는 뜻

2. bin 디렉토리로 이동

3. 터미널에서 mongod 파일을 이용해 다음 명령어를 실행

$ ./mongod -f /mongodb/config/my-mongodb.config

 

3. Replica Set 구축

3.1. Replica Set을 구축할 인스턴스 1,2,3의 data 폴더 생성

아래 경로로 폴더 생성

mongodb/data/instance1
mongodb/data/instance2
mongodb/data/instance3

 

3.2. 각 인스턴스의 Config 파일 생성

1. mongodb/config/mongod1.conf 파일 생성 후 아래 내용 입력

net:
  port: 27017 # 첫 번째 인스턴스의 port
  bindIp: 0.0.0.0 # 접속을 허용할 IP

storage:
  dbPath: "/mongodb/data/instance1" # MongoDB 인스턴스가 데이터를 저장할 위치
  directoryPerDB: true # 데이터베이스 별로 storage 디렉토리를 만들겠다는 뜻

replication:
  oplogSizeMB: 128 # replica set의 oplog 크기
  replSetName: "rs1" # replica set의 이름

systemLog:
  path: "/mongodb/log/instance1.log" # MongoDB가 남기는 로그를 저장할 위치
  destination: "file" # 로그를 파일로 저장

2. mongod2.conf, mongod3.conf 생성 후 port, storage.dbPath, systemLog.path를 각각 수정해준다.

 

3.3. Replica Set의 각 인스턴스 실행

1. bin 디렉토리로 이동

$ cd /mongodb/mongodb-macos-aarch64-7.0.6/bin

 

2. mongod 파일을 이용해 instance1 실행

$ ./mongod -f /mongodb/config/mongod1.confg

 

3. instance2, 3도 이어서 실행

$ ./mongod -f /mongodb/config/mongod2.confg
$ ./mongod -f /mongodb/config/mongod3.confg

 

3.4. Primary로 선정할 인스턴스에 접속해서 replica set 구성 initialize

1. MongoDB Shell로 Primary로 선정할 instance1에 접속

2. 현재 Replica Set 구성이 되지 않았음을 확인

  • rs.status() 입력
  • MongoServerError: no replset config has been received 출력 확인

3. rs.initialize를 입력해 Replica Set을 구성하고, initialize를 입력한 인스턴스를 primary로 선출

  • 아래 코드 입력
rs.initiate({
	_id: "rs1"
	members: [
		{ _id: 0, host: "localhost: 27017" },
		{ _id: 1, host: "localhost: 27018" },
		{ _id: 2, host: "localhost: 27019" },
	],
});
  • 시간이 지남에 따라 primary 선출 작업이 진행되고, direct: other → direct: secondary → direct: primary 로 변경됨

4. Replica Set이 구성되었음을 확인

  • rs.status() 입력
  • 아래와 같은 내용을 확인