oplog 사이징
mongosync 프로그램은 변경 스트림 을 사용하여 소스 클러스터와 대상 클러스터 간에 데이터를 동기화합니다. mongosync
는 oplog 에 직접 액세스 하지 않지만 변경 스트림 이 과거의 이벤트를 반환하는 경우 이벤트는 oplog
시간 범위 내에 있어야 합니다.
mongosync
소스 클러스터의 oplog
에 있는 작업을 대상 클러스터의 데이터에 적용합니다. mongosync
적용되지 않은 작업이 소스 cluster의 oplog
롤오프되면 동기화가 실패하고 mongosync
가 종료됩니다.
참고
mongosync
대상 클러스터에 동기화하는 동안 소스 클러스터에서 수행된 applyOps
작업을 복제하지 않습니다.
초기 동기화 중에 mongosync
에서 문서를 동시에 복사하기 때문에 더 느린 속도로 작업을 적용할 수 있습니다. 초기 동기화 후 mongosync
는 변경 사항을 더 빠르게 적용하고 oplog
에서 소스 클러스터에서 발생하는 실시간 쓰기에 가까운 위치를 유지할 가능성이 높습니다.
대규모 데이터 세트를 동기화할 예정이거나 장기간 동기화를 일시 중지할 계획인 경우 oplog window 를 초과할 수 있습니다. oplogSizeMB
설정을 사용하여 소스 클러스터에서 oplog
의 크기를 늘립니다.
고려 사항
대상 클러스터 마이그레이션되는 논리적 데이터 크기와 초기 동기화 의 대상 oplog 항목을 수용할 수 있는 충분한 디스크 저장 있어야 합니다. 예시 를 들어 10 GB 의 데이터를 마이그레이션 하려면 대상 클러스터 최소 10 GB 의 데이터 사용 가능 공간이 있어야 하며, 초기 동기화 의 삽입 oplog 항목을 위한 추가 10 GB 있어야 합니다.
중요
내장된 검증을 사용하려면 대상에 더 큰 oplog 있어야 합니다. 내장된 검증자를 활성화 하고 대상 oplog 의 크기를 줄이면 내장된 검증자가 이를 따라잡지 못해 mongosync
오류가 발생할 수 있습니다.
대상 oplog 항목의 오버헤드 줄여야 하고 내장된 검증자가 비활성화된 경우 다음을 수행할 수 있습니다.
설정을 사용하여 대상 클러스터의 oplog 크기를
oplogSizeMB
줄입니다.oplogMinRetentionHours
설정을 사용하여 대상 클러스터의 최소 oplog 보존 기간을 낮추거나 제거 .
초기 동기화에 필요한 oplog 크기 모니터링
oplog window 결정
oplog
에서 첫 번째 항목과 마지막 항목의 차이를 초 단위로 확인하려면 db.getReplicationInfo()
를 실행합니다. 샤드 클러스터를 복제하는 경우 각 샤드에서 명령을 실행합니다.
db.getReplicationInfo().timeDiff
반환되는 값은 cluster의 최소 oplog
창입니다. 여러 개의 샤드가 있는 경우 가장 작은 숫자가 최소 oplog
윈도우입니다.
mongosync 복제 지연 확인
lagTimeSeconds
값을 가져오려면 /progress 명령을 실행합니다. 지연 시간은 mongosync
에서 적용한 마지막 이벤트와 소스 클러스터의 현재 최신 이벤트 시간 사이의 시간(초)입니다.
소스 클러스터 mongosync
가 얼마나 뒤쳐져 있는지를 측정한 값입니다.
oplog 크기 유효성 검사
지연 시간이 최소 oplog
창에 근접하면 다음 중 하나를 변경합니다.
oplog
창을 늘립니다.replSetResizeOplog
를 사용하여minRetentionHours
를 현재oplog
창보다 크게 설정합니다.참고
replSetResizeOplog
은(는 ) Atlas 에서 지원되지 않습니다. Atlas 에서 oplog 크기를 조정하려면 최소 Oplog 윈도우 설정을 참조하세요.mongosync
인스턴스를 확장합니다. CPU 또는 메모리를 추가하여 복사 속도가 빨라지도록mongosync
노드를 확장합니다.
참고
oplog window와 복제 지연에 대한 변경 속도는 동기화 중에 달라질 수 있습니다. 마이그레이션 중에 이 단계를 반복하여 진행 상황을 모니터링합니다.