Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

자체 관리형 복제본 세트에 구성원 추가

이 페이지의 내용

  • 개요
  • 요구 사항:
  • 절차

이 튜토리얼에서는 기존 복제본 세트에 멤버를 추가하는 방법을 설명합니다. 복제 배포 패턴에 관한 배경 지식은 복제본 세트 배포 아키텍처 문서에서 확인하세요.

복제본 세트에서는 최대 7명의 투표 멤버를 보유할 수 있습니다. 이미 투표 멤버가 7명이 있는 복제본 세트에 멤버를 추가하려면, 해당 멤버를 비투표 멤버로 추가하거나 existing member에서 투표권을 제거해야 합니다.

프로덕션 배포에서는 init 스크립트를 구성하여 멤버 프로세스를 관리할 수 있습니다.

다음 절차를 사용하여 기존 복제본 세트에 새 멤버를 추가할 수 있습니다.

경고

각 복제본 세트 노드는 단 하나의 복제본 세트에만 속해야 합니다. 복제본 세트 노드는 둘 이상의 복제본 세트에 속할 수 없습니다.

다음 절차를 사용하여 제거된 노드를 다시 추가할 수 있습니다.

제거된 노드의 데이터가 비교적 최신인 경우, 노드는 복구되어 복제본 세트의 다른 노드를 따라잡습니다.

중요

독립형 모드에 있는 동안 제거된 노드에 새로 복제된 컬렉션을 생성하지 마세요. 독립형 노드가 복제본 세트에 다시 합류하면 새 컬렉션에 대한 후속 작업에서 오류가 발생합니다.

기존 멤버의 백업 또는 스냅샷이 있는 경우, 데이터 파일(예시: dbPath 디렉토리)을 새 시스템으로 이동하고 이를 사용하여 새 멤버를 빠르게 시작할 수 있습니다. 파일은 다음과 같아야 합니다.

  • 동일한 복제본 세트의 노드로부터 받은 데이터 파일의 유효한 사본입니다. 자세한 내용은 파일 시스템 스냅샷을 사용한 자체 관형 배포 백업 및 복원 문서를 참조하세요.

    중요

    항상 파일 시스템 스냅샷을 사용하여 기존 복제본 세트의 멤버 사본을 만듭니다. 새로운 복제본 세트 멤버를 시드하는 데에 mongodumpmongorestore를 사용하지 않습니다.

  • 프라이머리oplog에서 가장 오래된 작업보다 최신 작업입니다. 새 멤버는 프라이머리의 oplog의 작업을 적용하여 최신 멤버가 될 수 있어야 합니다.

경고

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

2} 및mongod MongoDB mongos 바이너리는 기본적으로 로컬 호스트에 바인딩됩니다. 바이너리에 대해 net.ipv6 구성 파일 설정 또는 --ipv6 명령줄 옵션이 설정되어 있으면 바이너리가 로컬 호스트 IPv6 주소에 추가적으로 바인딩됩니다.

기본적으로 로컬 호스트에 바인딩된 mongodmongos는 동일한 컴퓨터에서 실행 중인 클라이언트의 연결만 허용합니다. 이 바인딩 동작에는 mongosh 및 복제본 집합 또는 샤딩된 클러스터의 다른 멤버가 포함됩니다. 원격 클라이언트는 로컬 호스트에만 바인딩된 바이너리에는 연결할 수 없습니다.

기본 바인딩을 재정의하고 다른 IP 주소에 바인딩하려면 net.bindIp 구성 파일 설정 또는 --bind_ip 명령줄 옵션을 사용하여 호스트 이름 또는 IP 주소 목록을 지정합니다.

경고

예를 들어 다음 mongod 인스턴스는 로컬 호스트와 IP 주소 198.51.100.1 와 연결된 호스트명 My-Example-Associated-Hostname에 모두 바인딩됩니다.

mongod --bind_ip localhost,My-Example-Associated-Hostname

이 인스턴스에 연결하려면 원격 클라이언트가 호스트 이름 또는 관련 IP 주소 198.51.100.1를 지정해야 합니다.

mongosh --host My-Example-Associated-Hostname
mongosh --host 198.51.100.1

중요

변경된 IP 주소로 인해 구성이 업데이트되는 것을 방지하려면 IP 주소 대신 DNS 호스트 이름을 사용하세요. 특히 복제본 세트 구성원 또는 샤딩된 클러스터 구성원을 구성할 때 IP 주소 대신 DNS 호스트 이름을 사용하는 것이 중요합니다.

IP 주소 대신 호스트 이름을 사용하여 스플릿 네트워크 호라이즌 전반에 걸쳐 클러스터를 구성하세요. MongoDB 5.0부터 IP 주소로만 구성된 노드는 스타트업 유효성 검사에 실패하며 시작되지 않습니다.

  1. 활성 복제본 세트입니다.

  2. 네트워크를 통해 활성 복제본 세트에서 액세스할 수 있는 데이터 세트를 지원할 수 있는 새로운 MongoDB 시스템입니다.

