AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

자체 관리형 복제본 세트 구성

rs.conf() 메소드 또는 replSetGetConfig 명령을 사용하여 복제본 세트의 구성에 액세스할 수 있습니다.

복제본 세트의 구성을 수정하려면 rs.reconfig() 메서드를 사용하여 구성 문서를 메서드에 전달합니다.

경고

유효성 검사 규칙은 MongoDB 버전마다 다를 수 있으므로 다른 MongoDB 버전의 멤버를 포함하는 복제본 세트를 다시 구성하지 마십시오.

다음 문서는 복제본 세트 구성 문서의 표현을 제공합니다. 복제본 세트의 구성에는 다음과 같은 설정의 하위 집합만 포함될 수 있습니다.

{
_id: <string>,
version: <int>,
term: <int>,
protocolVersion: <number>,
writeConcernMajorityJournalDefault: <boolean>,
configsvr: <boolean>,
members: [
{
_id: <int>,
host: <string>,
arbiterOnly: <boolean>,
buildIndexes: <boolean>,
hidden: <boolean>,
priority: <number>,
tags: <document>,
secondaryDelaySecs: <int>,
votes: <number>
},
...
],
settings: {
chainingAllowed : <boolean>,
heartbeatIntervalMillis : <int>,
heartbeatTimeoutSecs: <int>,
electionTimeoutMillis : <int>,
catchUpTimeoutMillis : <int>,
getLastErrorModes : <document>,
getLastErrorDefaults : <document>,
replicaSetId: <ObjectId>
}
}
_id

유형: 문자열

복제본 세트의 이름입니다.

_id 는 명령줄에서 replication.replSetName 또는 mongod에 지정된 --replSet의 값과 동일해야 합니다.

replSetName 또는 --replSet로 복제본 세트 이름 설정에 대한 정보를 확인합니다.

version

형식: int

구성의 이전 버전과 복제본 세트 구성 문서의 개정판을 구별하는 데 사용되는 증분 번호입니다.

복제본 설정하다 노드는 와 를 사용하여 "최신"에 term 대한 합의를 도출합니다. 복제본 구성. 구성원이 version term 복제본 구성 문서를 비교할 때 term 값이 더 큰 구성 문서 "최신" 문서로 간주됩니다. 가 version 같거나 없는 경우, 값이 더 큰 구성 문서 "최신"으로 간주됩니다.

term

형식: int

featureCompatibilityVersion (FCV) '4.4' 이상에서만 사용할 수 있습니다.

복제본 세트 구성 문서 의 수정본을 구성의 이전 이터레이션과 구별하는 데 사용되는 증분 숫자입니다.term 구성 문서 는 재구성을 수행한 복제본 세트 프라이머리 의 텀 일치합니다. 프라이머리 투표 에서 승리한 후 한 단계 업그레이드될 때마다 텀 증가시킵니다. 프라이머리 연산에서 term replSetReconfig 명시적으로 설정하다 경우 필드 무시합니다.

강제 재구성을 실행하면term필드 제거됩니다. 다음에 프라이머리 가replSetReconfig를 강제성 없이 발행할 때, 자체 텀 에term를 설정합니다.

복제본 설정하다 노드는 와 를 사용하여 "최신"에 term 대한 합의를 도출합니다. 복제본 구성. 구성원이 version term 복제본 구성 문서를 비교할 때 term 값이 더 큰 구성 문서 "최신" 문서로 간주됩니다. 가 version 같거나 없는 경우, 값이 더 큰 구성 문서 "최신"으로 간주됩니다.

configsvr

유형: 부울

기본값: false

샤딩된 클러스터의 config 서버에 복제본 세트를 사용할지 여부를 나타냅니다. 복제본 세트가 샤딩된 클러스터의 config 서버용인 경우 true로 설정합니다.

protocolVersion

유형: 숫자

기본값: 1

MongoDB는 protocolVersion: 1만 지원하며 더 이상 protocolVersion: 0을 지원하지 않습니다.

writeConcernMajorityJournalDefault

유형: 부울

기본값: true

쓰기 고려가 저널 옵션 j를 명시적으로 지정하지 않은 경우 { w: "majority" } 쓰기 고려의 동작을 결정합니다.

다음 표에는 writeConcernMajorityJournalDefault 값과 관련 { w: "majority" } 동작이 나열되어 있습니다.

{ w: "majority" } 행동

true

