Docs Menu

자체 관리형 세컨더리를 중재자로 전환

더 이상 데이터를 보유할 필요가 없지만 설정하다 가 프라이머리 를 선택할 수 있도록 설정하다 에 남아 있어야 하는 복제본 세트세컨더리있는 경우, 이 절차를 사용하여 세컨더리 를 중재자 로 변환할 수 있습니다. 튜토리얼. 두 절차는 운영상 동일합니다.

  1. 애플리케이션이 세컨더리에 직접 연결된 경우 MongoDB 쿼리가 세컨더리에 도달하지 않도록 애플리케이션을 수정합니다.

  2. 세컨더리를 종료합니다.

  3. 메서드를 호출하여 복제본 세트 에서 세컨더리 를 제거합니다.rs.remove() 의 현재 프라이머리 에 연결된 상태에서 mongosh 이 작업을 수행합니다.

    rs.remove("<hostname><:port>")
  4. mongosh에서 rs.conf() 메서드를 호출하여 복제본 세트에 더 이상 세컨더리가 포함되지 않는지 확인합니다.

    rs.conf()
  5. 세컨더리 데이터 디렉터리를 아카이브 폴더로 옮깁니다. 예를 들면 다음과 같습니다.

    mv /data/db /data/db-old

    참고

    옵션

    대신 데이터를 삭제할 수 있습니다.

  6. mongod 인스턴스를 다시 시작할 때 가리킬 새 빈 데이터 디렉토리를 만듭니다. 이전 이름을 재사용할 수 있습니다. 예를 들면 다음과 같습니다.

    mkdir /data/db
  7. 포트 번호, 빈 데이터 디렉터리 및 복제본 세트를 지정하여 세컨더리 인스턴스에 대한 mongod 인스턴스를 재시작합니다. 이전에 사용한 것과 동일한 포트 번호를 사용할 수 있습니다. 다음과 유사한 명령을 실행합니다.

    경고

    인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.

    mongod --port 27021 --dbpath /data/db --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  8. mongosh에서 rs.addArb() 메서드를 사용하여 세컨더리를 중재자로 변환합니다.

    rs.addArb("<hostname><:port>")
  9. mongosh에서 rs.conf() 메서드를 호출하여 중재자가 복제본 세트에 속하는지 확인합니다.

    rs.conf()

    중재자 멤버에는 다음이 포함되어야 합니다.

    "arbiterOnly" : true
  1. 애플리케이션이 세컨더리 서버에 직접 연결하거나 세컨더리 서버를 참조하는 연결 문자열이 있는 경우 MongoDB 쿼리가 세컨더리 서버에 도달하지 않도록 애플리케이션을 수정합니다.

  2. 새 포트 번호와 함께 사용할 빈 데이터 디렉토리를 새로 생성합니다. 예를 들면 다음과 같습니다.

    mkdir /data/db-temp
  3. 새 데이터 디렉터리와 기존 복제본 세트를 지정하여 새 포트 번호에서 새 mongod 인스턴스를 시작합니다. 다음과 유사한 명령을 실행합니다.

    경고

    인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.

    mongod --port 27021 --dbpath /data/db-temp --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  4. 현재 프라이머리에 연결된 mongosh에서 rs.addArb() 메서드를 사용하여 새 mongod 인스턴스를 중재자로 변환합니다.

    rs.addArb("<hostname><:port>")
  5. mongosh에서 rs.conf() 메서드를 호출하여 중재자가 복제본 세트에 추가되었는지 확인합니다.

    rs.conf()

    중재자 멤버에는 다음이 포함되어야 합니다.

    "arbiterOnly" : true
  6. 세컨더리를 종료합니다.

  7. mongoshrs.remove() 메서드를 호출하여 복제본 세트에서 세컨더리를 제거합니다.

    rs.remove("<hostname><:port>")
  8. 복제본 세트에 이전 세컨더리가 더 이상 포함되어 있지 않은지 확인하려면 mongosh에서 rs.conf() 메서드를 호출합니다.

    rs.conf()
  9. 세컨더리 데이터 디렉터리를 아카이브 폴더로 옮깁니다. 예를 들면 다음과 같습니다.

    mv /data/db /data/db-old

    참고

    옵션

    대신 데이터를 삭제할 수 있습니다.