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

start

이 페이지의 내용

  • 설명
  • 요구 사항:
  • 요청
  • 응답
  • 예시
  • 행동

소스 cluster와 대상 cluster 간의 동기화를 시작합니다.

start 엔드포인트를 사용하려면 mongosyncIDLE 상태에 있어야 합니다.

mongosync 연결 string 에 지정된 사용자에게는 소스 및 대상 클러스터에 대한 필수 권한이 있어야 합니다. 사용자에게 동기화를 시작할 수 있는 올바른 권한이 있는지 확인하려면 사용자 권한 을 참조하세요.

mongosync 시작할 때 cluster0 또는 cluster1 설정에 대한 연결 문자열에 구성된 mongosync 사용자를 사용해야 합니다.

참고

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

자세한 내용은 다중 Mongosync 시작을 참조하세요.

POST /api/v1/start
Parameter
유형
필요성
설명

source

문자열

필수 사항

소스 클러스터의 이름입니다.

destination

문자열

필수 사항

대상 cluster의 이름입니다.

buildIndexes

문자열

옵션

동기화 중에 인덱스 빌드를 구성합니다.

지원되는 옵션:

  • beforeDataCopy (기본값)은 mongosync 가 대상 cluster에 인덱스를 빌드하도록 합니다. 여기에는 기존 인덱스와 소스 cluster에서 마이그레이션하는 동안 생성된 모든 인덱스가 모두 포함됩니다.

  • never mongosync 가 동기화 중에 불필요한 인덱스 빌드를 건너뛰도록 합니다. 이렇게 하면 특히 인덱스가 많은 워크로드의 경우 마이그레이션 성능이 향상될 수 있습니다.

    확인을 활성화하고 buildIndexes 을(를) never(으)로 설정하다 한 상태에서 동기화 를 시작하면 mongosync 이(가) 소스 클러스터 에서 TTL 컬렉션 을 찾으면 마이그레이션 이 실패합니다. 이는 /start 엔드포인트를 호출한 후 또는 훨씬 나중에 발생할 수 있습니다(예: 마이그레이션 이 진행 중인 동안 사용자가 소스 클러스터 에 TTL 인덱스 를 생성하는 경우).

    대상 클러스터 에 인덱스를 구축하지 않고 TTL 컬렉션을 동기화 하려면 검증기를 비활성화한 상태에서 동기화 를 시작해야 합니다.

    경고: mongosync 이(가) 마이그레이션 을 수행하는 동안 인덱스를 수동으로 빌드 하지 마십시오 . 마이그레이션 이 완전히 커밋될 때까지 기다립니다.

    빌드 하는 인덱스에 대한 자세한 내용은 필수 인덱스를 참조하세요.

/start buildIndexes 이(가) never 로 설정되고 reversible 이(가) true 로 설정된 경우 오류를 반환합니다.

buildIndexes 옵션을 지정하지 않고 /start 를 호출하면 mongosync 가 대상 cluster에서 인덱스를 빌드합니다.

버전 1.3.0에 추가 되었습니다.

enableUserWriteBlocking

부울

옵션

true 로 설정하면 동기화가 진행되는 동안 대상 cluster에서 쓰기를 차단합니다. 대상 클러스터에 동기화가 커밋되면 원래 소스 클러스터는 쓰기를 차단하고 대상 클러스터는 쓰기를 허용합니다.

역 동기화 하려면 enableUserWriteBlocking 필드 를 true 로 설정하다 해야 합니다. 예를 예시 마이그레이션 테스트를 실행 한 후 소스 클러스터 가 쓰기를 다시 허용하려면 다음 명령을 실행 합니다.

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

기본값은 false 입니다.

includeNamespaces

배열

옵션

동기화에 포함할 데이터베이스 또는 collection을 필터링합니다.

여러 데이터베이스가 있는 소스 클러스터에 필터를 구성하는 경우 mongosync 는 필터 정의에 지정된 데이터베이스만 동기화합니다. mongosync 은(는) 다른 기존 데이터베이스를 동기화하지 않습니다.

필터를 수정하여 새로 생성된 데이터베이스를 추가 하려면 필터링된 동기화를 처음부터 다시 시작 해야 합니다.

자세한 내용은 필터링된 동기화를 참조하세요.

현재 제한 사항은 필터링된 동기화를 참조하세요.

버전 1.1에 추가 되었습니다.

excludeNamespaces

배열

옵션

동기화에서 제외할 데이터베이스 또는 collection을 필터링합니다.

여러 데이터베이스가 있는 소스 클러스터에 필터를 구성하는 경우 mongosync 는 필터 정의에 지정된 데이터베이스만 동기화합니다. mongosync 은(는) 다른 기존 데이터베이스를 동기화하지 않습니다.

