replSetResizeOplog
정의
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
중요
이 명령은 M10+ 클러스터에서 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
명령의 형식은 다음과 같습니다.
db.adminCommand( { replSetResizeOplog: <int>, size: <double>, minRetentionHours: <double> } )
명령 필드
이 명령은 다음 필드를 사용합니다.
필드 | 유형 | 설명 |
---|---|---|
| int |
|
| double | oplog의 최대 크기(메가바이트)입니다.
|
| double | 선택 사항입니다. oplog 항목을 보존하는 데 필요한 최소 시간입니다. 여기서 십진수는 한 시간을 분수로 나눈 값을 나타냅니다. 예를 들어 값 값은
현재 구성된 최소 oplog 보존 기간을 확인하려면 |
행동
Wired Tiger 스토리지 엔진 또는 인메모리 mongod
스토리지 엔진 으로 실행 인스턴스에서 를 사용할 수 있습니다.replSetResizeOplog
명령을 사용하여 의 크기를 조정하는 절차 는 자체 관리 복제본 oplog replSetResizeOplog
세트 멤버의 크기 변경 튜토리얼을 oplog 참조하세요.
2}가 삭제되는 것을 방지하기 위해 oplog가 구성된 크기 제한을 초과하여 커질 수 majority commit point
있습니다.
local.oplog.rs
컬렉션 을 삭제할 수 없습니다. 이 제한에 대한 자세한 내용은 oplog 컬렉션 동작을 참조하세요.
replSetResizeOplog
시작 시 설정된 최대 oplog 크기 또는 최소 oplog 보존 기간을 다음과 같이 재정의합니다.
서버를 다시 시작한 후에도 새 oplog 크기는 다음을 사용하지 않는 한 유지됩니다.
중요
최대 oplog 크기를 줄이면 oplog가 새로 구성된 크기에 도달할 때까지 가장 오래된 oplog 항목이 잘립니다.
마찬가지로 최소 oplog 보존 기간을 줄이면 oplog가 구성된 최대 크기를 초과한 경우 지정된 기간보다 오래된 oplog 항목이 잘리게 됩니다.
oplog 크기 또는 보존 기간 감소로 인해 oplog가 잘리면 다음을 포함하여 클라이언트가 여전히 해당 oplog 항목을 읽는 등의 예기치 않은 동작이 발생할 수 있습니다.
최소 Oplog 보존 기간
mongod
가 최소 oplog 보존 기간으로 구성된 경우 다음과 같이 동작합니다.
oplog는 구성된 시간 동안 oplog 항목을 유지하기 위해 제한 없이 늘릴 수 있습니다. 하지만 이로 인해 쓰기의 양이 많아지고 보유 기간이 늘어나며 시스템 디스크 공간이 줄어들거나 고갈될 수 있습니다.
oplog가 최대 크기를 초과하여 커지면
mongod
는 oplog가 최대 크기로 돌아가거나 혹은 더 작은 최대 크기로 구성된 경우에도 해당 디스크 공간을 계속 보유할 수 있습니다. oplog 크기 감소로 디스크 공간이 즉시 반환되지 않음을 참조하세요.2}는 oplog 항목 보존을 적용할 때 시스템 벽시계와 oplog 항목 생성 벽시계 시간을
mongod
비교합니다. 클러스터 구성 요소 간의 클록 드리프트는 예기치 않은 oplog 유지 동작을 초래할 수 있습니다. 클러스터 구성원 간의 시계 동기화에 대한 자세한 내용은 시계 동기화를 참조하세요.
replSetResizeOplog
다른 노드에게 복제되지 않음
replSetResizeOplog
를 사용하여 지정된 복제본 세트 멤버의 oplog 크기 또는 최소 oplog 보존 기간을 변경해도 복제본 세트 에 있는 다른 멤버의 oplog 크기는 변경되지 않습니다. 클러스터 의 각 복제본 세트 노드에서 replSetResizeOplog
를 실행 하여 모든 노드의 oplog 크기 또는 최소 보존 기간을 변경해야 합니다.
oplog 크기 감소로 디스크 공간이 즉시 반환되지 않음
oplog 크기를 줄여도 해당 디스크 공간이 즉시 확보되지는 않습니다. 여기에는 최소 oplog 보존 기간보다 오래된 oplog 이벤트의 잘림으로 인한 oplog 크기 감소가 포함됩니다.
oplog 크기를 줄인 후 사용하지 않는 디스크 공간을 즉시 확보하려면 유지 관리 기간 동안 local
데이터베이스 의 oplog.rs
컬렉션 에 대해 compact
를 실행 합니다. compact
는 실행되는 데이터베이스 의 모든 작업을 차단합니다. compact
oplog.rs
따라서 에 대해 를 실행하면 oplog 동기화가 방지됩니다. oplog 의 크기를 조정하고 oplog.rs
을 압축하는 절차 는 자체 관리형 복제본 세트 멤버의 oplog 크기 변경을 참조하세요.
리소스 잠금
replSetResizeOplog
oplog
에 대해 배타적(W) 락 을 취하고 완료될 때까지 컬렉션 에 대한 다른 작업을 차단합니다.
MongoDB 잠금에 대한 자세한 내용은 FAQ: 동시성을 참조하세요.
예시
최대 Oplog 크기 변경
현재 최대 oplog 크기 maxSize
를 메가바이트 단위로 표시하려면 db.collection.stats()
mongosh
메서드를 사용하세요. 예를 들면 다음과 같습니다.
db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize
위의 명령은 이 노드의 oplog 크기를 메가바이트 단위로 반환합니다.
990
다음 명령은 replSetResizeOplog
를 사용하여 이 멤버의 oplog 크기를 16384 메가바이트로 변경합니다.
db.adminCommand({ "replSetResizeOplog": 1, size: Double(16384)})
새 oplog 크기를 확인하려면 db.collection.stats()
메서드를 다시 실행합니다.
db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize
위의 명령이 반환됩니다.
"maxSize": NumberLong("16834")
경고
노드에서 oplog 의 크기를 줄이면 노드 에서 데이터가 제거됩니다. 이로 인해 해당 노드와 동기화되는 복제본 노드 가 오래될 수 있습니다. 이러한 구성원을 다시 동기화하려면 자체 관리형 복제본 세트의 구성원 재동기화를 참조하세요.
최소 Oplog 보존 기간 변경
선택 사항입니다.
db.serverStatus()
명령을 사용하여 현재 최소 oplog 보존 값이oplogTruncation.oplogMinRetentionHours
인지 확인합니다.db.getSiblingDB("admin").serverStatus().oplogTruncation.oplogMinRetentionHours 이 명령은
mongod
에 대해 현재 구성된 최소 oplog 보존 기간을 반환합니다. 예시:1.5 mongod
에 최소 oplog 보존 기간이 없는 경우 이 작업은 빈 결과를 반환합니다.replSetResizeOplog
명령을 사용하여 구성된 최소 oplog 보존 기간을 수정합니다. 예를 예시 다음은 최소 oplog 보존 기간을2
시간으로 설정합니다.db.adminCommand({ "replSetResizeOplog" : 1, "minRetentionHours" : 2 })