[MongoDB] Replica Set 구축해보기

기훈·2024년 3월 11일

MongoDB

목록 보기
26/28
  1. 링크에 접속하여 다운로드를 진행한다.

    링크에 접속하여 5.~ 버전의 Community Server를 다운로드한다. 		
    https://www.mongodb.com/try/download/community-kubernetes-operator
    
    링크에 접속하여 버전에 맞는 shell을 다운로드 한다.
    https://www.mongodb.com/try/download/shell
  1. 데이터 베이스로 사용할 dir 생성

    mkdir -p mongodb/data{1,2,3}
  2. 1번에서 다운받은 Community Server 파일의 bin 경로로 들어가 옵션을 실행한다.

    명령어 해석 mongod
    --replSet(replSet으로 구축한다)
    rs0(rs0이라는 이름으로)
    --port 27017(포트설정)
    --bind_ip "0.0.0.0"(어디서든 접근할 수 있도록 허용한다.)
    --dbpath ... (데이터 경로) 
    
    각각의 터미널을 열고 실행한다. (추후 각각의 프로세스가 하나의 프라이머리, 두개의 세컨더리로 설정된다.)
    mongod --replSet rs0 --port 27017 --bind_ip "0.0.0.0" --dbpath /Users/dustin/Desktop/common/ReplicaSet/mongodb/data1  --oplogSize 128
    
    mongod --replSet rs0 --port 27018 --bind_ip "0.0.0.0" --dbpath /Users/dustin/Desktop/common/ReplicaSet/mongodb/data2  --oplogSize 128
    
    mongod --replSet rs0 --port 27019 --bind_ip "0.0.0.0" --dbpath /Users/dustin/Desktop/common/ReplicaSet/mongodb/data3  --oplogSize 128
  3. 새로운 터미널을 1번에서 다운받은 shell 파일의 bin 경로로 들어가 몽고 쉘에 접속한다.

    ./mongosh "mongodb://localhost:27017"
  4. rs.status()로 현재 상태를 확인 후 config를 등록 해준다.

    rs.initiate({ _id: "rs1", members: [ { _id: 0, host: "localhost:27017" }, { _id: 1, host: "localhost:27018" }, { _id: 2, host: "localhost:27019" }] });
  5. 다시 rs.status()를 입력하여 상태를 확인한다.

    shell로 접속한 27017 포트의 데이터가 primary로 선출되어 있다.

    오류 모음

  • rs.status() 입력시 not running with --replset 오류

    이 오류의 원인은 예전 셋팅된 replSet 를 참고하고 있는 경우이다.

    해결과정
    몽고디비의 프로세스를 전부 종료 한 뒤 서버를 다시 실행한 후 커맨드에 재접속 한다.
    db.adminCommand( { shutdown : 1} )를 통한 프로세스 종료 실행

    mongosh 커맨드에서 나온 후 서버 재시작
    brew services restart mongodb/brew/mongodb-community@5.0

    다시 쉘이 접속하여 rs.status() 명령어 입력

  • rs.status() 입력시 Uncaught:
    MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017, connect ECONNREFUSED ::1:27017

    이 부분에 대해서는 정확한 원인을 파악하지 못했다. 내가 진행했던 조치를 적어보자면,

    1. 모든 터미널을 종료한다.
    2. 몽고를 실행시킨 모든 포트를 찾아 개별적으로 종료시킨다. (27017, 27018, 27019)
    3. 백그라운드로 실행된 몽고 서버를 종료한다.
    4. 1~3번을 진행한 후에도 같은 에러가 발생한다면 재부팅한다.

    이 오류를 다시 마주치면 해결할 자신이 없다..

0개의 댓글