자체 관리형 복제본 세트 구성원의 우선 순위 조정
개요
복제본 세트 멤버의 priority
설정은 프라이머리를 위한 투표의 시기와 결과에 모두 영향을 줍니다. 우선 순위가 높은 멤버는 투표를 호출할 가능성이 더 높으며 선택될 가능성도 더 높습니다. 이 설정을 사용하여 특정 멤버가 기본이 될 가능성을 높이고 다른 멤버는 절대 기본이 되지 않도록 할 수 있습니다.
멤버의 priority
설정 값은 투표에서 해당 멤버의 priority
를 결정합니다. 숫자가 높을수록 우선 순위가 높습니다.
고려 사항
우선 순위를 수정하려면 복제본 구성 객체에서 members
배열을 업데이트합니다. 배열 인덱스는 0
으로 시작합니다. 이 인덱스 값을 복제본 세트 멤버의 배열에 있는 members[n]._id
필드 값으로 혼동하지 마세요.
priority
의 값은 임의의 부동 소수점일 수 있습니다(예: 0
에서 1000
사이의 숫자). priority
필드의 기본값은 1
입니다.
특정 멤버가 프라이머리로 선출되는 것을 차단하려면 우선 순위를 0
으로 지정합니다. 숨겨진 멤버와 지연된 멤버는 priority
가 0
으로 지정됩니다.
중재자는 0
의 우선순위를 가집니다.
예약된 유지 관리 기간 동안 우선 순위 설정을 조정합니다. 우선 순위를 재구성하면 현재 프라이머리가 강등되어 투표가 이루어질 수 있습니다. 투표 전에 프라이머리는 열려 있는 모든 클라이언트 연결을 종료합니다.
우선 순위 및 투표
members[n].priority
와 members[n].votes
는 다음과 같은 관계를 가집니다.
priority
2}가 0보다 큰 멤버는 0 를 가질 수votes
없습니다.
따라서 투표권이 없는 멤버의 priority
를 높이려면 votes
를 1
로 설정해야 하며, 투표권이 있는 복제본 세트 멤버의 수가 증가합니다. 투표권이 없는 멤버의 우선 순위를 높이기 전에 다음 사항을 고려하세요.
MongoDB 복제본 세트는 7명 이하의 투표 멤버를 가질 수 있습니다. 복제본 세트에 이미 투표권이 있는 멤버가 7명인 경우, 복제본 세트에 남아 있는 멤버의 우선 순위를
0
보다 크게 수정할 수 없습니다.복제본 재구성에서는 한 번에 투표 멤버를 한 명만 추가하거나 제거할 수 있습니다. 투표권이 없는 여러 멤버를
0
보다 높은 우선 순위를 갖도록 변경하려면replSetReconfig
또는rs.reconfig()
의 작업을 실행하여 한 번에 한 명의 멤버를 수정합니다. 자세한 내용은 재구성 시 한 번에 투표 멤버 하나 이상을 추가 또는 제거할 수 없음에서 확인 가능합니다.
절차
경고
rs.reconfig()
2} 셸 메서드는 현재 기본값이 강제로 물러나도록 하여 선거를 실시할 수 있습니다. 기본 연결이 종료되면mongod
모든 클라이언트 연결을 닫습니다. 일반적으로 10~20초 정도 소요되지만 예약된 유지 관리 기간 동안 이러한 변경을 수행해 보세요.유효성 검사 규칙은 MongoDB 버전마다 다를 수 있으므로 다른 MongoDB 버전의 멤버를 포함하는 복제본 세트를 다시 구성하지 마십시오.
각 멤버의 우선 순위 값을 변경합니다.
members
배열에 구성된 대로 각 멤버의 members[n].priority
값을 변경합니다.
cfg.members[0].priority = 0.5 cfg.members[1].priority = 2 cfg.members[2].priority = 2
이 작업 시퀀스는 cfg
값을 수정하여 members
배열에 정의된 처음 세 멤버의 우선 순위를 설정합니다.
복제본 세트에 새 구성을 지정합니다.
rs.reconfig()
를 사용하여 새 구성을 적용합니다.
rs.reconfig(cfg)
이 작업은 cfg
값으로 정의된 구성을 사용하여 복제본 세트의 구성을 업데이트합니다.