setDefaultRWConcern
정의
setDefaultRWConcern
setDefaultRWConcern
관리 명령은 복제본 세트 또는 샤딩된 클러스터의 글로벌 기본 읽기 또는 쓰기 고려 구성을 설정합니다.setDefaultRWConcern
은admin
데이터베이스에 대해 실행되어야 합니다.복제본 세트의 경우 프라이머리
mongod
에서setDefaultRWConcern
명령을 실행하세요.샤딩된 클러스터의 경우,
mongos
에서setDefaultRWConcern
을 실행합니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
참고
이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
명령은 다음과 같은 구문을 가집니다:
db.adminCommand( { setDefaultRWConcern : 1, defaultReadConcern: { <read concern> }, defaultWriteConcern: { <write concern> }, writeConcern: { <write concern> }, comment: <any> } )
명령 필드
이 명령은 다음 필드를 사용합니다.
필드 | 유형 | 설명 |
---|---|---|
int |
| |
object | 전역 읽기 고려 구성이 포함된 문서입니다. 유효한 읽기 고려 객체를 지정하세요.
현재의 전역 읽기 고려를 수정되지 않은 상태로 두려면 이 문서를 생략하세요. 생략 시 | |
object | 전역 기본 쓰기 고려 구성이 포함된 문서입니다.
현재의 전역 쓰기 고려를 수정되지 않은 상태로 두려면 이 문서를 생략하세요. 문서를 생략할 경우에는 | |
객체 | 선택 사항입니다. 이를 생략하면 | |
comment | any | 선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다. |
setDefaultRWConcern
은 현재 구성된 전역 기본 읽기/쓰기 고려가 포함된 객체를 반환합니다. 반환된 필드에 대한 전체 설명서는 getDefaultRWConcern
을 참조하세요.
행동
참고
featureCompatibilityVersion 4.4 이상이 필요합니다.
복제본 세트 또는 샤딩된 클러스터의 각 mongod
의 featureCompatibilityVersion이 4.4
이상으로 설정되어 있어야 setDefaultRWConcern
(을)를 사용할 수 있습니다.
MongoDB 5.0부터는 setDefaultRWConcern
명령을 통해 CWWC(Cluster Wide Write Concern, 클러스터 전체 쓰기 고려)를 설정하고 나면 쓰기 고려 설정을 해제할 수 없습니다.
MongoDB는 읽기 또는 쓰기 고려를 명시적으로 지정하지 않은 연산에만 전역 기본 읽기 또는 쓰기 고려를 적용합니다.
MongoDB가 전역 기본 읽기 또는 쓰기 고려를 연산에 적용하면 실행 클라이언트가 해당 읽기 또는 쓰기 고려를 명시적으로 지정한 것처럼 해당 연산이 작동합니다.
복제본 세트
복제본 세트 프라이머리를 대상으로 setDefaultRWConcern
을 실행하세요. 프라이머리는 새 전역 기본 설정을 복제본 세트의 나머지 멤버에 복제합니다. 업데이트된 전역 기본 설정을 아직 복제하지 않은 세컨더리에서는 기본값의 '오래된' 로컬 사본을 계속 사용합니다.
w : "majority"
의 writeConcern으로 setDefaultRWConcern
명령을 실행하여 변경 사항이 대부분의 복제본 세트 구성원에 전파된 후에만 명령이 반환되도록 합니다.
샤딩된 클러스터
클러스터의 mongos
에 대해 setDefaultRWConcern
(을)를 실행합니다. mongos
(은)는 업데이트된 설정을 config 서버 복제본 세트(CSRS)에 계속 유지합니다. 각 mongos
(은)는 CSRS를 대상으로 getDefaultRWConcern
(을)를 주기적으로 실행해서 전역 설정의 로컬 사본을 새로 고칩니다. mongos
(은)는 새로고침 사이의 기간 동안 전역 기본값의 '오래된' 로컬 사본을 사용합니다.
w : "majority"
의 writeConcern으로 setDefaultRWConcern
명령을 실행하여 변경 사항이 대부분의 CSRS 구성원에 전파된 후에만 명령이 반환되도록 합니다.
애플리케이션이 읽기 또는 쓰기 고려 설정을 명시적으로 지정하지 않은 채 mongos
을(를) 대상으로 연산을 실행하면 mongos
이(가) 이에 해당하는 전역 기본 설정을 적용합니다.
전역 기본 설정은 개별 샤드에 전파되지 않습니다. 샤드에 대해서는 setDefaultRWConcern
을 실행할 수 없습니다.
중요
setDefaultRWConcern
에는 featureCompatibilityVersion 4.4+
이 필요합니다. 배포서버의 featureCompatibilityVersion을 4.4
에서 4.2
로 다운그레이드하면 클러스터 전체의 읽기/쓰기 고려 기본값이 손실됩니다. 단, mongos
인스턴스는 최대 30초 동안 기본값을 계속 적용할 수 있습니다.
샤딩 관리 명령으로 재정의되는 쓰기 고려 설정
config 서버에서 쓰기 연산을 실행하는 샤딩 관리 명령(예: enableSharding
명령 또는 addShard
명령)은 전역 기본 쓰기 고려 설정에서 특정한 동작을 실행합니다.
이 명령은 구성된 전역 기본 쓰기 고려에 관계없이
"majority"
을(를) 사용합니다.이 명령은 최소 wtimeout을
60000
(으)로 사용합니다. 이 명령은60000
보다 큰 경우에만 전역 기본 쓰기 고려wtimeout
을(를) 사용합니다.
액세스 제어
자체 관리 배포서버에 인증을 적용하는 복제본 세트 또는 샤딩된 클러스터의 경우, setDefaultRWConcern
인증된 사용자에게 setDefaultRWConcern
권한 조치 이 있어야 합니다.
clusterManager
기본 제공 역할은 setDefaultRWConcern
을 실행하는 데 필요한 권한을 제공합니다.
예시
전역 기본 쓰기 고려 설정하기
아래 연산에서는 전역 쓰기 고려를 다음 값으로 설정합니다.
db.adminCommand({ "setDefaultRWConcern" : 1, "defaultWriteConcern" : { "w" : 2 } })
이 작업은 다음과 유사한 문서를 반환합니다.
{ "defaultWriteConcern" : { "w" : 2 }, "updateOpTime" : Timestamp(1586290895, 1), "updateWallClockTime" : ISODate("2020-04-07T20:21:41.849Z"), "localUpdateWallClockTime" : ISODate("2020-04-07T20:21:41.862Z"), "ok" : 1, "$clusterTime" : { ... } "operationTime" : Timestamp(1586290925, 1) }
전역 기본 읽기 고려 설정하기
다음 연산에서는 전역 읽기 고려를 "majority"
(으)로 설정합니다.
db.adminCommand({ "setDefaultRWConcern" : 1, "defaultReadConcern" : { "level" : "majority" } })
이 작업은 다음과 유사한 문서를 반환합니다.
{ "defaultReadConcern" : { "level" : "majority" }, "updateOpTime" : Timestamp(1586290895, 1), "updateWallClockTime" : ISODate("2020-04-07T20:21:41.849Z"), "localUpdateWallClockTime" : ISODate("2020-04-07T20:21:41.862Z"), "ok" : 1, "$clusterTime" : { ... } "operationTime" : Timestamp(1586290925, 1) }
전역 기본 읽기/쓰기 고려 설정하기
아래 연산에서는 전역 기본 읽기/쓰기 고려를 다음 값으로 설정합니다.
w: 2
쓰기 고려level: "majority"
읽기 고려
db.adminCommand({ "setDefaultRWConcern" : 1, "defaultWriteConcern" : { "w" : 2 }, "defaultReadConcern" : { "level" : "majority" } })
이 작업은 다음과 유사한 문서를 반환합니다.
"defaultWriteConcern" : { "w" : 2 }, "defaultReadConcern" : { "level" : "majority" }
전역 기본 읽기/쓰기 고려 설정 해제하기
다음을 수행할 수 있습니다.
전역 기본 읽기 고려를 설정 해제하세요.
전역 기본 쓰기 고려는 아직 설정하지 않은 경우에만 설정 해제하세요.
그 예로 전역 기본 읽기 고려가 level: "majority"
(으)로 설정되어 있다고 가정해 봅시다. 전역 기본 읽기 고려를 설정 해제하려면 빈 문서 {}
을(를) 사용하세요.
db.adminCommand( { "setDefaultRWConcern" : 1, "defaultReadConcern" : {} } )
이 연산은 연산이 성공했다는 것을 나타내는 문서를 다음과 같이 반환합니다.
{ defaultReadConcern: { level: 'local' }, defaultWriteConcern: { w: 2, wtimeout: 0 }, updateOpTime: Timestamp({ t: 1656696934, i: 1 }), updateWallClockTime: ISODate("2022-07-01T17:35:40.578Z"), defaultWriteConcernSource: 'global', defaultReadConcernSource: 'implicit', localUpdateWallClockTime: ISODate("2022-07-01T17:35:40.578Z"), ok: 1, '$clusterTime': { ... }, operationTime: Timestamp({ t: 1656632593, i: 1 }) }
전역 기본 쓰기 고려는 아직 설정하지 않은 경우에만 설정 해제할 수 있습니다.
전역 기본 쓰기 고려를 설정 해제하려면 빈 문서 {}
을(를) 사용하세요.
db.adminCommand( { "setDefaultRWConcern" : 1, "defaultWriteConcern" : {} } )
전역 기본 쓰기 고려가 다음과 같은 상태인 경우:
설정 해제됨, 연산이 성공합니다.
이미 설정되어 있음, 연산이 다음과 같은 오류를 반환합니다.
MongoServerError: The global default write concern cannot be unset once it is set.