MongoDB는 대다수의 투표 멤버가 온디스크 저널에 쓰기를 수행한 후에 쓰기 작업을 승인합니다.

중요: writeConcernMajorityJournalDefaulttrue일 때 복제본 세트의 모든 투표 멤버는 저널링과 함께 실행되어야 합니다.

복제본 세트 의 투표 멤버가 인메모리 스토리지 엔진 writeConcernMajorityJournalDefault 사용하는 경우 false 를 로 설정하다 해야 합니다.

복제본 세트 의 투표 멤버가 인메모리 스토리지 엔진 writeConcernMajorityJournalDefault 사용하고 가 true "majority" 인 경우 쓰기 (write) 작업이 실패할 수 있습니다. 여기에는 명령과 "majority" mongosh 같이 replSetStepDown 본질적으로 쓰기 고려 (write concern) 사용하는 작업이나 사용자 "majority" 관리 메서드 및 역할 관리 메서드와같이 기본값 쓰기 고려 (write concern) 사용하는 다양한 메서드가 포함됩니다.

4.2 버전(및 4.0.13 및 3.6.14 )부터 복제본 세트 멤버가 인메모리 스토리지 엔진 (투표 또는 비투표)을 사용하지만 복제본 세트 의 writeConcernMajorityJournalDefault 가 true로 설정하다 복제본 세트 멤버가 스타트업 경고를 기록합니다.

거짓

MongoDB는 대다수의 투표 멤버가 메모리에 작업을 적용한 후에 쓰기 작업을 승인합니다.

경고:

복제본 세트 의 투표 멤버가 인메모리 스토리지 엔진 writeConcernMajorityJournalDefault 사용하는 경우 false 를 로 설정하다 해야 합니다.

4.2 버전(및 4.0.13 및 3.6.14 )부터 복제본 세트 멤버가 인메모리 스토리지 엔진 (투표 또는 비투표)을 사용하지만 복제본 세트 의 writeConcernMajorityJournalDefault 가 true로 설정하다 복제본 세트 멤버가 스타트업 경고를 기록합니다.

가 로 writeConcernMajorityJournalDefault false 설정하다 샤드 가 있는 샤딩된 클러스터 (예: 인메모리 스토리지 엔진 사용하는 투표 멤버가 있는 샤드 )에서는 트랜잭션을 실행 수 없습니다.

members

유형: 배열

복제본 세트 의 각 멤버에 대해 하나씩 멤버 구성 문서의 배열 . 배열 인덱스가 0인 배열 members 입니다.

각 멤버별 구성 문서에는 다음 필드가 포함될 수 있습니다.

members[n]._id

유형: integer

복제본 세트에 있는 멤버의 정수 식별자이며, 모든 멤버 간에 고유합니다.

MongoDB 5.0부터 값은 0 이상의 정수 값일 수 있습니다. 이전에는 이 값이 0 부터 255까지의 정수로 제한되었습니다.

_id 복제본 세트 멤버에는 고유한 _id members[n]이(가) 있어야 _id 합니다. 현재 구성에서 해당 를 사용하는 항목이 없더라도 값을 재사용하지 않도록 합니다.

일단 설정하다 후에는 _id 멤버의 를 변경할 수 없습니다.

참고

복제본 구성 객체 업데이트할 때 배열 인덱스 있는 배열 의 members 복제본 세트 멤버에 액세스 . 배열 인덱스 로 시작합니다. 0 이 인덱스 값을 members[n]._id 배열 members 에 있는 각 문서 의 필드 값과 혼동하지 마세요.

members[n].host

유형: 문자열

세트 멤버의 호스트 이름 및 포트 번호(지정된 경우)입니다.

호스트 이름은 복제본 세트의 모든 호스트에서 해석할 수 있어야 합니다.

경고

members[n].host localhost 설정하다 localhost 의 모든 멤버가 로 해석되는 호스트에 있지 않는 한 또는 로컬 인터페이스로 해석되는 값을 보유할 수 없습니다.

members[n].arbiterOnly

선택 사항입니다.

유형: 부울

기본값: false

중재자를 식별하는 부울입니다. 값이 true이면 멤버가 중재자임을 나타냅니다.

rs.addArb()메서드를 사용하여 중재자 를 추가하는 경우 메서드는 추가된 멤버에 대해 자동으로members[n].arbiterOnlytrue로 설정합니다.

members[n].buildIndexes

선택 사항입니다.

유형: 부울

기본값: true