필터를 수정하여 새로 생성된 데이터베이스를 추가 하려면 필터링된 동기화를 처음부터 다시 시작 해야 합니다.

자세한 내용은 필터링된 동기화를 참조하세요.

현재 제한 사항은 필터링된 동기화를 참조하세요.

버전 1.6에 새로 추가되었습니다.

reversible

부울

옵션

true 로 설정하면 동기화 작업을 되돌릴 수 있습니다.

역동기화하려면 enableUserWriteBlocking 필드를 true 로 설정해야 합니다.

다음 구성에서는 이 옵션이 지원되지 않습니다.

  • 복제본 세트에서 샤드 cluster로 동기화

  • 샤드 수가 다른 샤드 클러스터 동기화

  • buildIndexes 이(가) never(으)로 설정된 경우 동기화 취소 가능

  • 내장된 검증자와 역방향 동기화 . 검증 도구는 가역 동기화 의 초기 정방향을 지원합니다. /reverse 엔드포인트를 호출하면 검증자가 비활성화됩니다.

자세한 내용은 역방향 엔드포인트를 참조하세요.

기본값은 false 입니다.

sharding

문서

옵션

복제본 세트와 샤드 cluster 간의 동기화를 구성합니다. 복제본 세트에서 샤드 cluster로 동기화하려면 이 옵션이 필요합니다.

자세한 내용은 샤딩 매개변수를 참조하세요.

버전 1.1에 추가 되었습니다.

verification

문서

옵션

내장된 검증자를 구성합니다.

자세한 내용은 Embedded Verifier를 참조하세요.

버전 1.9에 새로 추가되었습니다.

verification.enabled

Bool

옵션

내장된 검증자를 활성화합니다. 검증자는 마이그레이션 이 성공적인 했는지 확인하기 위해 대상 클러스터 에서 지원되는 컬렉션에 대해 일련의 확인 검사를 수행합니다.

검증자가 오류를 찾지 못하면 mongosyncCOMMITTED 상태 로 전환됩니다. 오류가 발생하면 마이그레이션 이 실패합니다.

검증기는 복제본 세트 에서 복제본 세트 의 마이그레이션에 대해 기본값 활성화되어 있습니다. 마이그레이션 에 샤딩된 클러스터 가 포함되는 경우 검증자는 비활성화됩니다.

경고 : 검증자는 모든 컬렉션이나 데이터를 확인하지 않습니다. 자세한 내용은 Embedded Verifier를 참조하세요.

버전 1.9에 새로 추가되었습니다.

버전 1.1에 추가 되었습니다.

복제본 세트에서 shard cluster로 동기화하려면 대상 cluster에서 collection을 샤딩하는 sharding 옵션을 설정합니다.

sharding 옵션에는 다음과 같은 매개 변수가 있습니다.

Parameter
유형
설명

createSupportingIndexes

부울

선택 사항. 샤드 키 에 대한 지원 인덱스가 존재하지 않는 경우 동기화 시 생성할 지원 인덱스 를 설정합니다. 기본값 은 false 입니다.

자세한 내용 및 제한 사항은 지원 인덱스를 참조하세요.

shardingEntries

문서 배열

필수입니다. 동기화 중에 샤딩할 collection의 네임스페이스 및 키를 설정합니다.

이 배열에 포함되지 않은 collection은 대상 cluster의 샤딩되지 않은 collection과 동기화됩니다. 빈 배열로 설정하면 collection이 샤딩되지 않습니다.

shardingEntries
.collection

문자열

collection을 샤딩으로 설정합니다.

shardingEntries
.database

문자열

샤딩할 collection의 데이터베이스를 설정합니다.

shardingEntries
.shardCollection

문서

대상 cluster에서 생성할 샤드 키를 설정합니다.

shardingEntries
.shardCollection
.key

배열

샤드 키에 사용할 필드를 설정합니다.

자세한 내용은 샤드 키 를 참조하세요.

mongosync 복제본 세트에서 샤드 클러스터로 동기화할 때 sharding 옵션이 설정되어 있지 않으면 오류가 발생합니다. 옵션이 다른 구성과 함께 설정된 경우mongosync 에서도 오류가 발생합니다.sharding

필드
유형
설명

success

부울

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

error

문자열

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

errorDescription

문자열

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

다음 예는 cluster0cluster1 간에 동기화 작업을 시작합니다. 소스 클러스터는 cluster0 이고 대상 클러스터는 cluster1 입니다.

요청:

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1"
} '

응답:

{"success":true}

다음 예는 cluster0cluster1 간에 동기화 작업을 시작합니다. 소스 클러스터는 cluster0 이고 대상 클러스터는 cluster1 입니다.

