설명
소스 클러스터 와 대상 클러스터 간의 동기화 를 완료합니다.
자세한 내용은 전환 프로세스 완료를 참조하세요.
요구 사항:
commit 엔드포인트를 사용하기 전에:
소스 클러스터 에 더 이상 쓰기가 발생하지 않도록 애플리케이션 을 중지합니다. 커밋 하는 동안에도 소스 클러스터 에서 읽을 수 있습니다.
경고
커밋 하는 동안 소스 클러스터 에 쓰기 (write) 경우 데이터 손실이 발생할 수 있습니다.
진행 엔드포인트를 사용하여 다음 값을 확인합니다.
lagTimeSecondsmongosync의 경우, 검증자의 소스 클러스터 및 검증자의 대상 클러스터 모두0근처에 있습니다(권장되지만 필수는 아님).참고
lagTimeSeconds
lagTimeSeconds마지막으로 적용된 이벤트와 현재 가장 최근 이벤트의 시간 사이의 시간을 나타냅니다.commit요청을 전송하면mongosync는lagTimeSeconds에서 보고한 시간(초) 동안COMMITTING상태에 들어간 다음,COMMITTED상태로 전환합니다.lagTimeSeconds가0이면 소스 cluster와 대상 cluster는 일관된 상태입니다.lagTimeSeconds필드에 대한 자세한 내용은progress를 참조하세요.state: "RUNNING"canCommit: true
참고
샤드 클러스터 간에 동기화할 mongosync 인스턴스를 여러 개 구성하는 경우 각 mongosync 인스턴스에 동일한 API 엔드포인트 명령을 보내야 합니다.
요청
POST /api/v1/commit
요청 본문 매개변수
이 엔드포인트는 HTTP 요청 본문 매개변수를 사용하지 않습니다. 그러나 빈 객체 { } 와 함께 --data 옵션을 지정 해야 합니다 .
응답
필드 | 유형 | 설명 |
|---|---|---|
| 부울 | 요청이 성공하면 이 값은 |
| 문자열 | 오류가 발생한 경우 오류의 이름을 나타냅니다. 이 필드는 |
| 문자열 | 발생한 오류에 대한 자세한 설명입니다. 이 필드는 |
예시
다음 예에서는 대상 cluster에 동기화 작업을 커밋합니다.
동기화가 준비되었는지 확인
commit 엔드포인트에 요청을 전송하기 전에 진행률 엔드포인트를 사용하여 동기화를 커밋할 준비가 되었는지 확인하세요.
요청
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" }, "source": { "pingLatencyMs":250 }, "destination": { "pingLatencyMs":-1 }, "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 }
progress 엔드포인트가 "canCommit":true 을(를) 반환했는데, 이는 commit 요청을 성공적으로 실행할 수 있음을 의미합니다.
커밋 요청 보내기
다음 명령어는 commit 엔드포인트로 요청을 보냅니다.
요청
curl localhost:27182/api/v1/commit -XPOST --data '{ }'
응답
{"success":true}
행동
상태
commit 요청 성공적인 하면 mongosync COMMITTED 상태 됩니다. mongosync 이(가) COMMITTED 상태 에 들어가면 클러스터 간의 데이터 마이그레이션 중지됩니다.
데이터 검증
애플리케이션 로드를 소스 클러스터에서 대상으로 전송하기 전에 데이터를 확인하여 동기화에 성공했는지 확인하세요.
참고
/progress 엔드포인트가 mongosync 을(를) 보고하기 전에 canWrite: true 커밋 하는 동안 이 중지되면 전체 마이그레이션 다시 시작하여 마이그레이션이 확인되었는지 확인해야 합니다.
자세한 내용은 데이터 전송 확인을 참조하세요.
인덱스 빌드
/start를 호출할 때 buildIndexes 를 "afterDataCopy" 또는 "excludeHashedAfterCopy" 로 설정하다 mongosync 는 대상 클러스터 에 모든 소스 인덱스를 빌드할 때까지 commit 요청을 차단합니다.
컬렉션 특성 변경
commit 동기화 중에 mongosync 가 일시적으로 변경되는 컬렉션 특성을 복원합니다.
다음 표는 동기화 프로세스 중에 mongosync 가 변경하는 collection 특성에 대한 영향 의 commit 을 보여 줍니다.
컬렉션 특성 | 다음의 영향 commit |
|---|---|
Unique Indexes |
|
TTL Indexes |
|
Hidden Indexes |
|
쓰기 차단 | 이중 쓰기 차단을 활성화 하면
|
고정 사이즈 컬렉션 |
|
엔드포인트 보호
mongosync commit 엔드포인트를 보호하지 않습니다. 그러나 기본적으로 API는 로컬 호스트에만 바인딩되며 다른 소스의 호출은 허용하지 않습니다. 또한 commit 호출은 연결 자격 증명이나 사용자 데이터를 노출하지 않습니다.