commit
설명
소스 클러스터 와 대상 클러스터 간의 동기화 를 완료하고 클러스터 간의 지속적인 동기화 를 중지합니다.
자세한 내용은 전환 프로세스 완료를 참조하세요.
요구 사항:
commit
엔드포인트를 사용하기 전에:
소스 클러스터 에 더 이상 쓰기가 발생하지 않도록 애플리케이션 을 중지합니다. 커밋 하는 동안에도 소스 클러스터 에서 읽을 수 있습니다.
경고
커밋 하는 동안 소스 클러스터 에 쓰기 (write) 경우 데이터 손실이 발생할 수 있습니다.
진행 엔드포인트를 사용하여 다음 값을 확인합니다.
lagTimeSeconds
0
에 가깝습니다(권장, 필수는 아님).참고
lagTimeSeconds
lagTimeSeconds
마지막으로 적용된 이벤트와 현재 가장 최근 이벤트의 시간 사이의 시간을 나타냅니다.commit
요청을 전송하면mongosync
는lagTimeSeconds
에서 보고한 시간(초) 동안COMMITTING
상태에 들어간 다음,COMMITTED
상태로 전환합니다.lagTimeSeconds
가0
이면 소스 cluster와 대상 cluster는 일관된 상태입니다.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" }, "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
커밋 하는 동안 이 중지되면 전체 마이그레이션 다시 시작하여 마이그레이션이 확인되었는지 확인해야 합니다.
자세한 내용은 데이터 전송 확인을 참조하세요.
컬렉션 특성 변경
commit
동기화 중에 mongosync
가 일시적으로 변경되는 컬렉션 특성을 복원합니다.
다음 표는 동기화 프로세스 중에 mongosync
가 변경하는 collection 특성에 대한 영향 의 commit
을 보여 줍니다.
컬렉션 특성 | 다음의 영향 commit |
---|---|
Unique Indexes |
|
TTL Indexes |
|
Hidden Indexes |
|
쓰기 차단 | 이중 쓰기 차단을 활성화 하면
|
고정 사이즈 컬렉션 |
|
엔드포인트 보호
mongosync
commit
엔드포인트를 보호하지 않습니다. 그러나 기본적으로 API는 로컬 호스트에만 바인딩되며 다른 소스의 호출은 허용하지 않습니다. 또한 commit
호출은 연결 자격 증명이나 사용자 데이터를 노출하지 않습니다.