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

replSetResizeOplog

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 명령 필드
  • 행동
  • 예시
replSetResizeOplog

replSetResizeOplog 는 oplog 항목을 보존하기 위한 최소 시간 지정도 지원합니다.

버전 5.0에서 변경됨: mongosh 에서 replSetOplog 크기를 설정하다 하려면 Double() 생성자를 사용합니다.

replSetResizeOplog 를 사용하면 mongod 프로세스 를 다시 시작하지 않고도 oplog 또는 최소 보존 기간의 크기를 동적으로 조정할 수 있습니다.

이 명령은 admin 데이터베이스에 대해 실행해야 합니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

중요

이 명령은 M10+ 클러스터에서 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.

명령의 형식은 다음과 같습니다.

db.adminCommand(
{
replSetResizeOplog: <int>,
size: <double>,
minRetentionHours: <double>
}
)

이 명령은 다음 필드를 사용합니다.

필드
유형
설명
replSetResizeOplog
int
1로 설정합니다.
size
double

oplog의 최대 크기(메가바이트)입니다.

  • 지정할 수 있는 최소 크기는 990메가바이트입니다.

  • 지정할 수 있는 최대 크기는 1페타바이트입니다.

  • Double()을 사용하여 mongosh에서 double로 size를 명시적으로 캐스팅합니다. 최대 oplog 크기 변경을 참조하세요.

minRetentionHours
double

선택 사항입니다. oplog 항목을 보존하는 데 필요한 최소 시간입니다. 여기서 십진수는 한 시간을 분수로 나눈 값을 나타냅니다. 예를 들어 값 1.5는 1시간 30분을 나타냅니다.

값은 0보다 크거나 같아야 합니다. 0 값은 구성된 최대 oplog 크기를 유지하기 위해 mongod 명령에서 가장 오래된 항목부터 시작하여 oplog를 잘라야 함을 나타냅니다.

minRetentionHours로 구성된 mongod다음과 같은 경우에만 oplog 항목을 제거합니다.

  • oplog가 구성된 최대 크기에 도달했습니다.

  • oplog 항목이 호스트 시스템 시계를 기준으로 구성된 시간보다 오래된 경우입니다.

현재 구성된 최소 oplog 보존 기간을 확인하려면 serverStatus 명령의 출력에서 oplogTruncation.oplogMinRetentionHours를 참조하세요.

다음도 참조하세요.

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 항목을 복제하지 않은 세컨더리에서는 재동기화가 필요할 수 있습니다.

  • 멤버에 대해 --oplog와 함께 mongodump를 사용하는 백업은 잘리기 전의 항목을 캡처하지 못할 수 있습니다.

mongod가 최소 oplog 보존 기간으로 구성된 경우 다음과 같이 동작합니다.

  • oplog는 구성된 시간 동안 oplog 항목을 유지하기 위해 제한 없이 늘릴 수 있습니다. 하지만 이로 인해 쓰기의 양이 많아지고 보유 기간이 늘어나며 시스템 디스크 공간이 줄어들거나 고갈될 수 있습니다.

  • oplog가 최대 크기를 초과하여 커지면 mongod는 oplog가 최대 크기로 돌아가거나 혹은 더 작은 최대 크기로 구성된 경우에도 해당 디스크 공간을 계속 보유할 수 있습니다. oplog 크기 감소로 디스크 공간이 즉시 반환되지 않음을 참조하세요.

  • 2}는 oplog 항목 보존을 적용할 때 시스템 벽시계와 oplog 항목 생성 벽시계 시간을 mongod 비교합니다. 클러스터 구성 요소 간의 클록 드리프트는 예기치 않은 oplog 유지 동작을 초래할 수 있습니다. 클러스터 구성원 간의 시계 동기화에 대한 자세한 내용은 시계 동기화를 참조하세요.

replSetResizeOplog 를 사용하여 지정된 복제본 세트 멤버의 oplog 크기 또는 최소 oplog 보존 기간을 변경해도 복제본 세트 에 있는 다른 멤버의 oplog 크기는 변경되지 않습니다. 클러스터 의 각 복제본 세트 노드에서 replSetResizeOplog 를 실행 하여 모든 노드의 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 크기 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 의 크기를 줄이면 노드 에서 데이터가 제거됩니다. 이로 인해 해당 노드와 동기화되는 복제본 노드 가 오래될 수 있습니다. 이러한 구성원을 다시 동기화하려면 자체 관리형 복제본 세트의 구성원 재동기화를 참조하세요.

  1. mongoshmongod 복제본 세트 멤버에 연결합니다.

  2. 선택 사항입니다. db.serverStatus() 명령을 사용하여 현재 최소 oplog 보존 값이 oplogTruncation.oplogMinRetentionHours인지 확인합니다.

    db.getSiblingDB("admin").serverStatus().oplogTruncation.oplogMinRetentionHours

    이 명령은 mongod에 대해 현재 구성된 최소 oplog 보존 기간을 반환합니다. 예시:

    1.5

    mongod에 최소 oplog 보존 기간이 없는 경우 이 작업은 빈 결과를 반환합니다.

  3. replSetResizeOplog 명령을 사용하여 구성된 최소 oplog 보존 기간을 수정합니다. 예를 예시 다음은 최소 oplog 보존 기간을 2 시간으로 설정합니다.

    db.adminCommand({
    "replSetResizeOplog" : 1,
    "minRetentionHours" : 2
    })

돌아가기

replSetReconfig