reversibleenableUserWriteBlocking 필드를 사용하면 동기화를 되돌릴 수 있습니다. 동기화 방향을 반전하려면 반전을 참조하세요 .

요청:

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1",
"reversible": true,
"enableUserWriteBlocking": true
} '

응답:

{"success":true}

다음 예는 cluster0cluster1 간에 동기화 작업을 시작합니다. 소스 클러스터는 cluster0 이고 대상 클러스터는 cluster1 입니다.

cluster0 sales, marketingengineering 데이터베이스를 포함합니다.

sales 데이터베이스에는 EMEA, APACAMER 컬렉션이 포함되어 있습니다.

이 예시의 includeNamespaces 배열은 salesmarketing의 두 데이터베이스에 적용할 필터를 정의합니다.

sales 데이터베이스는 EMEAAPAC 컬렉션도 필터링합니다.

"includeNamespaces" : [
{
"database" : "sales",
"collections": [ "EMEA", "APAC" ]
},
{
"database" : "marketing"
}
]

이 필터를 사용하여 /start API를 호출한 후 mongosync:

  • marketing 데이터베이스의 모든 컬렉션 동기화

  • engineering 데이터베이스 필터링

  • sales 데이터베이스에서 EMEAAPAC 컬렉션 동기화

  • 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.enabledfalse 로 설정하다 합니다.

요청:

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1",
"verification": {
"enabled": false
}
} '

응답:

{"success":true}

애플리케이션 로드를 대상 클러스터 로 전송하기 전에 마이그레이션 이 성공적인 했는지 확인해야 합니다. 어떤 이유로든 검증기를 비활성화해야 하는 경우 다른 방법을 사용하여 동기화 를 확인합니다.

1.9부터 mongosync 는 소스 클러스터 에서 대상으로의 데이터 전송 이 성공적인 했는지 여부를 확인하는 내장된 검증자를 제공합니다.

활성화되면 검증자는 대상 클러스터 에 대해 일련의 검증 검사를 수행합니다. 이러한 검사 중 하나라도 오류가 반환되면 검증자가 마이그레이션 에 실패합니다. 모든 검사가 성공하면 mongosyncCOMMITTED 상태 로 전환됩니다.

검증자를 비활성화하려면 검증자를 비활성화한 상태로 시작하기를 참조하세요.

소스 또는 대상 클러스터 에서 지원하지 않는 확인 검사를 활성화 하거나 메모리가 부족한 경우 /start 엔드포인트에서 오류를 반환합니다.

start 요청이 성공하면 mongosync 은(는) RUNNING 상태가 됩니다.

복제본 세트에서 샤드 클러스터로 동기화하려면 sharding 옵션이 필요합니다. 이 옵션은 mongosync 가 collection을 샤딩하는 방법을 구성합니다.

sharding.shardingEntries 배열은 샤딩할 collection을 지정합니다. 이 배열에 나열되지 않은 컬렉션은 비샤드 컬렉션으로 복제됩니다.

자세한 내용은 샤드 클러스터 동작을 참조하세요.

mongosync 소스 클러스터 에서 대상 클러스터 로 인덱스를 동기화합니다. 복제본 세트 에서 샤딩된 클러스터 로 동기화할 때 mongosync 는 샤드 키 를 지원 하기 위해 추가 인덱스 가 필요할 수 있으며, 이 인덱스는 소스 클러스터 에 없을 수 있습니다.

mongosync 동기화 중에 샤드 collection에 대한 지원 인덱스를 생성할 수 있습니다. 이 작업은 sharding.createSupportingIndexes 옵션을 설정하면 됩니다.

sharding.createSupportingIndexesfalse 인 경우(기본값):

  • sharding.shardingEntries 옵션에 제공하는 각 샤드 키에는 소스 cluster에 기존 인덱스가 있어야 합니다.

  • collection에서 다른 데이터 정렬을 사용하는 경우 샤드 키에 사용되는 인덱스 중 하나에 단순 데이터 정렬이 있어야 합니다.

  • 샤드 키의 고유 인덱스를 사용하려면 소스 클러스터에 인덱스를 생성할 때 고유성을 지정해야 합니다.

  • 소스 클러스터의 고유 인덱스가 대상 cluster에서 요청된 샤드 키와 호환되지 않는 경우, 예를 들어 요청된 샤드 키가 대상의 접두사로 포함되지 않은 소스 클러스터의 고유 인덱스로 인해 mongosync 오류가 발생할 수 있습니다.

sharding.createSupportingIndexestrue 인 경우:

  • 소스 클러스터에 지원 인덱스가 있는 경우 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 호출은 연결 자격 증명이나 사용자 데이터를 노출하지 않습니다.

돌아가기

mongosync API 엔드포인트