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

자체 관리형 PSA 복제본 세트를 안전하게 수정하기

이 페이지의 내용

  • 개요
  • 절차

1차-보조-중재자(PSA) 복제본 세트를 재구성하거나 PSA 아키텍처로 변경할 때는 다음과 같은 경우에 특히 주의해야 합니다.

  • 기존 3명으로 구성된 PSA 아키텍처의 복제본 세트에서 세컨더리를 우선 순위가 0이 아닌 투표 및 데이터 보유 노드로 재구성하려고 합니다.

  • 프라이머리 한 명과 중재자 한 명으로 구성된 기존 두 멤버 복제본 세트에 우선 순위가 0이 아닌 새로운 투표 데이터 보유 노드를 추가하려고 합니다.

경고

추가하려는 세컨더리 가 지연되고 결과 복제본 세트 가 PSA 구성인 경우, 첫 번째 구성 변경으로 인해 "majority" 변경 사항을 커밋 해야 하는 노드 수가 변경됩니다. 이 경우 세컨더리 가 이를 따라잡을 때까지 커밋 점 이 지연됩니다.

이 문서에서는 이러한 특정한 경우에 지정된 헬퍼 메서드 를 사용 하지 않고 복제본 세트를 rs.reconfigForPSASet() 재구성하는 절차를 간략하게 설명합니다.

앞의 작업 중 하나를 수행하는 경우 다음 두 단계를 통해 복제본 세트를 재구성해야 합니다.

  1. { votes: 1, priority: 0 } 으로 세컨더리를 추가하거나 수정하려면 복제본 세트를 재구성합니다.

  2. 추가되거나 수정된 세컨더리가 커밋된 모든 쓰기를 따라잡으면 우선 순위가 0이 아닌 { votes: 1, priority: <num> } 이 되도록 세컨더리를 재구성합니다.

2단계 접근 방식은 새 세컨더리가 이전 프라이머리의 쓰기를 모두 커밋하기 전에 새 세컨더리로 페일오버하는 경우 커밋된 쓰기를 롤백할 가능성을 방지합니다.

rs.reconfigForPSASet() 메서드를 실행하려면 복제본 세트의 프라이머리 에 연결해야 합니다.

1

투표, 데이터 보유 노드를 추가하거나 변경할 때 커밋되지 않은 쓰기가 롤백되는 것을 방지하려면 먼저 { priority: 0 } 가 있는 노드를 추가해야 합니다.

mongosh에서 복제본 세트 구성을 수정합니다. 기존 복제본 세트를 재구성하려면 먼저 rs.conf()를 사용하여 현재 구성을 검색하고 필요에 따라 구성 문서를 수정한 다음 수정된 문서를 rs.reconfig()에 전달합니다.

cfg = rs.conf();
cfg["members"] = [
{
// existing member or members
},
{
"_id" : <num>, // The array position of the new member in the
// ``members`` array.
"host" : <host>,
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : { <tags> },
"secondaryDelaySecs" : <num>,
"votes" : 1
},
{
// existing member or members
}
]
rs.reconfig(cfg);
2

세컨더리가 따라잡으면 우선순위를 원하는 수로 설정합니다. 이 재구성이 성공하기 전에 보조 서버는 투표가 0일 때 커밋된 모든 쓰기를 복제해야 합니다. 이는 rs.reconfig() 명령을 실행할 때 자동으로 확인됩니다.

cfg = rs.conf();
cfg["members"] = [
{
// existing member or members
},
{
"_id" : <num>, // The array position of the new member in the
// ``members`` array.
"host" : <host>,
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : <num>,
"tags" : { <tags> },
"secondaryDelaySecs" : <num>,
"votes" : 1
},
{
// existing member or members
}
]
rs.reconfig(cfg);

돌아가기

rename

이 페이지의 내용