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