mongosync 과 버전을 업그레이드 방법에 대한 mongosync 지침은 최신 문서를 참조하세요.mongosync 컷오버 프로세스 를 사용하여 마이그레이션 을 완료하고 애플리케이션 워크로드 를 소스에서 대상 클러스터 로 전송할 수 있습니다.
mongosync COMMITTED 상태 에 도달할 때까지 활성 상태로 유지되어야 합니다. 이렇게 하면 mongosync 에서 마이그레이션 중에 발생하는 추가 쓰기를 동기화 할 수 있습니다.
참고
애플리케이션 워크로드 를 대상 클러스터 로 전환하기 전에 항상 동기화 가 성공적인 했는지 확인해야 합니다. 자세한 내용은 데이터 전송 확인을 참조하세요.
단계
mongosync의 상태를 확인합니다.
전환 프로세스 를 시작하기 전에 진행률 엔드포인트를 호출하여 mongosync 의 상태를 확인합니다. mongosync 프로세스 상태가 다음 값을 나타내는지 확인합니다.
canCommit은true입니다.lagTimeSeconds가 작습니다(0에 가깝습니다).전환이 시작될 때
lagTimeSeconds이(가)0에 가깝지 않은 경우 전환에 시간이 오래 걸릴 수 있습니다.
다음 예에서는 동기화 프로세스의 상태를 반환합니다.
요청
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" } }, "success": true }
소스에서 동기화된 컬렉션에 대한 쓰기 작업을 중지합니다.
소스 클러스터 의 모든 트랜잭션이 커밋 되거나 중단될 때까지 기다립니다.
enableUserWriteBlocking를true로 설정하다 상태에서mongosync를 시작하는 경우,mongosync는 커밋 (4단계) 중에 전체 소스 클러스터 에 대한 모든 쓰기 (write) 작업을 차단합니다.mongosync을(를)enableUserWriteBlocking(으)로 시작하지 않은 경우 쓰기를 비활성화해야 합니다. 예시 들어 소스 클러스터 에서 명령을 실행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 엔드포인트에서 enableUserWriteBlocking 옵션을 사용하여 쓰기 차단으로 mongosync 를 시작한 경우 이 단계를 완료할 필요가 없습니다.
행동
canWrite 및 COMMITTED
mongosync COMMITTED 상태 보다 이전 단계에서 대상 클러스터 에 대한 쓰기를 허용합니다.
초기 동기화 에서 mongosync 는 소스 클러스터 의 고유 인덱스를 대상 클러스터 의 비고유 인덱스로 복제합니다. 커밋 하는 동안 대상 클러스터 의 관련 비고유 인덱스는 prepareUnique 로 설정하다 됩니다. 이 작업이 완료되면 /progress 엔드포인트가 canWrite:
true 을 반환하기 시작합니다. prepareUnique 인덱스가 있는 컬렉션은 고유 인덱스 제약 조건을 위반하는 새 문서를 거부합니다. 그런 다음 mongosync 는 prepareUnique 인덱스를 고유 인덱스로 변환합니다. 이 작업이 완료되면 mongosync 상태 를 COMMITTED 로 변경합니다.
참고
대규모 컬렉션을 동기화할 때 prepareUnique 인덱스를 고유 인덱스로 변환하는 것은 리소스 를 많이 사용할 수 있습니다. 이로 인해 canWrite: true 를 반환하는 /progress 엔드포인트와 mongosync 가 COMMITTED 상태 에 도달하는 데 시간이 오래 걸릴 수 있습니다.