Docs Menu

commit

소스 클러스터 와 대상 클러스터 간의 동기화 를 완료하고 클러스터 간의 지속적인 동기화 를 중지합니다.

자세한 내용은 전환 프로세스 완료를 참조하세요.

commit 엔드포인트를 사용하기 전에:

  • 소스 클러스터 에 더 이상 쓰기가 발생하지 않도록 애플리케이션 을 중지합니다. 커밋 하는 동안에도 소스 클러스터 에서 읽을 수 있습니다.

    경고

    커밋 하는 동안 소스 클러스터 에 쓰기 (write) 경우 데이터 손실이 발생할 수 있습니다.

  • 진행 엔드포인트를 사용하여 다음 값을 확인합니다.

    • lagTimeSeconds 0 에 가깝습니다(권장, 필수는 아님).

      참고

      lagTimeSeconds

      lagTimeSeconds 마지막으로 적용된 이벤트와 현재 가장 최근 이벤트의 시간 사이의 시간을 나타냅니다. commit 요청을 전송하면 mongosynclagTimeSeconds 에서 보고한 시간(초) 동안 COMMITTING 상태에 들어간 다음, COMMITTED 상태로 전환합니다.

      lagTimeSeconds0 이면 소스 cluster와 대상 cluster는 일관된 상태입니다.

    • state: "RUNNING"

    • canCommit: true

참고

샤드 클러스터 간에 동기화할 mongosync 인스턴스를 여러 개 구성하는 경우 각 mongosync 인스턴스에 동일한 API 엔드포인트 명령을 보내야 합니다.

자세한 내용은 여러 인스턴스에서 동기화 커밋을 mongosync 참조하세요.

POST /api/v1/commit

이 엔드포인트는 HTTP 요청 본문 매개변수를 사용하지 않습니다. 그러나 빈 객체 { } 와 함께 --data 옵션을 지정 해야 합니다 .

필드
유형
설명

success

부울

요청이 성공하면 이 값은 true 입니다.

error

문자열

오류가 발생한 경우 오류의 이름을 나타냅니다. 이 필드는 successtrue 인 경우 응답에서 생략됩니다.

errorDescription

문자열

발생한 오류에 대한 자세한 설명입니다. 이 필드는 successtrue 인 경우 응답에서 생략됩니다.

다음 예에서는 대상 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 요청이 성공하면 mongosyncCOMMITTED 상태로 들어갑니다. mongosyncCOMMITTED 상태에 들어가면 클러스터 간의 지속적인 동기화가 중지됩니다.

애플리케이션 로드를 소스 클러스터에서 대상으로 전송하기 전에 데이터를 확인하여 동기화에 성공했는지 확인하세요.

참고

/progress 엔드포인트가 mongosync 을(를) 보고하기 전에 canWrite: true 커밋 하는 동안 이 중지되면 전체 마이그레이션 다시 시작하여 마이그레이션이 확인되었는지 확인해야 합니다.

자세한 내용은 데이터 전송 확인을 참조하세요.

commit 동기화 중에 mongosync 가 일시적으로 변경되는 컬렉션 특성을 복원합니다.

다음 표는 동기화 프로세스 중에 mongosync 가 변경하는 collection 특성에 대한 영향 의 commit 을 보여 줍니다.

컬렉션 특성
다음의 영향 commit

Unique Indexes

commit 대상 클러스터 에서 mongosync 가 비고유 인덱스로 복제된 고유 인덱스를 재설정합니다.

TTL Indexes

commit 대상 클러스터 에서 mongosync 이(가) MAX_INT 값으로 설정하다 expireAfterSeconds 을(를) 재설정합니다.

Hidden Indexes

commit 대상 클러스터 에서 mongosync 숨겨진 인덱스가 아닌 것으로 복제된 숨겨진 인덱스를 재설정합니다.

쓰기 차단

이중 쓰기 차단을 활성화 하면 mongosync 이(가) 쓰기를 차단합니다.

  • 동기화 중 대상 클러스터에서.

  • commit이 수신되었을 때 소스 클러스터에서.

mongosync 기본값 으로 대상 전용 쓰기 차단을 활성화합니다.

자세한 학습 쓰기 차단을 참조하세요.

고정 사이즈 컬렉션

commit 대상 클러스터 에서 mongosync 이(가) 최대 허용 크기로 설정하다 제한 컬렉션의 필수 최대 크기를 재설정합니다.

mongosync commit 엔드포인트를 보호하지 않습니다. 그러나 기본적으로 API는 로컬 호스트에만 바인딩되며 다른 소스의 호출은 허용하지 않습니다. 또한 commit 호출은 연결 자격 증명이나 사용자 데이터를 노출하지 않습니다.