전환 프로세스 완료
mongosync 컷오버 프로세스 를 사용하여 마이그레이션 을 완료하고 애플리케이션 워크로드 를 소스에서 대상 클러스터 로 전송할 수 있습니다.
mongosync
COMMITTED 상태 에 도달할 때까지 활성 상태로 유지되어야 합니다. 이렇게 하면 mongosync
에서 마이그레이션 중에 발생하는 추가 쓰기를 동기화 할 수 있습니다.
참고
애플리케이션 워크로드 를 대상 클러스터 로 전환하기 전에 항상 동기화 가 성공적인 했는지 확인해야 합니다. 자세한 내용은 데이터 전송 확인을 참조하세요.
단계
mongosync의 상태를 확인합니다.
전환 프로세스 를 시작하기 전에 진행률 엔드포인트를 호출하여 mongosync
의 상태를 확인합니다. mongosync
프로세스 상태가 다음 값을 나타내는지 확인합니다.
canCommit
은true
입니다.lagTimeSeconds
가 작습니다(0
에 가깝습니다).전환이 시작될 때
lagTimeSeconds
이(가)0
에 가깝지 않은 경우 전환에 시간이 오래 걸릴 수 있습니다.내장된
verification.source
verification.destination
검증자를 사용하는 경우 및 반환 문서를 모두 확인합니다. 두 문서의lagTimeSeconds
필드는0
근처에 있어야 하며phase
필드는"stream hashing"
로 표시되어야 합니다.검증자가 스트림 해싱 단계에 있지 않은 경우 전환 프로세스 시간이 오래 걸릴 수 있습니다.
다음 예에서는 동기화 프로세스의 상태를 반환합니다.
요청
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 }
소스에서 동기화된 컬렉션에 대한 쓰기 작업을 중지합니다.
소스 클러스터 의 모든 트랜잭션이 커밋 되거나 중단될 때까지 기다립니다.
mongosync
기본값 으로 대상 전용 쓰기 차단을 활성화합니다."destinationOnly"
로 설정하다enableUserWriteBlocking
을 사용하여mongosync
를 시작하여 명시적으로 활성화 할 수 있습니다.mongosync
는 대상에 대한 쓰기만 차단하고canWrite
가true
로 설정하다 되기 직전에 차단을 해제합니다.enableUserWriteBlocking
이(가)"sourceAndDestination"
(으)로 설정하다 상태에서mongosync
을(를) 시작하는 경우,mongosync
는 대상 클러스터 에서 수행되는 모든 쓰기 (write) 작업을 차단하고canWrite
가true
로 설정하다 되기 직전에 차단을 해제합니다.mongosync
은(는)/commit
을(를) 호출한 후 소스에 대한 쓰기를 차단합니다.enableUserWriteBlocking
을"none"
로 설정하다 하여mongosync
를 시작하는 경우 쓰기를 비활성화해야 합니다. 예시 들어,setUserWriteBlockMode
소스 클러스터 에서 명령을 실행 .db.adminCommand( { setUserWriteBlockMode: 1, global: true } ) mongosync
에서 필터링된 동기화 사용하는 경우 전체 소스 클러스터 에 대한 쓰기를 비활성화할 필요가 없습니다. 그러나 필터하다 에 포함된 컬렉션에 대한 쓰기 (write) 작업을 중지해야 합니다.
에 커밋 요청 mongosync
을 보냅니다.
마이그레이션 을 위해 여러 mongosync
인스턴스를 시작하는 경우 각 mongosync
인스턴스 에 대해 커밋 요청 실행해야 합니다.
요청
curl localhost:27182/api/v1/commit -XPOST --data '{ }'
응답
{"success":true}
참고
commit
요청 을 제출 한 후 progress
엔드포인트를 호출하여 mongosync
상태 가 COMMITTING
또는 COMMITTED
인지 확인합니다.
이 단계를 완료하면 mongosync
이(가) 소스 클러스터 에 대한 쓰기를 차단합니다.
소스 클러스터 에 영구 쿼리 설정(PQS)이 포함된 경우 PQS를 대상 클러스터 로 수동으로 마이그레이션 해야 합니다.
이전에 enableUserWriteBlocking
을(를) true
(으)로 설정하다 경우 이 단계를 완료하면 mongosync
이(가) 소스 클러스터 에 대한 쓰기를 차단합니다.
데이터 전송 을 확인합니다.
소스에서 대상 클러스터로 데이터가 성공적으로 동기화되었는지 확인합니다.
자세한 내용은 데이터 전송 확인을 참조하세요.
를 사용하여 대상 클러스터 에서 쓰기를 수동으로 차단한 setUserWriteBlockMode
경우 대상 클러스터 에서 애플리케이션 쓰기를 활성화 .
쓰기를 활성화 하려면 setUserWriteBlockMode
을(를) 업데이트 합니다.
db.adminCommand( { setUserWriteBlockMode: 1, global: false } )
그런 다음 애플리케이션 워크로드 를 대상 클러스터 로 전송합니다.
/start 엔드포인트에서 옵션을 사용하여 쓰기 차단으로 mongosync
를 시작한 enableUserWriteBlocking
경우 이 단계를 완료할 필요가 없습니다.
행동
canWrite 및 COMMITTED
mongosync
COMMITTED
상태 보다 이전 단계에서 대상 클러스터 에 대한 쓰기를 허용합니다.
초기 동기화 에서 mongosync
는 소스 클러스터 의 고유 인덱스를 대상 클러스터 의 비고유 인덱스로 복제합니다. 커밋 하는 동안 대상 클러스터 의 관련 비고유 인덱스는 prepareUnique
로 설정하다 됩니다. 이 작업이 완료되면 /progress
엔드포인트가 canWrite:
true
을 반환하기 시작합니다. prepareUnique
인덱스가 있는 컬렉션은 고유 인덱스 제약 조건을 위반하는 새 문서를 거부합니다. 그런 다음 mongosync
는 prepareUnique
인덱스를 고유 인덱스로 변환합니다. 이 작업이 완료되면 mongosync
상태 를 COMMITTED
로 변경합니다.
참고
대규모 컬렉션을 동기화할 때 prepareUnique
인덱스를 고유 인덱스로 변환하는 것은 리소스 를 많이 사용할 수 있습니다. 이로 인해 canWrite: true
를 반환하는 /progress
엔드포인트와 mongosync
가 COMMITTED
상태 에 도달하는 데 시간이 오래 걸릴 수 있습니다.