경고
mongosync 는 문서화된 제한 사항의 준수 여부를 확인하지 않습니다. 애플리케이션이 제한 사항의 영향을 받지 않는지 확인하세요. 이 제한 사항 중 하나가 있는 상태에서 mongosync를 실행하면 대상 클러스터에서 정의되지 않은 동작이 발생할 수 있습니다.
마이그레이션이 일시 중지되거나 중지된 시점( 마이그레이션 이 다시 시작되는 경우 포함)을 포함하여 마이그레이션 의 전체 기간 동안 이러한 제한 사항을 준수해야 합니다.
일반적인 제한 사항
참고
MongoDB 서버 호환성에 대한 자세한 내용은 MongoDB Server 버전 호환성을 참조하세요.
mongosync마이그레이션 중에 메이저 또는 마이너 버전을 변경하는 현재 위치 서버 버전 업그레이드를 지원 하지 않습니다.mongosync은(는) 패치 버전 업그레이드를 허용합니다. 자세한 학습 은 서버 업그레이드 지침을 참조하세요.대상 클러스터는 비어 있어야 합니다.
mongosync는 클러스터 또는 환경이 올바르게 구성되었는지 확인하지 않습니다.mongosync가 실행되는 동안 다른 클라이언트는 대상 클러스터에 쓰지 작업을 수행하지 않아야 합니다커밋 프로세스 시작하려는데
enableUserWriteBlocking"sourceAndDestination"엔드포인트를 사용할 때 을(를)(으)로 설정하다 하지 않은start경우, 커밋 프로세스 시작하기 전에 소스 클러스터 에 대한 쓰기를 방지해야 합니다.system.* 컬렉션은 복제되지 않습니다.
필드 이름 앞에 달러 기호(
$)가 붙은 문서는 지원되지 않습니다. 마침표 및 달러 기호가 있는 필드 이름을 참조하세요.서버리스 클러스터는 지원되지 않습니다.
MongoDB 공유 티어는 지원되지 않습니다.
Queryable Encryption은 지원되지 않습니다.
동일한 필드에 고유 인덱스 및 비고유 인덱스가 있는 컬렉션은 동기화할 수 없습니다.
M10+Atlas 클러스터를 사용하여mongosync를 실행하기 전에 Require Indexes for All Queries 옵션을 비활성화합니다.mongosync는 사용자나 역할을 동기화하지 않습니다.mongosync대상 클러스터에 동기화하는 동안 소스 클러스터에서 수행된applyOps작업을 복제하지 않습니다.mongosyncprimary읽기 설정을 사용하여 소스 클러스터에서 읽어야 합니다.mongosync은(는) 현재 MongoDB 버전을 업그레이드 중인 소스 또는 대상 클러스터를 지원하지 않습니다.mongosyncAtlas Search 인덱스 동기화를 지원하지 않습니다.mongosyncWiredTiger 스토리지 엔진 을 사용하는 클러스터만 지원합니다.빈 타임스탬프가 있는 문서(예: 이전의
Timestamp(0,0))와 컬렉션 동기화 할 수 없습니다.6.0 소스 클러스터.mongosync필드 이름이 중복된 문서를 지원 하지 않습니다. 자세한 내용은 MongoDB 중복 필드 이름을 지원 하지 않음을 참조하세요.
MongoDB Community 에디션
MongoDB Community 빌드로 Mongosync를 테스트하지 않으며, 대부분의 경우 Community 배포에서 MongoDB 를 지원 하지 않습니다. MongoDB Community Edition 과 함께 Mongosync를 사용하려면 MongoDB 영업 담당자에게 문의 요구 사항 및 개별화된 옵션을 논의하세요.
지원되지 않는 컬렉션 유형
Time-series 컬렉션은 지원되지 않습니다.
expireAfterSeconds가 설정된 클러스터형 컬렉션은 지원되지 않습니다.
샤딩된 클러스터
mongosync는 샤딩된 클러스터에서 복제본 세트로의 동기화를 지원하지 않습니다.mongosync하나 이상의 중재자가 있는 샤딩된 클러스터 토폴로지 에 대한 동기화 를 지원 하지 않습니다.mongosync글로벌 클러스터와의 동기화 를 지원 하지 않습니다.복제본 세트에서 샤딩된 클러스터로의 동기화에는 다음과 같은 제한 사항이 있습니다.
mongosync사용자가 동기화 중에sharding.shardingEntries옵션에 포함된 컬렉션의 이름을 바꿀 수 있도록 허용하지만 몇 가지 제한 사항이 있습니다. 자세한 내용은 동기화 중 이름 변경을 참조하세요.sharding.createSupportingIndexes옵션을 사용하면 동기화 중에 대상 클러스터 에 인덱스가 자동으로 생성됩니다. 이후에는 소스 클러스터 에서 이러한 인덱스를 생성할 수 없습니다.샤드 키를 지원 하는 인덱스 를 수동으로 생성하려면
mongosync가 시작되기 전 또는 마이그레이션 이 완료되고mongosync가 중지된 후에 인덱스 를 생성해야 합니다.
컬렉션 내에서
_id필드는 클러스터의 모든 샤드에서 고유해야 합니다. 자세한 내용은 샤딩된 클러스터 및 고유 인덱스를 참조하세요.movePrimary명령은 동기화 중에 프라이머리 샤드를 재할당하는 데 사용할 수 없습니다.구역 구성에 대한 복제는 없습니다.
mongosync는 데이터를 복제하지만 구역을 상속하지 않습니다.동기화 중에는 샤드를 추가하거나 제거할 수 없습니다.
mongosync는 모든 샤드에 존재하는 인덱스만 동기화합니다.mongosync는 모든 샤드에서 일관된 인덱스 사양을 갖는 인덱스만 동기화합니다.참고
인덱스가 일치하지 않는지 확인하려면 전체 샤드에서 일관성 없는 인덱스 찾기를 참조하세요.
소스 또는 대상 클러스터 가 샤딩된 클러스터 이고 네임스페이스 필터링으로
mongosync을(를 ) 실행 하지 않는 경우balancerStop명령을 실행 하고 명령이 완료될 때까지 15 분을 기다려야 소스 클러스터의 밸런서 비활성화해야 합니다.소스 또는 대상 클러스터 가 샤딩된 클러스터 이고 네임스페이스 필터링으로
mongosync을(를) 실행 중인 경우, 소스 클러스터의 밸런서 전역적으로 활성화 할 수 있지만 네임스페이스 필터하다 내의 모든 컬렉션에 대해 비활성화해야 합니다. 필터링된 동기화에서 컬렉션에 대한 밸런서 비활성화를 참조하세요. 소스 클러스터의 밸런서 완전히 비활성화할 수도 있습니다.balancerStop항상 를사용하여 샤딩된 대상 클러스터 에서 밸런서 비활성화해야 합니다.소스 클러스터의 밸런서 활성화했지만 네임스페이스 필터하다 내의 컬렉션에 대해 비활성화한 경우
shardCollection네임스페이스 필터하다 내의 컬렉션에서 를 실행 하지 마세요. 마이그레이션 중에 네임스페이스 필터하다 내의 컬렉션에서shardCollection를 실행하면mongosync이 오류를 반환하고 중지되므로 마이그레이션을 처음부터 시작해야 합니다.mongosync실행 중에는transitionFromDedicatedConfigServer명령의 실행 지원 하지 않습니다.동기화 중에는 샤드 키를 세분화할 수 없습니다.
동기화 중에는 소스 클러스터의
reshardCollection작업이 지원되지 않습니다.샤딩된 컬렉션당 최대 인덱스 수는 63개로, 기본 제한인 64개보다 1개가 적습니다.
mongosync는 기본 데이터 정렬 설정이 있는 샤드 컬렉션의 동기화만 지원합니다.
반전
다중 클러스터
mongosync는 여러 소스 클러스터를 하나의 대상 클러스터에 동기화하는 것을 지원하지 않습니다.한 클러스터가 동시에 한
mongosync인스턴스의 소스 클러스터와 다른mongosync인스턴스의 대상 클러스터가 될 수는 없습니다.
동기화 필터링
역동기화에서는 필터링이 지원되지 않습니다.
시작하기 전에 대상 클러스터에 사용자 데이터가 포함되어 있지 않아야 합니다.
시작하기 전에 대상 클러스터에
mongosync_reserved_for_internal_use시스템 데이터베이스가 포함되어 있지 않아야 합니다.사용 중인 필터는 수정할 수 없습니다. 새 필터를 만들려면 기존 필터 대체하기를 참조하세요.
컬렉션 이름은 특정 상황에서만 변경할 수 있습니다. 자세한 내용은 컬렉션 추가 및 이름 바꾸기를 참조하세요.
필터에 보기가 포함되어 있지만 기본 컬렉션은 포함되지 않은 경우 보기 메타데이터만 대상 클러스터에 동기화됩니다. 보기 문서를 포함하려면 기본 컬렉션도 동기화해야 합니다.
필터에 시스템 컬렉션이나 시스템 데이터베이스를 지정할 수 없습니다.
필터링과 함께
$out집계 단계 또는mapReduce명령(컬렉션을 만들거나 대체하도록 설정된 경우)을 사용하려면 전체 데이터베이스를 사용하도록 필터를 구성해야 합니다. 필터를 데이터베이스 내의 컬렉션으로 제한할 수 없습니다.자세한 내용은 mapReduce 및 $out로 필터링하기를 참조하세요.
필터링은 이중 쓰기 (write) 차단을 지원 하지 않습니다. 대상 전용 쓰기 차단을 사용할 수 있습니다.
고정 사이즈 컬렉션
1.3.0부터 시작, Mongosync는 고정 사이즈 컬렉션 을 지원하지만 몇 가지 제한 사항이 있습니다.
convertToCapped는 지원되지 않습니다.convertToCapped를 실행하면mongosync가 오류와 함께 종료됩니다.cloneCollectionAsCapped은(는) 지원되지 않습니다.
원본 클러스터의 제한된 컬렉션은 동기화 중에 정상적으로 작동합니다.
대상 클러스터의 제한된 컬렉션에는 동기화 중에 일시적인 변경 사항이 있습니다.
최대 문서 수에는 제한이 없습니다.
최대 컬렉션 크기는 1PB입니다.
mongosync 커밋 중 최대 문서 수 및 최대 문서 크기에 대한 원래 값을 복원합니다.
시스템 컬렉션
Mongosync는 시스템 컬렉션 을 대상 클러스터에 복제하지 않습니다.
소스 클러스터에서 dropDatabase 명령을 실행하면 이 변경 사항이 대상 클러스터에 직접 적용되지 않습니다. 대신 Mongosync는 대상 클러스터 의 데이터베이스 에서 사용자 컬렉션 및 뷰를 삭제하지만 해당 데이터베이스 의 시스템 컬렉션은 삭제하지 않습니다.
예를 들어, 대상 클러스터에서:
제거 작업은 사용자가 만든
system.js컬렉션에 영향을 주지 않습니다.프로파일링을 활성화하면
system.profile컬렉션은 그대로 유지됩니다.소스 클러스터에서 뷰를 만든 후 데이터베이스를 제거하는 경우, 제거를 복제하면 뷰는 제거되지만 빈
system.views컬렉션이 남습니다.
이 경우 을(를) 복제하면 dropDatabase 사용자가 생성한 컬렉션이 데이터베이스에서 전부 제거되지만, 시스템 컬렉션은 대상 클러스터에 남습니다.
롤링 인덱스 빌드
mongosync 마이그레이션 중에는 롤링 인덱스 빌드를 지원 하지 않습니다. 마이그레이션 중에 인덱스가 롤링 방식으로 빌드되지 않도록 하려면 다음 방법 중 하나를 사용하여 대상 인덱스가 소스 인덱스와 일치하는지 확인합니다.
마이그레이션 하기 전에 소스에 인덱스 를 빌드합니다.
마이그레이션 중에 기본값 인덱스 빌드 를 사용하여 소스에 인덱스 를 빌드합니다.
마이그레이션 후 대상에 인덱스 를 빌드합니다.
임베디드 검증자
1.9부터 mongosync 는 내장된 검증자를 사용하여 소스 클러스터 에서 대상 클러스터 로 컬렉션이 성공적인 동기화 되었는지 확인할 수 있습니다.
호환성
내장된 검증자는 mongosync 1.8 이전 버전에서는 사용할 수 없습니다.
다른 확인 방법은 데이터 전송 확인을 참조하세요.
제한 사항
내장된 검증자에는 다음과 같은 제한 사항이 있습니다.
mongosync검증자 상태 메모리에 저장하므로 상당한 메모리 오버헤드 발생할 수 있습니다. 검증자를 실행 하려면mongosync에 약 10 GB 의 메모리와 문서 1 백만 개당 추가 500 MB가 필요합니다.검증자를 재개할 수 없습니다. 어떤 이유로든 사용자가 동기화 중지하거나 일시 중지했다가
mongosync를 다시 시작하면 확인 프로세스 처음부터 다시 시작됩니다. 이로 인해 검증이 마이그레이션 보다 훨씬 늦어질 수 있습니다.확인을 활성화하고
buildIndexes을(를)never(으)로 설정하다 상태에서 동기화 시작하는 경우mongosync이(가) 소스 클러스터 에서 TTL 컬렉션 찾으면 마이그레이션 실패합니다. 이는/start엔드포인트를 호출한 후 또는 훨씬 나중에 발생할 수 있습니다(예: 마이그레이션 이 진행 중인 동안 사용자가 소스 클러스터 에 TTL 인덱스 생성하는 경우).대상 클러스터 에 인덱스를 구축하지 않고 TTL 컬렉션을 동기화 하려면 검증기를 비활성화한 상태에서 동기화 시작해야 합니다.
지원되지 않는 확인 검사
검증자는 다음 네임스페이스를 확인하지 않습니다.
고정 사이즈 컬렉션
마이그레이션 중에 추가되거나 삭제되는 TTL 인덱스를 포함하여 TTL 인덱스가 있는 컬렉션
기본값 데이터 정렬을 사용하지 않는 컬렉션
조회수
검증자는 다음 컬렉션 기능을 확인하지 않습니다.
컬렉션 메타데이터
Indexes
위의 데이터와 메타데이터 확인하려면 이러한 컬렉션 및 컬렉션 기능에 대한 추가 검사를 스크립트 . 자세한 내용은 데이터 전송 확인을 참조하세요.
참고
버전 부터 검증자는 이전 버전에서 1.10 발생한 DDL 이벤트 의 데이터 불일치를 확인합니다.6.0 마이그레이션 중 소스 클러스터 . 이는6.0 마이그레이션은 DDL 이벤트를 지원 하지 않습니다.
영구 쿼리 설정
mongosync 는 MongoDB 8.0에 도입된 영구 쿼리 설정(PQS)을 마이그레이션 하지 않습니다. 소스 클러스터 에서 PQS를 사용하는 경우 수동으로 마이그레이션해야 합니다.
6.0 이전 마이그레이션
1.10부터 mongosync 는 6.0 이전 MongoDB 서버 버전을 실행 소스 클러스터에서의 마이그레이션을 지원합니다. 지원되는 마이그레이션 경로에 대한 자세한 내용은 MongoDB Server 버전 호환성을 참조하세요.
6.0 이전 버전에는 다음과 같은 제한 사항이 적용 . 마이그레이션:
DDL 이벤트를 생성하는 쓰기는 마이그레이션 중에는 소스 클러스터 에서 발생할 수 없습니다. 다음 이벤트는 발생할 수 없습니다.
collModcreatecreateIndexesdropdropDatabasedropIndexesrefineCollectionShardKeyrenamereshardCollectionshardCollection
여기에는 , 및
mapReduce$out과 같은 새 컬렉션을$merge생성할 수 있는 작업이 포함됩니다. 여기에는 삽입을 통해 암시적으로 생성된 컬렉션도 포함됩니다. 마이그레이션 중에는 CRUD 이벤트를 발생시키는 쓰기만 발생할 수 있습니다.geoHaystack인덱스는 지원되지 않습니다./reverse 엔드포인트는 지원되지 않습니다. /start 요청 에서 옵션을 활성화 수 없습니다.
reversible/start요청 에서enableUserWriteBlocking옵션을"sourceAndDestination"로 설정하다 수 없으므로 이중 쓰기 차단은 지원되지 않습니다. 대상 전용 쓰기 차단이 지원됩니다./commit엔드포인트를 호출한 후 소스 클러스터 에 쓰기가 이루어지지 않았는지 확인합니다.샤딩 매개변수를 활성화 수
createSupportingIndexes없습니다. 대신 소스 클러스터 에서 샤드 키 지원 인덱스 생성합니다.사양이 일관되지 않거나 하나 이상의 샤드에서 누락된 인덱스가 있는 경우
mongosync는 오류를 반환합니다. 인덱스 불일치를 확인하려면 샤드 전체에서 불일치 인덱스 찾기를 참조하세요.소스 클러스터는 고아 문서가 있을 수 없습니다. 고아 문서를 정리하려면 소스 클러스터에서
cleanupOrphaned명령을 실행.