start
설명
소스 cluster와 대상 cluster 간의 동기화를 시작합니다.
요구 사항:
상태
start
엔드포인트를 사용하려면 mongosync
이 IDLE
상태에 있어야 합니다.
권한
mongosync
연결 string 에 지정된 사용자에게는 소스 및 대상 클러스터에 대한 필수 권한이 있어야 합니다. 사용자에게 동기화를 시작할 수 있는 올바른 권한이 있는지 확인하려면 사용자 권한 을 참조하세요.
여러 mongosync
인스턴스
mongosync
시작할 때 cluster0
또는 cluster1
설정에 대한 연결 문자열에 구성된 mongosync
사용자를 사용해야 합니다.
참고
샤드 클러스터 간에 동기화할 mongosync
인스턴스를 여러 개 구성하는 경우 각 mongosync
인스턴스에 동일한 API 엔드포인트 명령을 보내야 합니다.
자세한 내용은 다중 Mongosync 시작을 참조하세요.
요청
POST /api/v1/start
요청 본문 매개변수
Parameter | 유형 | 필요성 | 설명 | |
---|---|---|---|---|
| 문자열 | 필수 사항 | 소스 클러스터의 이름입니다. | |
| 문자열 | 필수 사항 | 대상 cluster의 이름입니다. | |
| 문자열 | 옵션 | 동기화 중에 인덱스 빌드를 구성합니다. 지원되는 옵션:
버전 1.3.0에 추가 되었습니다. | |
| 부울 | 옵션 |
역 동기화 하려면
기본값은 | |
| 배열 | 옵션 | 동기화에 포함할 데이터베이스 또는 collection을 필터링합니다. 여러 데이터베이스가 있는 소스 클러스터에 필터를 구성하는 경우 필터를 수정하여 새로 생성된 데이터베이스를 추가 하려면 필터링된 동기화를 처음부터 다시 시작 해야 합니다. 자세한 내용은 필터링된 동기화를 참조하세요. 현재 제한 사항은 필터링된 동기화를 참조하세요. 버전 1.1에 추가 되었습니다. | |
| 배열 | 옵션 | 동기화에서 제외할 데이터베이스 또는 collection을 필터링합니다. 여러 데이터베이스가 있는 소스 클러스터에 필터를 구성하는 경우 필터를 수정하여 새로 생성된 데이터베이스를 추가 하려면 필터링된 동기화를 처음부터 다시 시작 해야 합니다. 자세한 내용은 필터링된 동기화를 참조하세요. 현재 제한 사항은 필터링된 동기화를 참조하세요. 버전 1.6에 새로 추가되었습니다. | |
| 부울 | 옵션 |
역동기화하려면 다음 구성에서는 이 옵션이 지원되지 않습니다.
자세한 내용은 역방향 엔드포인트를 참조하세요. 기본값은 | |
| 문서 | 옵션 | 복제본 세트와 샤드 cluster 간의 동기화를 구성합니다. 복제본 세트에서 샤드 cluster로 동기화하려면 이 옵션이 필요합니다. 자세한 내용은 샤딩 매개변수를 참조하세요. 버전 1.1에 추가 되었습니다. | |
| 문서 | 옵션 | ||
| Bool | 옵션 | 내장된 검증자를 활성화합니다. 검증자는 마이그레이션 이 성공적인 했는지 확인하기 위해 대상 클러스터 에서 지원되는 컬렉션에 대해 일련의 확인 검사를 수행합니다. 검증자가 오류를 찾지 못하면 검증기는 복제본 세트 에서 복제본 세트 의 마이그레이션에 대해 기본값 활성화되어 있습니다. 마이그레이션 에 샤딩된 클러스터 가 포함되는 경우 검증자는 비활성화됩니다. 경고 : 검증자는 모든 컬렉션이나 데이터를 확인하지 않습니다. 자세한 내용은 Embedded Verifier를 참조하세요. 버전 1.9에 새로 추가되었습니다. |
샤딩 매개변수
버전 1.1에 추가 되었습니다.
복제본 세트에서 shard cluster로 동기화하려면 대상 cluster에서 collection을 샤딩하는 sharding
옵션을 설정합니다.
sharding
옵션에는 다음과 같은 매개 변수가 있습니다.
Parameter | 유형 | 설명 |
---|---|---|
| 부울 | 선택 사항. 샤드 키 에 대한 지원 인덱스가 존재하지 않는 경우 동기화 시 생성할 지원 인덱스 를 설정합니다. 기본값 은 자세한 내용 및 제한 사항은 지원 인덱스를 참조하세요. |
| 문서 배열 | 필수입니다. 동기화 중에 샤딩할 collection의 네임스페이스 및 키를 설정합니다. 이 배열에 포함되지 않은 collection은 대상 cluster의 샤딩되지 않은 collection과 동기화됩니다. 빈 배열로 설정하면 collection이 샤딩되지 않습니다. |
shardingEntries .collection | 문자열 | collection을 샤딩으로 설정합니다. |
shardingEntries .database | 문자열 | 샤딩할 collection의 데이터베이스를 설정합니다. |
shardingEntries .shardCollection | 문서 | 대상 cluster에서 생성할 샤드 키를 설정합니다. |
shardingEntries .shardCollection .key | 배열 | 샤드 키에 사용할 필드를 설정합니다. 자세한 내용은 샤드 키 를 참조하세요. |
mongosync
복제본 세트에서 샤드 클러스터로 동기화할 때 sharding
옵션이 설정되어 있지 않으면 오류가 발생합니다. 옵션이 다른 구성과 함께 설정된 경우mongosync
에서도 오류가 발생합니다.sharding
응답
필드 | 유형 | 설명 |
---|---|---|
| 부울 | 요청이 성공하면 이 값은 |
| 문자열 | 오류가 발생한 경우 오류의 이름을 나타냅니다. 이 필드는 |
| 문자열 | 발생한 오류에 대한 자세한 설명입니다. 이 필드는 |
예시
동기화 작업 시작
다음 예는 cluster0
와 cluster1
간에 동기화 작업을 시작합니다. 소스 클러스터는 cluster0
이고 대상 클러스터는 cluster1
입니다.
요청:
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1" } '
응답:
{"success":true}
역방향 동기화 작업 시작
다음 예는 cluster0
와 cluster1
간에 동기화 작업을 시작합니다. 소스 클러스터는 cluster0
이고 대상 클러스터는 cluster1
입니다.
reversible
및 enableUserWriteBlocking
필드를 사용하면 동기화를 되돌릴 수 있습니다. 동기화 방향을 반전하려면 반전을 참조하세요 .
요청:
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", "reversible": true, "enableUserWriteBlocking": true } '
응답:
{"success":true}
필터링된 동기화 작업 시작
다음 예는 cluster0
와 cluster1
간에 동기화 작업을 시작합니다. 소스 클러스터는 cluster0
이고 대상 클러스터는 cluster1
입니다.
cluster0
sales
, marketing
및 engineering
데이터베이스를 포함합니다.
sales
데이터베이스에는 EMEA
, APAC
및 AMER
컬렉션이 포함되어 있습니다.
이 예시의 includeNamespaces
배열은 sales
및 marketing
의 두 데이터베이스에 적용할 필터를 정의합니다.
sales
데이터베이스는 EMEA
및 APAC
컬렉션도 필터링합니다.
"includeNamespaces" : [ { "database" : "sales", "collections": [ "EMEA", "APAC" ] }, { "database" : "marketing" } ]
이 필터를 사용하여 /start
API를 호출한 후 mongosync
:
marketing
데이터베이스의 모든 컬렉션 동기화engineering
데이터베이스 필터링sales
데이터베이스에서EMEA
및APAC
컬렉션 동기화AMER
컬렉션 필터링
includeNamespaces
옵션은 필터를 생성합니다. 동기화를 필터링하려면 필터링된 동기화를 참조하세요.
요청:
curl -X POST "http://localhost:27182/api/v1/start" --data ' { "source": "cluster0", "destination": "cluster1", "includeNamespaces": [ { "database": "sales", "collectionsRegex": { "pattern": "^accounts_.+$", "options": "i" } }, { "database": "marketing" } ] } '
응답:
{"success":true}
복제본 세트에서 샤드 클러스터로 동기화 시작
요청:
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", "sharding": { "createSupportingIndexes": true, "shardingEntries": [ { "database": "accounts", "collection": "us_east", "shardCollection": { "key": [ { "location": 1 }, { "region": 1 }, ] } } ] } } '
응답:
{"success":true}
검증 도구를 비활성화한 상태에서 시작
1.9부터 마이그레이션 을 시작하면 내장된 검증자가 기본값 실행됩니다. 비활성화해야 하는 경우 verification.enabled
를 false
로 설정하다 합니다.
요청:
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", "verification": { "enabled": false } } '
응답:
{"success":true}
애플리케이션 로드를 대상 클러스터 로 전송하기 전에 마이그레이션 이 성공적인 했는지 확인해야 합니다. 어떤 이유로든 검증기를 비활성화해야 하는 경우 다른 방법을 사용하여 동기화 를 확인합니다.
행동
임베디드 검증자
1.9부터 mongosync
는 소스 클러스터 에서 대상으로의 데이터 전송 이 성공적인 했는지 여부를 확인하는 내장된 검증자를 제공합니다.
활성화되면 검증자는 대상 클러스터 에 대해 일련의 검증 검사를 수행합니다. 이러한 검사 중 하나라도 오류가 반환되면 검증자가 마이그레이션 에 실패합니다. 모든 검사가 성공하면 mongosync
이 COMMITTED
상태 로 전환됩니다.
검증자를 비활성화하려면 검증자를 비활성화한 상태로 시작하기를 참조하세요.
소스 또는 대상 클러스터 에서 지원하지 않는 확인 검사를 활성화 하거나 메모리가 부족한 경우 /start
엔드포인트에서 오류를 반환합니다.
상태
start
요청이 성공하면 mongosync
은(는) RUNNING
상태가 됩니다.
샤드 복제본 세트
복제본 세트에서 샤드 클러스터로 동기화하려면 sharding
옵션이 필요합니다. 이 옵션은 mongosync
가 collection을 샤딩하는 방법을 구성합니다.
sharding.shardingEntries
배열은 샤딩할 collection을 지정합니다. 이 배열에 나열되지 않은 컬렉션은 비샤드 컬렉션으로 복제됩니다.
지원 인덱스
mongosync
소스 클러스터 에서 대상 클러스터 로 인덱스를 동기화합니다. 복제본 세트 에서 샤딩된 클러스터 로 동기화할 때 mongosync
는 샤드 키 를 지원 하기 위해 추가 인덱스 가 필요할 수 있으며, 이 인덱스는 소스 클러스터 에 없을 수 있습니다.
mongosync
동기화 중에 샤드 collection에 대한 지원 인덱스를 생성할 수 있습니다. 이 작업은 sharding.createSupportingIndexes
옵션을 설정하면 됩니다.
sharding.createSupportingIndexes
이 false
인 경우(기본값):
sharding.shardingEntries
옵션에 제공하는 각 샤드 키에는 소스 cluster에 기존 인덱스가 있어야 합니다.collection에서 다른 데이터 정렬을 사용하는 경우 샤드 키에 사용되는 인덱스 중 하나에 단순 데이터 정렬이 있어야 합니다.
샤드 키의 고유 인덱스를 사용하려면 소스 클러스터에 인덱스를 생성할 때 고유성을 지정해야 합니다.
소스 클러스터의 고유 인덱스가 대상 cluster에서 요청된 샤드 키와 호환되지 않는 경우, 예를 들어 요청된 샤드 키가 대상의 접두사로 포함되지 않은 소스 클러스터의 고유 인덱스로 인해
mongosync
오류가 발생할 수 있습니다.
sharding.createSupportingIndexes
이 true
인 경우:
소스 클러스터에 지원 인덱스가 있는 경우
mongosync
는 인덱스를 대상 클러스터에 동기화하고 샤드 키로 사용합니다.지원 인덱스가 없는 경우
mongosync
가 대상 cluster에 인덱스를 생성합니다.
sharding.createSupportingIndexes
옵션은 모든 샤드 collection에 영향을 줍니다.
동기화 중 이름 변경
복제본 세트에서 cluster로 동기화할 때 sharding.shardingEntries
배열에 나열된 collection은 대상 cluster에서 샤드 collection이 됩니다.
start
를 호출한 후 mongosync
가 컬렉션 복사를 시작하기 전에 소스 클러스터에서 컬렉션 이름을 변경(예: renameCollection
명령 사용)하면 대상에서 컬렉션 샤딩을 차단할 수 있습니다.
참고
복제본 세트에서 cluster로 동기화하는 동안 다른 데이터베이스를 사용하도록 collection 이름을 바꾸는 것은 지원되지 않습니다.
collection 이름을 변경하는 것이 progress
안전한지 확인하려면 엔드포인트를 호출하고 collectionCopy.estimatedCopiedBytes
반환 문서에서 필드 값을 확인합니다.
값이 0이면
mongosync
이 collection 복사를 시작하지 않았음을 나타냅니다.이 점에서 collection 이름을 변경하면 소스에 이름 변경이 적용되기 전에 복사로의 전환이 발생할 수 있으므로 대상 cluster에 collection이 샤딩되지 않은 상태로 남을 수 있습니다.
0보다 큰 값은
mongosync
에서 복사를 시작했음을 나타냅니다. 이 점부터 collection의 이름을 변경해도 이벤트가 발생한 경우에도 대상 cluster에서 해당 샤딩을 차단하지 않습니다.
필수 인덱스
buildIndexes
옵션을 never
로 설정하여 /start
를 호출하면 mongosync
가 불필요한 인덱스 작성을 건너뜁니다.
항상 빌드되는 인덱스는 다음과 같습니다.
mongosync
복사하는 모든 collection의_id
필드에 인덱스를 빌드합니다.mongosync
대상 클러스터 에서 샤드 키 를 지원 하는 인덱스 가 없는 각 샤딩된 컬렉션 에 대해 더미 인덱스를 빌드합니다.buildIndexes
이(가)never
(으)로 설정하다 되면mongosync
은(는) 커밋 후에도 이 인덱스 를 유지합니다.
엔드포인트 보호
mongosync
start
엔드포인트를 보호하지 않습니다. 그러나 기본적으로 API는 로컬 호스트에만 바인딩되며 다른 소스의 호출은 허용하지 않습니다. 또한 start
호출은 연결 자격 증명이나 사용자 데이터를 노출하지 않습니다.