문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

복제본 집합에서 구성원 제거

이 페이지의 내용

  • 다음을 사용하여 멤버 제거 rs.remove()
  • 다음을 사용하여 멤버 제거 rs.reconfig()

복제본 세트의 멤버는 다음 절차 중 하나를 사용하여 제거 가능합니다.

  1. 제거하려는 멤버의 mongod 인스턴스를 종료합니다. 인스턴스를 종료하려면 mongosh 를 사용하여 연결하고 db.shutdownServer() 메서드를 사용합니다.

  2. 복제본 세트의 현재 프라이머리에 연결합니다. 현재 프라이머리를 확인하려면 복제본 세트의 무작위 멤버에 연결된 상태에서 db.hello()를 사용합니다.

  3. 다음 양식 중 rs.remove()를 사용하여 멤버를 제거합니다.

    rs.remove("mongod3.example.net:27017")
    rs.remove("mongod3.example.net")

    복제본 세트에서 새 프라이머리를 선택해야 하는 경우 MongoDB는 셸 연결을 잠시 해제할 수 있습니다. 이러한 경우 셸이 자동으로 다시 연결됩니다. 명령이 성공하더라도 셸에 DBClientCursor::init call() failed 오류가 표시될 수 있습니다.

members 배열에서 해당 멤버가 제거된 복제본 구성 문서를 사용하여 복제본 세트 재구성하는 방식으로 멤버를 제거할 수 있습니다.

rs.reconfig() 는 한 번에 1 개 이하의 voting 멤버를 추가하거나 제거할 수 있습니다. 복제본 세트에서 여러 투표 멤버를 제거하려면 rs.reconfig() 작업을 실행하여 한 번에 한 멤버를 제거합니다. 자세한 내용은 재구성으로 한 번에 하나 이상의 투표권을 가진 멤버를 추가 또는 제거할 수 없음 을 참조하세요.

  1. 제거하려는 멤버의 mongod 인스턴스를 종료합니다. 인스턴스를 종료하려면 mongosh 를 사용하여 연결하고 db.shutdownServer() 메서드를 사용합니다.

  2. 복제본 세트의 현재 프라이머리에 연결합니다. 현재 프라이머리를 확인하려면 복제본 세트의 무작위 멤버에 연결된 상태에서 db.hello()를 사용합니다.

  3. rs.conf() 메서드를 실행하여 현재 구성 문서를 확인하고 members 배열에서 제거할 멤버의 위치를 결정합니다.

    예제

    mongod_C.example.net 은 아래 구성 파일의 2 위치에 있습니다.

    {
    "_id" : "rs",
    "version" : 7,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongod_A.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongod_B.example.net:27017"
    },
    {
    "_id" : 2,
    "host" : "mongod_C.example.net:27017"
    }
    ]
    }
  4. 현재 구성 문서를 cfg 변수에 할당합니다.

    cfg = rs.conf()
  5. cfg 객체를 수정하여 멤버를 제거합니다.

    예제

    mongod_C.example.net:27017를 제거하려면 다음 JavaScript 작업을 사용합니다.

    cfg.members.splice(2,1)
  6. 다음을 실행하여 복제본 세트 구성 문서를 새 구성으로 덮어씁니다.

    rs.reconfig(cfg)
  7. 새 구성을 확인하려면 rs.conf() 실행합니다.

    위의 예에서 출력은 다음과 같습니다:

    {
    "_id" : "rs",
    "version" : 8,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongod_A.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongod_B.example.net:27017"
    }
    ]
    }
← 복제본 세트에 멤버 추가