가 이 멤버에 대한 인덱스를 mongod 빌드하는지 여부를 나타내는 부울입니다. 복제본 세트 에 멤버를 추가할 때만 이 값을 설정하다 수 있습니다.members[n].buildIndexes 멤버가 설정하다 에 추가된 후에는 필드 변경할 수 없습니다. 멤버를 추가하려면 rs.add()rs.reconfig() 를 참조하세요.

클라이언트로부터 쿼리를 받는 mongod 인스턴스의 경우 false로 설정하지 마세요.

다음 조건에 모두 해당하는 경우, buildIndexesfalse로 설정하는 것이 유용할 수 있습니다.

  • 을(를) mongodump 사용하여 백업을 수행하는 데만 이 인스턴스 사용하고 있습니다.

  • 이 멤버는 쿼리를 받지 않습니다.

  • 인덱스 생성 및 유지 관리로 인해 호스트 시스템에 과부하가 걸립니다.

세컨더리는 false로 설정되더라도 복제에 필요한 작업을 용이하게 하기 위해 _id 필드에 인덱스를 생성할 것입니다.

경고

members[n].buildIndexes를 로 설정하다 false 경우 도 로 설정하다 members[n].priority 해야 0 합니다. 가 이 members[n].priority 아닌 0 경우, MongoDB 가 인 멤버를 추가하려고 할 members[n].buildIndexes 때 오류를 false 반환합니다.

멤버가 쿼리를 받지 않도록 하려면 인덱스를 빌드하지 않는 모든 인스턴스를 숨겨야 합니다.

다른 세컨더리는 가 false인 멤버로부터 복제할 수 members[n].buildIndexes 없습니다.

members[n].hidden

선택 사항입니다.

유형: 부울

기본값: false

이 값이 true이면 복제본 세트는 이 인스턴스를 숨결고 db.hello() 또는 hello의 출력에서 해당 노드를 포함하지 않습니다. 이로 인해 읽기 작업(즉, 쿼리)은 세컨더리 읽기 설정 (read preference)을 통해 이 호스트에 도달할 수 없습니다.

숨겨진 멤버는 쓰기 고려로 실행된 쓰기 (write) 작업을 승인할 수 있습니다. 쓰기 고려 (write concern) 로 실행된 쓰기 "majority" (write) 작업의 경우 멤버도 투표 멤버여야 합니다(즉, votes 가 보다 0 큼).

members[n].priority

선택 사항입니다.

유형: 프라이머리/세컨더리의 경우 0 에서 1000 사이의 숫자이거나, 중재자의 경우 0 또는 1 입니다.

기본값: 프라이머리/세컨더리 노드의 경우 1.0, 중재자의 경우 0 입니다.

복제본 세트 멤버가 프라이머리가 될 상대적인 가능성을 나타내는 숫자입니다.

  • 멤버가 프라이머리가 될 가능성을 높이려면 해당 멤버에 대해 더 높은 priority 값을 지정하세요.

  • 멤버가 프라이머리가 될 가능성을 낮추려면 해당 멤버에 대해 더 낮은 priority 값을 지정하세요.

멤버의 우선 순위를 변경하면 하나 이상의 투표가 트리거됩니다. 투표 알고리즘은 우선 순위가 가장 높은 멤버를 프라이머리로 선출하기 위해 최선의 조치를 취합니다. 하지만 우선 순위가 높은 세컨더리 멤버를 사용할 수 있는 경우에도 우선 순위가 더 낮은 멤버가 프라이머리 멤버가 될 수 있습니다.

만약 우선 순위가 더 낮은 멤버가 프라이머리가 되면, 서버는 우선 순위가 가장 높은 복제본 세트 멤버가 프라이머리가 될 때까지 주기적으로 투표를 계속 호출합니다. 투표 빈도는 선출된 멤버와 최우선 순위 멤버 간의 우선 순위 차이에 따라 달라집니다.

우선 순위가 0인 멤버는 프라이머리가 될 수 없습니다.

투표권이 없는 멤버( 가 로 votes 설정하다 0 멤버)의 우선 순위 는 0 이어야 합니다.

members[n].tags

선택 사항입니다.

유형: 문서

기본값: 없음

tags 문서에는 복제본 세트 멤버를 위한 사용자 정의 태그 필드와 값 쌍이 포함되어 있습니다.

{ "<tag1>": "<string1>", "<tag2>": "<string2>",... }

자세한 내용은 복제본 세트 태그 세트 구성에서 확인하세요.

