Docs Menu
Docs Home
/
MongoDB Cluster-to-Cluster Sync
/

전환 프로세스 완료

이 페이지의 내용

  • 단계
  • 행동
  • 자세히 알아보기

mongosync 컷오버 프로세스 를 사용하여 마이그레이션 을 완료하고 애플리케이션 워크로드 를 소스에서 대상 클러스터 로 전송할 수 있습니다.

mongosync COMMITTED 상태 에 도달할 때까지 활성 상태로 유지되어야 합니다. 이렇게 하면 mongosync 에서 마이그레이션 중에 발생하는 추가 쓰기를 동기화 할 수 있습니다.

참고

애플리케이션 워크로드 를 대상 클러스터 로 전환하기 전에 항상 동기화 가 성공적인 했는지 확인해야 합니다. 자세한 내용은 데이터 전송 확인을 참조하세요.

1

전환 프로세스 를 시작하기 전에 진행률 엔드포인트를 호출하여 mongosync 의 상태를 확인합니다. mongosync 프로세스 상태가 다음 값을 나타내는지 확인합니다.

  • canCommittrue입니다.

  • 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
}
2
  • 소스 클러스터 의 모든 트랜잭션이 커밋 되거나 중단될 때까지 기다립니다.

  • mongosync 기본값 으로 대상 전용 쓰기 차단을 활성화합니다. "destinationOnly"로 설정하다 enableUserWriteBlocking 을 사용하여 mongosync 를 시작하여 명시적으로 활성화 할 수 있습니다. mongosync 는 대상에 대한 쓰기만 차단하고 canWritetrue로 설정하다 되기 직전에 차단을 해제합니다.

  • enableUserWriteBlocking 이(가) "sourceAndDestination"(으)로 설정하다 상태에서 mongosync 을(를) 시작하는 경우, mongosync 는 대상 클러스터 에서 수행되는 모든 쓰기 (write) 작업을 차단하고 canWritetrue로 설정하다 되기 직전에 차단을 해제합니다. mongosync 은(는) /commit을(를) 호출한 후 소스에 대한 쓰기를 차단합니다.

  • enableUserWriteBlocking"none"로 설정하다 하여 mongosync 를 시작하는 경우 쓰기를 비활성화해야 합니다. 예시 들어,setUserWriteBlockMode 소스 클러스터 에서 명령을 실행 .

    db.adminCommand( {
    setUserWriteBlockMode: 1,
    global: true
    } )
  • mongosync 에서 필터링된 동기화 사용하는 경우 전체 소스 클러스터 에 대한 쓰기를 비활성화할 필요가 없습니다. 그러나 필터하다 에 포함된 컬렉션에 대한 쓰기 (write) 작업을 중지해야 합니다.

3

마이그레이션 을 위해 여러 mongosync 인스턴스를 시작하는 경우 각 mongosync 인스턴스 에 대해 커밋 요청 실행해야 합니다.

curl localhost:27182/api/v1/commit -XPOST --data '{ }'
{"success":true}

참고

commit 요청 을 제출 한 후 progress 엔드포인트를 호출하여 mongosync 상태 가 COMMITTING 또는 COMMITTED 인지 확인합니다.

이 단계를 완료하면 mongosync 이(가) 소스 클러스터 에 대한 쓰기를 차단합니다.

소스 클러스터 에 영구 쿼리 설정(PQS)이 포함된 경우 PQS를 대상 클러스터 로 수동으로 마이그레이션 해야 합니다.

이전에 enableUserWriteBlocking 을(를) true(으)로 설정하다 경우 이 단계를 완료하면 mongosync 이(가) 소스 클러스터 에 대한 쓰기를 차단합니다.

4

progress 엔드포인트를 호출하여 canWritetrue 인지 확인합니다. canWritefalse 인 경우 progresscanWritetrue 표시될 때까지 기다립니다.

curl -sS localhost:27182/api/v1/progress -XGET | jq ".progress.canWrite"
true
5

소스에서 대상 클러스터로 데이터가 성공적으로 동기화되었는지 확인합니다.

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

6

쓰기를 활성화 하려면 setUserWriteBlockMode을(를) 업데이트 합니다.

db.adminCommand(
{
setUserWriteBlockMode: 1,
global: false
}
)

그런 다음 애플리케이션 워크로드 를 대상 클러스터 로 전송합니다.

/start 엔드포인트에서 옵션을 사용하여 쓰기 차단으로 mongosync 를 시작한 enableUserWriteBlocking 경우 이 단계를 완료할 필요가 없습니다.

7

mongosync 진행률 응답이 mongosync 상태가 COMMITTED 임을 나타내면 전환 프로세스가 완료된 것입니다.

curl -sS localhost:27182/api/v1/progress -XGET | jq ".progress.state"
"COMMITTED"

mongosync COMMITTED 상태 보다 이전 단계에서 대상 클러스터 에 대한 쓰기를 허용합니다.

초기 동기화 에서 mongosync 는 소스 클러스터 의 고유 인덱스를 대상 클러스터 의 비고유 인덱스로 복제합니다. 커밋 하는 동안 대상 클러스터 의 관련 비고유 인덱스는 prepareUnique 로 설정하다 됩니다. 이 작업이 완료되면 /progress 엔드포인트가 canWrite: true 을 반환하기 시작합니다. prepareUnique 인덱스가 있는 컬렉션은 고유 인덱스 제약 조건을 위반하는 새 문서를 거부합니다. 그런 다음 mongosyncprepareUnique 인덱스를 고유 인덱스로 변환합니다. 이 작업이 완료되면 mongosync 상태 를 COMMITTED 로 변경합니다.

참고

대규모 컬렉션을 동기화할 때 prepareUnique 인덱스를 고유 인덱스로 변환하는 것은 리소스 를 많이 사용할 수 있습니다. 이로 인해 canWrite: true 를 반환하는 /progress 엔드포인트와 mongosyncCOMMITTED 상태 에 도달하는 데 시간이 오래 걸릴 수 있습니다.

돌아가기

oplog 사이징

이 페이지의 내용