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

rs.reconfigForPSASet()

이 페이지의 내용

  • 구문
  • 행동
  • 예시
rs.reconfigForPSASet( memberIndex, config, { options } )

버전 5.0에 추가.

프라이머리-세컨더리-중재자(PSA) 복제본 세트 또는 PSA 아키텍처로 변경되는 복제본 세트에서 일부 재구성 변경을 안전하게 수행합니다. 이 방법은 다음 중 한 가지 경우에만 사용해야 합니다.

  • PSA 아키텍처가 있는 기존 3노드 복제본 세트 의 세컨더리 노드를 0이 아닌 priority이 있는 투표 데이터 보유 노드 로 재구성하려고 합니다.

  • 하나의 투표 데이터 보유 노드 및 하나의 중재자를 포함하는 기존 2개의 멤버 복제본 세트에 우선 순위가 0이 아닌 새로운 투표 데이터 보유 노드를 추가하려고 합니다.

경고

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

이 메서드의 동작에 대한 자세한 내용은 동작을 참조하세요.

rs.reconfigForPSASet() 메서드의 구문은 다음과 같습니다.

rs.reconfigForPSASet(
memberIndex: <num>,
config: <configuration>,
{
"force" : <boolean>,
"maxTimeMS" : <int>
}
)
Parameter
유형
설명
memberIndex
integer
추가되거나 수정되는 세컨더리의 인덱스입니다.
config
문서
복제본 세트의 새로운 구성을 지정하는 문서입니다.
force
부울

옵션

경고: rs.reconfigForPSASet() 와 함께 force: true 메서드를 실행하는 것은 권장되지 않으며, 이로 인해 커밋된 쓰기가 롤백될 수 있습니다.

사용 가능한 복제본 세트 구성원이 새 구성을 수락하도록 하려면 true 지정합니다. 기본값은 false입니다.

강제 재구성으로 인해 개의 "majority" 커밋된 쓰기 롤백을 포함하여 예기치 않거나 원치 않는 동작이 발생할 수 있습니다.

maxTimeMS
integer

옵션

rs.reconfigForPSASet() 작업 중에 각 재구성을 처리하는 데 걸리는 시간 제한 누계를 밀리초 단위로 지정합니다. rs.reconfigForPSASet()는 복제본 세트 구성이 과반수 이상의 복제본 세트 멤버에 전파될 때까지 무기한으로 기다리도록 기본 설정되어 있습니다.

rs.reconfigForPSASet() 메서드는 복제본 세트를 두 단계로 재구성합니다.

  1. 이 메서드는 { votes: 1, priority: 0 } 으로 보조 세트를 추가하거나 수정하도록 복제본 세트를 재구성합니다.

  2. 추가 또는 수정된 세컨더리가 모든 커밋된 쓰기를 따라잡으면 메서드는 세컨더리를 재구성하여 priorityrs.reconfigForPSASet() 명령({ votes: 1, priority: <num> })에 지정되도록 합니다.

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

0}이라는 이름의 복제본 rs0 집합은 다음과 같은 구성을 가집니다:

{
"_id" : "rs0",
"version" : 1,
"term": 1,
"members" : [
{
"_id" : 0,
"host" : "mongodb0.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
},
{
"_id" : 2,
"host" : "mongodb1.example.net:27017",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
}
],
"protocolVersion" : Long("1"),
"writeConcernMajorityJournalDefault": true,
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : 2000,
"getLastErrorModes" : {},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("60e6f83923193faa336889d2")
}
}

다음 작업은 복제본 세트에 새 세컨더리를 추가합니다. 작업은 프라이머리에 연결된 동안 mongosh shell에서 실행됩니다.

cfg = rs.conf();
cfg["members"] = [
{
"_id" : 0,
"host" : "mongodb0.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
},
{
"_id" : 1,
"host" : "mongodb1.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 2,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
},
{
"_id" : 2,
"host" : "mongodb2.example.net:27017",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : {},
"secondaryDelaySecs" : Long("0"),
"votes" : 1
}
]
rs.reconfigForPSASet(1, cfg);
  1. 첫 번째 성명서는 rs.conf() 메서드를 사용해 복제본 세트의 현재 구성을 포함하고 있는 문서를 조회하고 문서를 로컬 변수 cfg로 저장합니다.

  2. 두 번째 문은 members 배열에 새 세컨더리를 추가합니다. 이 구성에서는 새 세컨더리가 memberIndex 1에 추가됩니다. memberIndex는 배열 인덱스와 동일합니다. 추가 설정은 복제본 세트 구성 설정을 참조하세요.

  3. 마지막 문은 memberIndex 1 및 수정된 cfg를 사용하여 rs.reconfigForPSASet() 메서드를 호출합니다. memberIndexmembers 배열에 있는 새 노드의 배열 위치입니다. 재구성에 성공할 시 복제본 세트 구성은 다음과 유사합니다.

    {
    "_id" : "rs0",
    "version" : 1,
    "term": 1,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017",
    "arbiterOnly" : false,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 1,
    "tags" : {},
    "secondaryDelaySecs" : Long("0"),
    "votes" : 1
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017",
    "arbiterOnly" : false,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 2,
    "tags" : {},
    "secondaryDelaySecs" : Long("0"),
    "votes" : 1
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017",
    "arbiterOnly" : true,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 0,
    "tags" : {},
    "secondaryDelaySecs" : Long("0"),
    "votes" : 1
    }
    ],
    "protocolVersion" : Long("1"),
    "writeConcernMajorityJournalDefault": true,
    "settings" : {
    "chainingAllowed" : true,
    "heartbeatIntervalMillis" : 2000,
    "heartbeatTimeoutSecs" : 10,
    "electionTimeoutMillis" : 10000,
    "catchUpTimeoutMillis" : 2000,
    "getLastErrorModes" : {},
    "getLastErrorDefaults" : {
    "w" : 1,
    "wtimeout" : 0
    },
    "replicaSetId" : ObjectId("60e6f83923193faa336889d2")
    }
    }

다음도 참조하세요.

돌아가기

rs.reconfig

이 페이지의 내용