members[n].secondaryDelaySecs

선택 사항입니다.

유형: integer

기본값: 0

이 복제본 세트 멤버가 '지연'해야 하는 프라이머리보다 '뒤처지는' 시간(초)입니다.

이 옵션을 사용하여 지연 멤버를 생성할 수 있습니다. 지연 멤버는 과거 특정 시점의 데이터 상태를 반영하는 데이터 사본을 유지합니다.

지연 멤버는 쓰기 고려로 실행된 쓰기 (write) 작업을 승인하는 데 기여할 수 있습니다. 그러나 구성된 지연 값보다 이전에는 쓰기 (write) 승인을 반환하지 않습니다. 쓰기 고려 (write concern) "majority" 로 실행된 쓰기 (write) 작업의 경우 멤버도 투표 멤버여야 합니다(즉, votes 가 보다 0 큼).

members[n].votes

선택 사항입니다.

유형: integer

기본값: 1

서버가 복제본 세트 투표에서 투표할 투표권 수입니다. 각 멤버가 가진 투표권 수는 1 또는 0이며, 중재자는 항상 정확히 1개의 투표권을 갖습니다.

priority 보다 큰 멤버는 0 0 votes를 가질 수 없습니다.

복제본 세트 최대 50 개의 멤버가 있을 수 있지만 투표권이 있는 7 7 멤버는 개만 있을 수 있습니다. 하나의 복제본 세트 에 members[n].votes0 이상의 멤버가 필요한 경우, 투표권이 없는 추가 멤버에 대해 를 로 설정하다 .

투표권이 없는(즉, votes 0이(가) 인 경우) 회원은 중 을(를) 보유해야 priority 0합니다.

MongoDB 5.0부터 새로 추가된 세컨더리는 투표 멤버로 간주되지 않으며, SECONDARY 상태에 도달할 때까지 선출될 수 없습니다.

투표권이 없는 멤버는 "majority" 쓰기 고려로 실행된 쓰기 작업을 승인할 수 없습니다.

settings

선택 사항입니다.

유형: 문서

전체 복제본 세트에 적용되는 구성 옵션이 포함된 문서입니다.

settings 문서 다음 필드가 포함되어 있습니다.

settings.chainingAllowed

선택 사항입니다.

유형: 부울

기본값: true

MongoDB 5.0.1 및 이전 버전에서 인 settings.chainingAllowed 경우:

  • true로 설정하면 복제본 세트의 세컨더리 멤버가 다른 세컨더리 멤버의 데이터를 복제할 수 있습니다.

  • false(으)로 설정하면 세컨더리 멤버는 프라이머리의 데이터만 복제할 수 있습니다.

MongoDB 5.0.2부터는

settings.getLastErrorDefaults

선택 사항입니다.

유형: 문서

MongoDB 5.0부터는 사용할 수 없습니다.

중요

MongoDB 부터는 5.0 기본값 인 이외의 로 기본값 쓰기 고려 (write concern) 지정할 settings.getLastErrorDefaults { w: 1, wtimeout: 0 }수 없습니다. 대신 setDefaultRWConcern 명령을 사용하여 복제본 세트 또는 샤딩된 클러스터 에 대한 기본값 읽기 또는 쓰기 고려 (write concern) 구성을 설정하다 .

settings.getLastErrorModes

선택 사항입니다.

유형: 문서

를 사용하여 사용자 지정 쓰기 고려 (write members[n].tags concern) 정의하는 데 사용되는 문서 . 사용자 지정 쓰기 고려 (write concern) 데이터 센터 인식 제공할 수 있습니다.

{ getLastErrorModes: {
<name of write concern> : { <tag1>: <number>, .... },
...
} }

<number> 쓰기 고려 (write concern) 충족하는 데 필요한 다양한 태그를 지정하다 값의 수를 나타냅니다. 예시 들어, 다음 은(는) settings.getLastErrorModes 태그를 datacenter 지정하다 값이 다른 두 멤버에게 쓰기 (write) 를 전파해야 하는 쓰기 고려 (write concern) 를 dc 정의합니다.

{ getLastErrorModes: { datacenter: { "dc": 2 } } }

사용자 지정 쓰기 고려 (write concern)를 사용하려면 쓰기 고려 (write concern) 이름을 w 옵션에 전달합니다. 예시:

{ w: "datacenter" }

자세한 내용과 예시는 복제본 세트 태그 세트 구성에서 확인하세요.

