자체 관리형 보조가 기본이 되는 것을 방지
개요
복제본 세트에서는 기본적으로 모든 세컨더리 멤버가 투표 과정을 통해 프라이머리 멤버가 될 수 있습니다. priority
를 사용하여 일부 멤버가 프라이머리가 될 가능성을 높이고 다른 멤버가 프라이머리가 될 가능성을 낮추거나 불가능하게 함으로써 투표 결과에 영향을 줄 수 있습니다.
프라이머리가 될 수 없는 세컨더리는 투표를 트리거할 수 없습니다. 해당 세컨더리는 이 점을 제외하고는 다른 세컨더리와 차이점이 없습니다.
페일오버에서 세컨더리 멤버가 프라이머리가 되지 않도록 하려면 여기에 설명된 대로 세컨더리에 0
의 우선 순위를 할당하세요. 세컨더리 멤버와 그 용도에 대한 자세한 설명은 우선순위 0 복제본 세트 멤버를 참조하세요.
고려 사항
복제본 구성 객체를 업데이트할 때 배열 인덱스가 있는 members
배열의 복제본 세트 멤버에 액세스합니다. 배열 인덱스는 0
으로 시작합니다. 이 인덱스 값을 members
배열의 각 문서에 있는 members[n]._id
필드 값과 혼동하지 마세요.
참고
MongoDB는 현재 프라이머리가 0
의 우선 순위를 갖는 것을 허용하지 않습니다. 현재의 프라이머리가 다시 프라이머리가 되지 않도록 하려면 먼저 rs.stepDown()
을 사용하여 현재 프라이머리를 물러나게 합니다.
절차
이 튜토리얼에서는 멤버가 5개인 샘플 복제본 세트를 사용합니다.
경고
rs.reconfig()
2} 셸 메서드는 현재 기본값이 강제로 물러나도록 하여 선거를 실시할 수 있습니다. 기본 연결이 종료되면mongod
모든 클라이언트 연결을 닫습니다. 일반적으로 10~20초 정도 소요되지만 예약된 유지 관리 기간 동안 이러한 변경을 수행해 보세요.유효성 검사 규칙은 MongoDB 버전마다 다를 수 있으므로 다른 MongoDB 버전의 멤버를 포함하는 복제본 세트를 다시 구성하지 마십시오.
현재 복제본 세트 구성을 검색합니다.
rs.conf()
메서드는 복제본 세트의 현재 구성이 포함된 복제본 세트 구성 문서를 반환합니다.
mongosh
에서 프라이머리에 연결된 경우 rs.conf()
메서드를 실행하고 결과를 변수에 할당합니다.
cfg = rs.conf()
반환된 문서에는 복제본 세트의 각 멤버에 대해 하나의 문서로 구성된 멤버 구성 문서 배열을 포함하는 members
필드가 포함되어 있습니다.
의 우선 순위 0
값을 할당합니다.
세컨더리가 프라이머리가 되는 것을 방지하려면 세컨더리 멤버의 members[n].priority
를 0
으로 업데이트합니다.
복제본 세트의 멤버에 우선순위 값을 지정하려면 배열 인덱스를 사용하여 멤버 구성 문서에 액세스합니다. 이 튜토리얼에서 변경할 세컨더리 멤버는 members
배열의 2
위치에 있는 구성 문서에 해당합니다.
cfg.members[2].priority = 0
구성 변경 사항은 복제본 세트를 다시 구성할 때까지 적용되지 않습니다.
복제본 세트를 재구성합니다.
rs.reconfig()
메서드를 사용하여 업데이트된 복제본 세트 구성 문서로 복제본 세트를 다시 구성합니다.
cfg
변수를 rs.reconfig()
메서드에 전달합니다.
rs.reconfig(cfg)