아니면 MongoDB 설치 튜토리얼자체 관리형 복제본 세트 배포 튜토리얼을 사용합니다.

기존 복제본 세트에 새 멤버를 추가하기 전에 다음 전략 중 하나를 사용하여 새 멤버의 데이터 디렉토리를 준비합니다.

  • 새 구성원의 데이터 디렉터리에 데이터가 포함되어 있지 않은 지 확인합니다. 새 멤버는 기존 멤버에서 데이터를 복사합니다.

    새 멤버가 복구 중인 상태인 경우, 해당 멤버는 종료 후 세컨더리 멤버가 되어야만 MongoDB가 복제 프로세스의 일환으로 모든 데이터를 복사할 수 있습니다. 이 프로세스는 시간이 걸리지만 관리자의 개입이 필요하지 않습니다.

  • 기존 멤버에서 데이터 디렉토리를 수동으로 복사합니다. 새 멤버는 세컨더리 멤버가 되며 복제본 세트의 현재 상태를 따라잡게 됩니다. 데이터를 복사하면 새 멤버가 최신 멤버가 되는 데 걸리는 시간이 단축될 수 있습니다.

    데이터 디렉터리를 새 멤버에 복사할 수 있는지 확인하고 Oplog에서 허용하는 창 내에서 복제를 시작합니다. 그렇지 않으면 새 인스턴스가 초기 동기화를 수행해야 하며, 이 경우 자체 관리 복제 세트 멤버 재동기화에 설명된 대로 데이터가 완전히 재동기화됩니다.

    rs.printReplicationInfo()를 사용하여 oplog와 관련된 복제본 세트 멤버의 현재 상태를 확인합니다.

복제 배포 패턴에 대한 배경 지식은 복제 세트 배포 아키텍처 문서를 참조하세요.

중요

변경된 IP 주소로 인해 구성이 업데이트되는 것을 방지하려면 IP 주소 대신 DNS 호스트 이름을 사용하세요. 특히 복제본 세트 구성원 또는 샤딩된 클러스터 구성원을 구성할 때 IP 주소 대신 DNS 호스트 이름을 사용하는 것이 중요합니다.

IP 주소 대신 호스트 이름을 사용하여 스플릿 네트워크 호라이즌 전반에 걸쳐 클러스터를 구성하세요. MongoDB 5.0부터 IP 주소로만 구성된 노드는 스타트업 유효성 검사에 실패하며 시작되지 않습니다.

  1. mongod 인스턴스를 시작합니다. 데이터 디렉토리와 복제본 세트 이름을 지정합니다. 다음 예시에서는 /srv/mongodb/db0 데이터 디렉토리와 rs0 복제본 세트를 지정합니다.

    mongod --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<hostname(s)|ip address(es)>

    경고

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

    구성 옵션에 대한 자세한 내용은 mongod 매뉴얼 페이지를 참조하십시오.

    참고

    옵션

    mongod.conf 구성 파일에 데이터 디렉토리, 복제본 세트 이름 및 IP 바인딩을 지정하고 다음 명령으로 mongod를 시작할 수 있습니다.

    mongod --config /etc/mongod.conf
  2. 복제본 세트의 프라이머리에 연결합니다.

    프라이머리에 연결되어 있는 동안에만 멤버를 추가할 수 있습니다. 어느 멤버가 프라이머리인지 모르는 경우, 복제본 세트의 어느 멤버에든 로그인하여 db.hello() 명령을 실행합니다.

  3. rs.add()를 사용하여 복제본 세트에 새 멤버를 추가합니다. member configuration document를 메서드에 전달합니다. 예를 들어, 호스트 mongodb3.example.net에 멤버를 추가하려면 다음 명령을 실행합니다.

    rs.add( { host: "mongodb3.example.net:27017" } )

    경고

    MongoDB 5.0 이전에는 데이터가 일관될 때까지 새로 추가된 보조 서버가 읽기 작업을 수행하거나 기본 서버가 될 수 없더라도 여전히 투표 멤버로 간주됩니다. 5.0 이전 버전의 MongoDB를 실행 중이고 votespriority 설정이 0보다 큰 보조를 추가하는 경우, 투표 회원의 과반수가 온라인 상태이지만 기본 회원을 선출할 수 없는 경우가 발생할 수 있습니다. 이러한 상황을 방지하려면 priority :0votes :0 새 보조를 처음에 추가하는 것이 좋습니다. 그런 다음 rs.status() 실행하여 멤버가 SECONDARY 상태로 전환되었는지 확인합니다. 마지막으로 rs.reconfig() 를 사용하여 우선 순위와 투표를 업데이트하세요.

돌아가기

복제본 세트로 변환

이 페이지의 내용