문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

replSetResizeOplog

이 페이지의 내용

  • 정의
  • 구문
  • 명령 필드
  • 행동
  • 예제
replSetResizeOplog

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

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

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

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

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

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

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

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

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

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

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

  • Double() 를 사용하여 mongosh 에서 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 스토리지 엔진 으로 실행되는 인스턴스에서만replSetResizeOplog mongod사용할 수 있습니다.

명령을 사용하여 replSetResizeOplog oplog의 크기를 조정하는 절차 는 Oplog의 크기 변경 튜토리얼을 참조하세요.

2}가 삭제되는 것을 방지하기 위해 oplog가 구성된 크기 제한을 초과하여 커질 수 majority commit point 있습니다.

MongoDB 4.0부터 MongoDB는 local.oplog.rs 컬렉션 삭제를 금지합니다. 이 제한에 대한 자세한 내용은 Oplog 수집 동작을 참조하십시오.

replSetResizeOplog 시작 시 설정된 최대 oplog 크기 또는 최소 oplog 보존 기간을 다음과 같이 재정의합니다.

서버를 다시 시작한 후에도 새 oplog 크기는 다음을 사용하지 않는 한 유지됩니다.

중요

최대 oplog 크기를 줄이면 oplog가 새로 구성된 크기에 도달할 때까지 가장 오래된 oplog 항목이 잘립니다.

마찬가지로 최소 oplog 보존 기간을 줄이면 oplog가 구성된 최대 크기를 초과한 경우 지정된 기간보다 오래된 oplog 항목이 잘립니다.

oplog 크기 또는 보존 기간 감소로 인해 oplog가 잘리면 다음을 포함하여 클라이언트가 여전히 해당 oplog 항목을 읽는 등의 예기치 않은 동작이 발생할 수 있습니다.

  • 열려있는 change stream이 무효화될 수 있습니다.

  • 이러한 oplog 항목을 복제하지 않은 세컨더리에서는 재동기화가 필요할 수 있습니다.

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

최소 oplog 보존 기간으로 구성한 경우 mongod 는 다음과 같은 동작을 합니다.

  • 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가 실행하는 데이터베이스의 모든 작업을 차단합니다. 따라서 oplog.rs에 대해 compact를 실행하면 oplog 동기화가 방지됩니다. oplog의 크기를 조정하고 oplog.rs을 압축하는 절차는 Oplog 크기 변경을 참조하세요.

replSetResizeOplog 은(는) oplog 에 대해 독점(W) 잠금을 취하고 완료될 때까지 컬렉션에 대한 다른 작업을 차단합니다.

MongoDB 잠금에 대한 자세한 내용은 FAQ: 동시성을 참조하세요.

db.collection.stats() mongosh 메서드를 사용하여 현재 최대 oplog 크기인 maxSize 를 메가바이트 단위로 표시합니다. 예를 들면 다음과 같습니다.

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