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

사용할 수 없는 멤버가 있는 자체 관리형 복제본 세트 재구성

이 페이지의 내용

  • 강제 재구성을 통한 재구성

대부분 의 멤버를 사용할 수 있을 때복제본 세트 를 재구성하려면 rs.reconfig() 복제본 세트 재구성 절차 의 예시 따라 현재 프라이머리 에서 작업을 사용합니다.

이 문서에서는 오직 소수의 멤버가 액세스할 수 있는 경우 복제본 세트를 재구성하는 단계에 대해 설명합니다.

예를 들어, 지리적으로 분산된 복제본 세트에서 로컬 멤버 그룹이 과반수에 도달할 수 없는 경우 이 절차를 사용해야 할 수 있습니다. 이 상황에 대한 자세한 내용은 복제본 세트 투표를 참조하세요.

이 절차를 사용하면 대부분의 복제본 세트 멤버가 다운되었거나 연결할 수 없는 상태에서 복구할 수 있습니다. 남아 있는 구성원에 연결하고 rs.reconfig() 메서드에 대한 force 옵션을 사용합니다.

force 옵션은 멤버에게 새 구성을 강제로 적용합니다. 이 절차는 치명적인 서비스 중단으로부터 복구하는 경우에만 사용하세요. 재구성할 때마다 force를 사용하지 마세요. 또한, 자동 스크립트에서 force 옵션을 사용하지 말고 프라이머리 스크립트가 아직 있는 경우에는 force를 사용하지 마세요.

다음을 강제로 재구성합니다.

  1. 남은 멤버를 백업합니다.

  2. 남은 멤버에 연결하고 현재 구성을 저장합니다. 구성을 저장하기 위해 다음 예시 명령을 고려하세요.

    cfg = rs.conf()
    printjson(cfg)
  3. 동일한 멤버에서 members 배열에서 복제본 세트의 다운되었거나 연결할 수 없는 멤버를 제거하여 배열을 남은 단독 멤버와 동일하게 설정합니다. 이전 단계에서 생성된 cfg 변수를 사용하는 다음 예시를 고려해보세요.

    cfg.members = [cfg.members[0] , cfg.members[4] , cfg.members[7]]
  4. 동일한 멤버에서 force 옵션을 true로 설정한 상태에서 rs.reconfig() 명령을 사용하여 다음과 같이 세트를 재구성합니다.

    rs.reconfig(cfg, {force : true})

    이 연산을 수행하면 세컨더리 장치가 새 구성을 사용하게 됩니다. 그런 다음 구성은 members 배열에 나열된 모든 남아 있는 멤버에게 전파됩니다. 그런 다음 복제본 세트는 새로운 프라이머리를 설정합니다.

    참고

    force : true를 사용하면 복제본 세트 구성의 버전 번호가 수만 또는 수십만 단위로 크게 증가합니다. 이는 정상적인 현상이며 실수로 네트워크 파티션의 양쪽에서 강제로 재구성한 후 네트워크 분할이 종료되는 경우 세트 버전 충돌을 방지하기 위해 설계되었습니다.

  5. 장애 또는 파티션이 일시적인 경우에는 가능한 한 빨리 제거된 구성원을 종료하거나 서비스를 해제해야 합니다.

다음도 참조하세요.

돌아가기

멤버 재동기화