settings.heartbeatTimeoutSecs

선택 사항입니다.

형식: int

기본값: 10

복제본 세트 멤버가 서로에게서 성공적인 하트비트를 기다리는 시간(초)입니다. 멤버가 시간 내에 응답하지 않으면 다른 멤버는 지연되는 해당 멤버를 액세스 불가로 표시합니다.

settings.electionTimeoutMillis

선택 사항입니다.

형식: int

기본값: 10000(10초)

복제본 세트의 프라이머리 에 연결할 수 없는 경우를 감지하기 위한 시간 제한(밀리초)입니다. 이 설정은 사용 시 페일오버 민감도를 protocolVersion: 1 제어합니다. 페일오버 시간 제한은 값을 초과하지 않을 것으로 예상할 수 electionTimeoutMillis 있습니다.

값을 선택할 때 다음 사항을 고려하세요.

  • 값이 높을수록 페일오버는 느려지지만, 프라이머리 노드나 네트워크의 속도 저하 또는 장애에 대한 민감도가 낮아집니다.

  • 값이 낮을수록 페일오버는 빨라지지만, 프라이머리 노드나 네트워크의 속도 저하 또는 장애에 대한 민감도가 높아집니다.

이 설정은 protocolVersion: 1 를 사용할 때만 적용됩니다.

참고

force 필드를 true로 설정하지 않고 rs.stepDown() 또는 replSetStepDown을 사용하여 프라이머리를 강등하는 경우, 강등된 프라이머리는 즉시 투표를 호출할 수 있는 적격 세컨더리를 지명합니다.

settings.catchUpTimeoutMillis

선택 사항입니다.

형식: int

기본값: -1, 캐치업 시간 무한대

새로 선출된 프라이머리가 더 최근 쓰기가 있을 수 있는 다른 복제본 세트 멤버와 동기화(캐치업)하는 데 걸리는 시간(밀리초)입니다. 무제한 또는 높은 시간 제한은 투표 후 다른 멤버가 롤백해야 하는 데이터의 양을 줄일 수 있지만, 페일오버 시간을 늘릴 수 있습니다.

새로 선출된 프라이머리는 복제본 세트의 다른 멤버들을 완전히 따라잡으면 캐치업 기간을 일찍 종료합니다. 캐치업 기간 동안 새로 선출된 프라이머리는 클라이언트의 쓰기에 사용할 수 없습니다. replSetAbortPrimaryCatchUp을 사용하여 캐치업을 중단한 다음 프라이머리로의 전환을 완료합니다.

이 설정은 protocolVersion: 1 를 사용할 때만 적용됩니다.

settings.catchUpTakeoverDelayMillis

선택 사항입니다.

형식: int

기본값: 30000(30초)

노드가 현재 프라이머리보다 앞서 있다고 판단한 후 캐치업 테이크오버를 시작하기 위해 대기하는 시간(밀리초)입니다. 캐치업 테이크오버 중에 현재 프라이머리보다 앞선 노드가 복제본 세트의 새로운 프라이머리가 되기 위한 투표를 시작합니다.

테이크오버를 시작한 노드가 현재 프라이머리보다 앞서 있다고 판단한 후, 지정된 시간(밀리초) 동안 기다린 후 다음을 확인합니다.

  1. 여전히 현재 프라이머리보다 앞서 있습니다.

  2. 사용 가능한 모든 노드 중 가장 최신 노드입니다.

  3. 현재 프라이머리가 이를 따라잡고 있습니다.

이러한 조건이 모두 충족된다고 판단되면 테이크오버를 시작하는 노드가 즉시 투표 후보에 오릅니다.

복제본 세트 투표에 관한 자세한 내용은 복제본 세트 투표에서 확인하세요.

참고

를 로 설정하면 캐치업 테이크오버가 비활성화됩니다. 를 로 설정하면 catchUpTakeoverDelayMillis -1 catchUpTimeoutMillis 프라이머리 0 캐치업이 비활성화되고 결과적으로 캐치업 테이크오버도 비활성화됩니다.

settings.heartbeatIntervalMillis

내부용으로만 사용하세요.

하트비트의 밀리초 단위 주파수입니다.

settings.replicaSetId

유형: ObjectId

복제본 세트 와 연결되어 있고 또는 중에 rs.initiate() replSetInitiate 자동으로 생성된 ObjectId입니다. 는 replicaSetId변경할 수 없습니다.