Embedded Verifier로 확인
mongosync
에는 지원되는 컬렉션의 동기화 를 확인하기 위해 대상 클러스터 에서 일련의 검사를 수행하는 임베디드 검증기가 포함되어 있습니다.
중요
검증자는 다음 네임스페이스를 확인하지 않습니다.
고정 사이즈 컬렉션
TTL 인덱스가 있는 컬렉션
기본값 데이터 정렬을 사용하지 않는 컬렉션
조회수
검증자는 다음 컬렉션 기능을 확인하지 않습니다.
컬렉션 메타데이터
Indexes
위의 데이터와 메타데이터 데이터를 확인하려면 이러한 컬렉션 및 컬렉션 기능에 대한 추가 검사를 스크립트 로 작성합니다. 자세한 내용은 데이터 전송 확인을 참조하세요.
버전 1.9에 새로 추가되었습니다.
이 작업에 대하여
호환성
내장된 검증자는 mongosync 1.8 이전 버전에서는 사용할 수 없습니다.
다른 확인 방법은 데이터 전송 확인을 참조하세요.
제한 사항
내장된 검증자에는 다음과 같은 제한 사항이 있습니다.
검증자는 샤딩된 클러스터를 지원 하지 않습니다. 마이그레이션 에 샤딩된 클러스터 가 포함된 경우
mongosync
는 검증자를 비활성화합니다.mongosync
검증자 상태 를 메모리에 저장하므로 상당한 메모리 오버헤드 가 발생할 수 있습니다. 검증자를 실행 하려면mongosync
에 약 10 GB 의 메모리와 문서 1 백만 개당 추가 500 MB가 필요합니다.검증자를 재개할 수 없습니다. 어떤 이유로든 사용자가 동기화 를 중지하거나 일시 중지했다가
mongosync
를 다시 시작하면 확인 프로세스 가 처음부터 다시 시작됩니다. 이로 인해 검증이 마이그레이션 보다 훨씬 늦어질 수 있습니다./reverse 엔드포인트는 검증자를 비활성화합니다.
/reverse
엔드포인트를 추가로 호출한 후에도 비활성화된 상태로 유지됩니다.확인을 활성화하고
buildIndexes
을(를)never
(으)로 설정하다 한 상태에서 동기화 를 시작하면mongosync
이(가) 소스 클러스터 에서 TTL 컬렉션 을 찾으면 마이그레이션 이 실패합니다. 이는/start
엔드포인트를 호출한 후 또는 훨씬 나중에 발생할 수 있습니다(예: 마이그레이션 이 진행 중인 동안 사용자가 소스 클러스터 에 TTL 인덱스 를 생성하는 경우).대상 클러스터 에 인덱스를 구축하지 않고 TTL 컬렉션을 동기화 하려면 검증기를 비활성화한 상태에서 동기화 를 시작해야 합니다.
지원되지 않는 확인 검사
검증자는 다음 네임스페이스를 확인하지 않습니다.
고정 사이즈 컬렉션
TTL 인덱스가 있는 컬렉션
기본값 데이터 정렬을 사용하지 않는 컬렉션
조회수
검증자는 다음 컬렉션 기능을 확인하지 않습니다.
컬렉션 메타데이터
Indexes
위의 데이터와 메타데이터 데이터를 확인하려면 이러한 컬렉션 및 컬렉션 기능에 대한 추가 검사를 스크립트 로 작성합니다. 자세한 내용은 데이터 전송 확인을 참조하세요.
단계
초기화 mongosync
mongosync
프로세스 를 초기화합니다.
./bin/mongosync \ --logPath /var/log/mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \ --cluster1 "mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020"
동기화 시작
소스 클러스터 에서 대상 클러스터로의 데이터 동기화를 시작하려면 /start 엔드포인트를 사용하세요.
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", } '
출력 예시:
{"success":true}
참고로 이 검증기는 복제본 세트 마이그레이션에 대해 기본값 활성화되어 있습니다.
진행 상황 검사
동기화 상태를 검사하려면 /progress 엔드포인트를 사용합니다.
curl localhost:27182/api/v1/progress -XGET
출력 예시:
{ "progress": { "state":"RUNNING", "canCommit":true, "canWrite":false, "info":"change event application", "lagTimeSeconds":0, "collectionCopy": { "estimatedTotalBytes":694, "estimatedCopiedBytes":694 }, "directionMapping": { "Source":"cluster0: localhost:27017", "Destination":"cluster1: localhost:27018" }, "verification": { "source": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" }, "destination": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" } } }, "success": true }
내장된 검증자의 상태에 대한 정보는 verification
응답 필드 를 검사합니다.
행동
확인 확인
내장된 검증 도구는 대상 클러스터 에 대해 일련의 검사를 수행합니다. 지원되는 모든 컬렉션을 확인하여 mongosync
이(가) 소스 클러스터 에서 대상으로 문서를 성공적인 으로 전송했는지 확인합니다.
검증자에게 오류가 발생하면 오류와 함께 마이그레이션 이 실패합니다. 검증자가 오류를 찾지 못하면 mongosync
은 COMMITTED
상태 로 전환됩니다.
메모리 요구 사항
검증에는 마이그레이션 시 문서 1 백만 개당 10 GB 의 메모리와 추가 500 MB가 필요합니다.
사용 가능한 메모리가 충분하지 않으면 /start
엔드포인트가 오류를 반환합니다. 이 경우 검증자와 함께 mongosync
을(를) 사용하려면 먼저 서버 의 메모리를 늘리고 마이그레이션 을 재개해야 합니다.
서버 메모리를 늘릴 수 mongosync
없는 경우 검증기를 비활성화한 상태에서 를 다시 시작합니다.