reverse
설명
커밋된 동기화 작업의 방향을 바꿉니다.
예를 들면 다음과 같습니다.
COMMITTED
동기화 작업이 있습니다.cluster0
은 소스이고cluster1
은 대상입니다.동기화 작업이
COMMITTED
후에는 대상 cluster에서만 새 쓰기가 발생합니다. 소스 클러스터는 새 쓰기를 허용하지 않습니다.
이 시나리오에서는 reverse
엔드포인트를 사용하여 cluster1
이 에 도달한 후 에서 cluster0
발생한 모든 쓰기를 포함하여 에서 로의 쓰기를 동기화 할 cluster1
수 mongosync
canWrite=true
있습니다. 동기화 중에 canWrite
상태를 확인하려면 /progress 엔드포인트를 사용합니다.
요구 사항:
reverse
엔드포인트를 사용하려면 다음을 수행합니다.
mongosync
초기 동기화가 시작될 때 구성해야 합니다. /start API 엔드포인트에 대한 호출이 설정되어야 합니다:reversible
totrue
enableUserWriteBlocking
true
.
참고
쓰기 차단 은 reverse
을(를) 실행 하기 위한 전제 조건입니다.
동기화가 시작된 후에는 이러한 옵션을 업데이트할 수 없습니다.
mongosync
COMMITTED
상태여야 합니다.대상 클러스터 oplog는
mongosync
이(가)canWrite=true
에 도달하는 시점과/reverse
요청을 수신하는 시점 사이에 롤오버되지 않아야 합니다.고유 인덱스 에는 적절한 서식이 필요합니다. 처음에 MongoDB 4.2 에서 생성된 인덱스가 있는 컬렉션의 형식이 올바르지 않을 수 있습니다.
컬렉션 인덱스가 적절한 형식을 사용하는지 확인하려면 고유 인덱스 유효성 검사를 참조하세요.
소스 클러스터와 대상 클러스터에는 동일한 수의 샤드가 있어야 합니다. 클러스터에 다른 토폴로지나 주요 버전이 있는 경우 역동기화할 수 없습니다.
mongosync
연결 문자열에 지정된 사용자는 소스 및 대상 cluster에 필요한 권한이 있어야 합니다. 권한은 환경과 쓰기 차단 또는 역동기화를 실행하려는지에 따라 달라집니다.
참고
샤드 클러스터 간에 동기화할 mongosync
인스턴스를 여러 개 구성하는 경우 각 mongosync
인스턴스에 동일한 API 엔드포인트 명령을 보내야 합니다.
자세한 내용은 다중 Mongosync 역방향에서 확인 가능합니다.
고유 인덱스 유효성 검사
방향을 바꾸려면 mongosync
모든 고유 인덱스가 올바른 형식을 사용해야 합니다. MongoDB 4.2 이전 버전으로 시작하여 업그레이드된 이후에 업그레이드된 클러스터에는 형식이 올바르게 지정되지 않은 고유 인덱스가 포함될 수 있습니다.
인덱스를 수정하려면 원래 소스 클러스터의 모든 노드를 다시 동기화 하면 됩니다. 모든 노드를 다시 동기화하려면 다음을 수행합니다.
모든 세컨더리를 하나씩 다시 동기화합니다.
노드 재동기화에 대한 튜토리얼 은 복제본 세트의 멤버 재동기화를 참조하세요.
또는 재동기화를 방지하려면 모든 노드에 고유 인덱스가 있는 각 컬렉션에서 full = false
와 함께 db.collection.validate()
메서드를 사용하여 각 컬렉션에 잘못된 형식의 고유 인덱스가 포함되어 있는지 확인할 수 있습니다. db.collection.validate()
가 고유 인덱스에 대한 경고를 반환하지 않으면 재동기화를 건너뛸 수 있습니다.
요청
POST /api/v1/reverse
요청 본문 매개변수
이 엔드포인트는 HTTP 요청 본문 매개변수를 사용하지 않습니다. 그러나 빈 객체 { }
와 함께 --data
옵션을 지정 해야 합니다 .
응답
필드 | 유형 | 설명 |
---|---|---|
success | 부울 | 요청이 성공하면 이 값은 true 입니다. |
error | 문자열 | 오류가 발생한 경우 오류의 이름을 나타냅니다. 이 필드는 success 이 true 인 경우 응답에서 생략됩니다. |
errorDescription | 문자열 | 발생한 오류에 대한 자세한 설명입니다. 이 필드는 success 이 true 인 경우 응답에서 생략됩니다. |
예시
다음 예시에서는 커밋된 동기화 작업의 방향을 반대로 바꿉니다.
요청
curl localhost:27182/api/v1/reverse -XPOST --data '{ }'
응답
{"success":true}
행동
역방향 엔드포인트가 REVERSING
상태 를 시작합니다. mongosync
이(가) 소스 클러스터와 대상 클러스터를 교환하고 변경 이벤트 적용을 재개합니다.
reverse
동기화 가 성공적인 하면 mongosync
는 RUNNING
상태 로 들어갑니다. 동기화는 원래 동기화 작업 의 반대 방향으로 계속 진행됩니다. 원본 데이터를 복사하기 위해 전체 동기화 프로세스 를 다시 시작할 필요는 없습니다.
소스 클러스터와 대상 클러스터 동기화의 매핑 방향을 보려면 진행률 엔드포인트를 사용하고 directionMapping
객체를 확인하세요.
엔드포인트 보호
mongosync
reverse
엔드포인트를 보호하지 않습니다. 그러나 기본적으로 API는 로컬 호스트에만 바인딩되며 다른 소스의 호출은 허용하지 않습니다. 또한 reverse
호출은 연결 자격 증명이나 사용자 데이터를 노출하지 않습니다.