사용할 수 없는 멤버가 있는 자체 관리형 복제본 세트 재구성
이 페이지의 내용
대부분 의 멤버를 사용할 수 있을 때복제본 세트 를 재구성하려면 rs.reconfig()
복제본 세트 재구성 절차 의 예시 에따라 현재 프라이머리 에서 작업을 사용합니다.
이 문서에서는 오직 소수의 멤버가 액세스할 수 있는 경우 복제본 세트를 재구성하는 단계에 대해 설명합니다.
예를 들어, 지리적으로 분산된 복제본 세트에서 로컬 멤버 그룹이 과반수에 도달할 수 없는 경우 이 절차를 사용해야 할 수 있습니다. 이 상황에 대한 자세한 내용은 복제본 세트 투표를 참조하세요.
강제 재구성을 통한 재구성
이 절차를 사용하면 대부분의 복제본 세트 멤버가 다운되었거나 연결할 수 없는 상태에서 복구할 수 있습니다. 남아 있는 구성원에 연결하고 rs.reconfig()
메서드에 대한 force
옵션을 사용합니다.
force
옵션은 멤버에게 새 구성을 강제로 적용합니다. 이 절차는 치명적인 서비스 중단으로부터 복구하는 경우에만 사용하세요. 재구성할 때마다 force
를 사용하지 마세요. 또한, 자동 스크립트에서 force
옵션을 사용하지 말고 프라이머리 스크립트가 아직 있는 경우에는 force
를 사용하지 마세요.
다음을 강제로 재구성합니다.
남은 멤버를 백업합니다.
남은 멤버에 연결하고 현재 구성을 저장합니다. 구성을 저장하기 위해 다음 예시 명령을 고려하세요.
cfg = rs.conf() printjson(cfg) 동일한 멤버에서
members
배열에서 복제본 세트의 다운되었거나 연결할 수 없는 멤버를 제거하여 배열을 남은 단독 멤버와 동일하게 설정합니다. 이전 단계에서 생성된cfg
변수를 사용하는 다음 예시를 고려해보세요.cfg.members = [cfg.members[0] , cfg.members[4] , cfg.members[7]] 동일한 멤버에서
force
옵션을true
로 설정한 상태에서rs.reconfig()
명령을 사용하여 다음과 같이 세트를 재구성합니다.rs.reconfig(cfg, {force : true}) 이 연산을 수행하면 세컨더리 장치가 새 구성을 사용하게 됩니다. 그런 다음 구성은
members
배열에 나열된 모든 남아 있는 멤버에게 전파됩니다. 그런 다음 복제본 세트는 새로운 프라이머리를 설정합니다.참고
force : true
를 사용하면 복제본 세트 구성의 버전 번호가 수만 또는 수십만 단위로 크게 증가합니다. 이는 정상적인 현상이며 실수로 네트워크 파티션의 양쪽에서 강제로 재구성한 후 네트워크 분할이 종료되는 경우 세트 버전 충돌을 방지하기 위해 설계되었습니다.장애 또는 파티션이 일시적인 경우에는 가능한 한 빨리 제거된 구성원을 종료하거나 서비스를 해제해야 합니다.