Amazon DocumentDB (MongoDB 호환) 를 소스로 사용 AWS DMS - AWS 데이터베이스 마이그레이션 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon DocumentDB (MongoDB 호환) 를 소스로 사용 AWS DMS

AWS DMS 가 소스로 지원하는 Amazon DocumentDB(MongoDB 호환) 버전에 대한 자세한 내용은 에 대한 소스 AWS DMS 섹션을 참조하세요.

Amazon DocumentDB를 소스로 사용하여 한 Amazon DocumentDB 클러스터에서 다른 Amazon DocumentDB 클러스터로 데이터를 마이그레이션할 수 있습니다. Amazon DocumentDB 클러스터의 데이터를 에서 지원하는 다른 대상 엔드포인트 중 하나로 마이그레이션할 수도 있습니다. AWS DMS

Amazon DocumentDB를 처음 사용하는 경우, Amazon DocumentDB 데이터베이스의 다음 중요 개념을 알고 있어야 합니다.

  • Amazon DocumentDB의 레코드는 필드와 값의 쌍으로 구성된 데이터 구조인 문서입니다. 필드의 값에는 다른 문서, 배열 및 문서의 배열이 포함될 수 있습니다. 문서는 대체로 관계형 데이터베이스 테이블의 행에 상응합니다.

  • Amazon DocumentDB의 모음은 문서 그룹이며, 대략 관계형 데이터베이스 테이블에 해당합니다.

  • Amazon DocumentDB의 데이터베이스는 모음 세트이며, 대략 관계형 데이터베이스의 스키마에 해당합니다.

AWS DMS Amazon DocumentDB를 소스로 사용할 때 두 가지 마이그레이션 모드, 즉 문서 모드와 테이블 모드를 지원합니다. 콘솔에서 AWS DMS Amazon DocumentDB 소스 엔드포인트를 생성할 때 메타데이터 모드 옵션 또는 추가 연결 속성을 사용하여 마이그레이션 모드를 지정합니다. nestingLevel 마이그레이션 모드 선택이 대상 데이터의 형식에 결과적으로 어떤 영향을 미치는지 아래에서 설명합니다.

문서 모드

문서 모드에서는 JSON 문서가 그대로 마이그레이션됩니다. 즉, 문서 데이터가 두 항목 중 하나로 통합됩니다. 관계형 데이터베이스를 대상으로 사용하는 경우, 데이터는 대상 테이블에서 이름이 _doc인 단일 열입니다. 비관계형 데이터베이스를 대상으로 사용하는 경우, 데이터는 단일 JSON 문서입니다. 문서 모드가 기본 모드이며, Amazon DocumentDB 대상으로 마이그레이션할 때 사용하는 것이 좋습니다.

예를 들어 myCollection이라는 Amazon DocumentDB 모음에 있는 다음 문서를 생각해 보세요.

> db.myCollection.find() { "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 } { "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }

데이터를 문서 모드를 사용하는 관계형 데이터베이스 테이블로 마이그레이션 하면, 데이터의 구조는 다음과 같습니다. 문서의 데이터 필드는 _doc 열로 통합됩니다.

oid_id _doc
5a94815f40bd44d1b02bdfe0 { "a" : 1, "b" : 2, "c" : 3 }
5a94815f40bd44d1b02bdfe1 { "a" : 4, "b" : 5, "c" : 6 }

선택적으로 추가 연결 속성 extractDocIDtrue로 설정하여 프라이머리 키 역할을 하는 "_id"라는 두 번째 열을 생성할 수 있습니다. 변경 데이터 캡처(CDC)를 사용하려는 경우, Amazon DocumentDB를 대상으로 사용하는 경우를 제외하고 이 파라미터를 true로 설정합니다.

참고

원본 데이터베이스에 새 컬렉션을 추가하면 컬렉션의 새 대상 테이블이 AWS DMS 생성되고 모든 문서가 복제됩니다.

테이블 모드

테이블 모드에서AWS DMS 는 Amazon DocumentDB 문서의 각 최상위 수준 필드를 대상 테이블의 열로 변환합니다. 필드가 중첩된 경우 중첩된 값을 단일 열로 AWS DMS 병합합니다. AWS DMS 그런 다음 대상 테이블의 열 세트에 키 필드와 데이터 유형을 추가합니다.

각 Amazon DocumentDB 문서에 AWS DMS 대해 각 키와 유형을 대상 테이블의 열 세트에 추가합니다. 예를 들어, 테이블 모드를 사용하면 이전 예제를 다음 테이블로 AWS DMS 마이그레이션합니다.

oid_id a b c
5a94815f40bd44d1b02bdfe0 1 2 3
5a94815f40bd44d1b02bdfe1 4 5 6

중첩된 값은 점으로 분리된 키 이름을 포함하는 열에 평면화됩니다. 열의 이름은 마침표로 구분되고 평면화된 필드 이름의 연결을 사용하여 지정됩니다. 예를 들어, 는 중첩된 값 필드 (예:) 가 있는 JSON 문서를 이름이 지정된 열로 AWS DMS {"a" : {"b" : {"c": 1}}} 마이그레이션합니다. a.b.c.

대상 열을 생성하기 위해 지정된 개수의 Amazon DocumentDB 문서를 AWS DMS 스캔하고 모든 필드와 해당 유형의 세트를 생성합니다. AWS DMS 그런 다음 이 세트를 사용하여 대상 테이블의 열을 생성합니다. 콘솔을 사용하여 Amazon DocumentDB 소스 엔드포인트를 생성하거나 수정하는 경우, 스캔할 문서 수를 지정할 수 있습니다. 기본값은 1,000 개의 문서입니다. 를 AWS CLI사용하는 경우 추가 연결 속성을 사용할 수 docsToInvestigate 있습니다.

테이블 모드에서는 다음과 같이 문서 및 컬렉션을 AWS DMS 관리합니다.

  • 기존 모음에 문서를 추가할 때 문서가 복제됩니다. 대상에 없는 필드가 있으면 이 필드는 복제되지 않습니다.

  • 문서를 업데이트하면 업데이트된 문서가 복제됩니다. 대상에 없는 필드가 있으면 이 필드는 복제되지 않습니다.

  • 문서 삭제는 완벽하게 지원됩니다.

  • 새 모음을 CDC 작업 중에 추가해도 대상에 테이블이 새로 생성되지 않습니다.

  • 변경 데이터 캡처 (CDC) 단계에서는 컬렉션 이름 변경을 AWS DMS 지원하지 않습니다.

Amazon DocumentDB를 소스로 사용하기 위한 권한 설정

Amazon DocumentDB 소스를 사용하여 AWS DMS 마이그레이션하는 경우 루트 권한이 있는 사용자 계정을 생성할 수 있습니다. 또는 마이그레이션할 데이터베이스에 대한 권한만 있는 사용자를 생성할 수도 있습니다.

다음 코드는 루트 계정으로 사용자를 생성합니다.

use admin db.createUser( { user: "root", pwd: "password", roles: [ { role: "root", db: "admin" } ] })

Amazon DocumentDB 3.6의 경우, 다음 코드는 마이그레이션할 데이터베이스에 대한 최소 권한이 있는 사용자를 생성합니다.

use database_to_migrate db.createUser( { user: "dms-user", pwd: "password", roles: [ { role: "read", db: "db_name" }, "read"] })

Amazon DocumentDB 4.0 이상의 경우 배포 전반의 변경 AWS DMS 스트림을 사용합니다. 여기서 다음 코드는 최소 권한을 가진 사용자를 생성합니다.

db.createUser( { user: "dms-user", pwd: "password", roles: [ { role: "readAnyDatabase", db: "admin" }] })

Amazon DocumentDB 클러스터를 위한 CDC 구성

Amazon DocumentDB에서 지속적인 복제 또는 CDC를 사용하려면 Amazon AWS DMS DocumentDB 클러스터의 변경 스트림에 액세스할 수 있어야 합니다. 클러스터 모음 및 데이터베이스의 시간순 업데이트 이벤트 시퀀스에 대한 설명은 Amazon DocumentDB 개발자 안내서변경 스트림 사용을 참조하세요.

MongoDB 쉘을 사용하여 Amazon DocumentDB 클러스터에 인증합니다. 그러고 나서 다음 명령을 실행하여 변경 스트림을 활성화합니다.

db.adminCommand({modifyChangeStreams: 1, database: "DB_NAME", collection: "", enable: true});

이 방식을 사용하면 데이터베이스의 모든 모음에 변경 스트림을 활성화할 수 있습니다. 변경 스트림이 활성화되면 기존 데이터를 마이그레이션하는 동시에 진행 중인 변경 사항을 복제하는 마이그레이션 작업을 생성할 수 있습니다. AWS DMS 대량 데이터가 로드된 후에도 변경 사항을 계속 캡처하고 적용합니다. 결국 소스 데이터베이스와 대상 데이터베이스가 동기화되어 마이그레이션의 가동 중지 시간이 최소화됩니다.

참고

AWS DMS 작업 로그 (oplog) 를 사용하여 복제가 진행 중인 동안 변경 사항을 캡처합니다. Amazon DocumentDB가 레코드를 읽기 AWS DMS 전에 oplog에서 해당 레코드를 삭제하면 작업이 실패합니다. 24시간 이상 변경 사항이 유지되도록 oplog의 크기를 조정하는 것이 좋습니다.

TLS를 사용하여 Amazon DocumentDB에 연결

기본적으로 새로 생성한 Amazon DocumentDB 클러스터는 전송 계층 보안(TLS)을 사용한 보안 연결만 허용합니다. TLS가 활성화되면 Amazon DocumentDB에 대한 모든 연결에 퍼블릭 키가 필요합니다.

AWS호스팅된 Amazon S3 버킷에서 rds-combined-ca-bundle.pem 파일을 다운로드하여 Amazon DocumentDB의 퍼블릭 키를 검색할 수 있습니다. 이 파일을 다운로드하는 방법에 관한 자세한 내용은 Amazon DocumentDB 개발자 안내서TLS를 사용한 연결 암호화를 참조하세요.

파일을 다운로드한 후 rds-combined-ca-bundle.pem 파일에 포함된 퍼블릭 키를 가져올 수 있습니다. AWS DMS다음 단계에서 그 방법을 설명합니다.

AWS DMS 콘솔을 사용하여 퍼블릭 키를 가져오려면
  1. 에 AWS Management Console 로그인하고 선택하세요 AWS DMS.

  2. 탐색 창에서 [Certificates]를 선택합니다.

  3. 인증서 가져오기를 선택합니다. 새 CA 인증서 가져오기 페이지가 나타납니다.

  4. 인증서 구성 섹션에서 다음 중 하나를 수행합니다.

    • 인증서 식별자에 해당 인증서의 고유 이름(예: docdb-cert)을 입력합니다.

    • 파일 선택을 선택하고 rds-combined-ca-bundle.pem 파일을 저장한 위치로 이동한 다음 파일을 선택합니다.

  5. 새 CA 인증서 추가를 선택합니다.

AWS CLI 다음 예제에서는 AWS DMS import-certificate 명령을 사용하여 공개 키 rds-combined-ca-bundle.pem 파일을 가져옵니다.

aws dms import-certificate \ --certificate-identifier docdb-cert \ --certificate-pem file://./rds-combined-ca-bundle.pem

Amazon DocumentDB 소스 엔드포인트 생성

콘솔 또는 AWS CLI를 사용하여 Amazon DocumentDB 소스 엔드포인트를 생성할 수 있습니다. 콘솔에서는 다음 절차를 사용하세요.

콘솔을 사용하여 Amazon DocumentDB 소스 엔드포인트를 구성하려면 AWS DMS
  1. 에 AWS Management Console 로그인하고 선택하십시오. AWS DMS

  2. 탐색 창에서 엔드포인트를 선택하고 엔드포인트 생성을 선택합니다.

  3. 엔드포인트 식별자에 쉽게 식별할 수 있는 이름(예: docdb-source)을 제공합니다.

  4. 소스 엔진에서 Amazon DocumentDB(MongoDB 호환)를 선택합니다.

  5. 서버 이름에 Amazon DocumentDB 데이터베이스 엔드포인트가 있는 서버의 이름을 입력합니다. 예를 들어 Amazon EC2 인스턴스의 퍼블릭 DNS 이름(예: democluster.cluster-cjf6q8nxfefi.us-east-2.docdb.amazonaws.com)을 입력할 수 있습니다.

  6. 포트에 27017을 입력합니다.

  7. SSL 모드에서 verify-full을 선택합니다. Amazon DocumentDB 클러스터에서 SSL을 비활성화한 경우, 이 단계를 건너뛰어도 됩니다.

  8. CA 인증서에서 Amazon DocumentDB 인증서인 rds-combined-ca-bundle.pem을 선택합니다. 이 인증서를 추가하는 방법에 대한 지침은 TLS를 사용하여 Amazon DocumentDB에 연결 섹션을 참조하세요.

  9. 데이터베이스 이름에 마이그레이션할 데이터베이스의 이름을 입력합니다.

CLI에서는 다음 절차를 사용하세요.

다음을 사용하여 Amazon DocumentDB 소스 엔드포인트를 구성하려면 AWS CLI
  • 다음 AWS DMS create-endpoint 명령을 실행하여 Amazon DocumentDB 소스 엔드포인트를 구성하고 자리 표시자를 사용자 고유의 값으로 바꿉니다.

    aws dms create-endpoint \ --endpoint-identifier a_memorable_name \ --endpoint-type source \ --engine-name docdb \ --username value \ --password value \ --server-name servername_where_database_endpoint_resides \ --port 27017 \ --database-name name_of_endpoint_database

Amazon DocumentDB 모음을 분할하고 병렬로 마이그레이션

마이그레이션 작업의 성능을 개선하기 위해 Amazon DocumentDB 소스 엔드포인트는 테이블 매핑에서 병렬 전체 로드 기능 옵션 두 가지를 지원합니다. 다시 말해 JSON 설정에서 병렬 전체 로드를 위해 테이블 매핑에서 자동 분할 옵션이나 범위 분할 옵션을 사용하여 모음을 병렬로 마이그레이션할 수 있습니다. 자동 세분화 옵션을 사용하면 각 스레드에서 마이그레이션할 소스를 자동으로 세그먼트화하는 기준을 지정할 수 있습니다. AWS DMS 범위 세분화 옵션을 사용하면 각 스레드에서 AWS DMS DMS가 마이그레이션할 각 세그먼트의 특정 범위를 지정할 수 있습니다. 이러한 설정에 대한 자세한 내용은 테이블 및 컬렉션 설정 규칙과 작업 섹션을 참조하세요.

자동 분할 범위를 사용하여 Amazon DocumentDB 데이터베이스를 병렬로 마이그레이션

각 스레드의 데이터를 자동으로 분할 (세그먼트) AWS DMS 하는 기준, 특히 스레드당 마이그레이션할 문서 수를 지정하여 문서를 병렬로 마이그레이션할 수 있습니다. AWS DMS 는 이 방식을 사용하여 스레드당 성능을 극대화하는 세그먼트 경계 최적화를 시도합니다.

테이블 매핑에서 다음 테이블 설정 옵션을 사용하여 분할 기준을 지정할 수 있습니다.

테이블 설정 옵션

설명

"type"

(필수) 소스로 사용하는 Amazon DocumentDB의 경우, "partitions-auto"로 설정합니다.

"number-of-partitions"

(선택 사항) 마이그레이션에 사용되는 총 파티션(세그먼트) 수. 기본값은 16입니다.

"collection-count-from-metadata"

(선택 사항) 로 true 설정하면 예상 수집 수를 AWS DMS 사용하여 파티션 수를 결정합니다. 로 false 설정된 경우 실제 컬렉션 수를 AWS DMS 사용합니다. 기본값은 true입니다.

"max-records-skip-per-page"

(선택 사항) 각 파티션의 경계를 결정할 때 한 번에 건너뛰는 레코드 수입니다. AWS DMS 페이징된 건너뛰기 방식을 사용하여 파티션의 최소 경계를 결정합니다. 기본값은 10,000입니다. 상대적으로 큰 값을 설정하면 커서 시간이 초과되고 작업이 실패할 수 있습니다. 상대적으로 작은 값을 설정하면 페이지당 작업 수가 늘어나고 전체 로드 속도가 느려집니다.

"batch-size"

(선택 사항) 배치 하나에서 반환되는 문서 수를 제한합니다. 배치마다 서버를 왕복해야 합니다. 배치 크기가 0인 경우, 커서는 서버에서 정의한 최대 배치 크기를 사용합니다. 기본값은 0입니다.

다음 예제는 자동 분할을 위한 테이블 매핑을 보여 줍니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "admin", "table-name": "departments" }, "rule-action": "include", "filters": [] }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "admin", "table-name": "departments" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 5, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } } ] }

자동 분할에는 다음과 같은 제한이 있습니다. 각 세그먼트의 마이그레이션은 모음 개수와 모음의 최소 _id를 개별적으로 가져옵니다. 그런 다음 페이지 매김 건너뛰기를 사용하여 해당 세그먼트의 최소 경계를 계산합니다. 따라서 모음의 모든 세그먼트 경계를 계산할 때까지 각 모음의 최소 _id 값이 일정하게 유지되어야 합니다. 세그먼트 경계를 계산하는 동안 모음의 최소 _id 값을 변경하면 데이터가 손실되거나 행 중복 오류가 발생할 수 있습니다.

특정 세그먼트 범위를 사용하여 Amazon DocumentDB 데이터베이스를 병렬로 마이그레이션

다음 예제에 나온 Amazon DocumentDB 모음에는 항목 7개와 프라이머리 키 _id가 있습니다.

7개 항목이 있는 Amazon DocumentDB 모음.

모음을 세 개의 세그먼트로 분할하고 병렬로 마이그레이션하려면 다음 JSON 예제와 같이 마이그레이션 작업에 테이블 매핑 규칙을 추가하면 됩니다.

{ // Task table mappings: "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "testdatabase", "table-name": "testtable" }, "rule-action": "include" }, // "selection" :"rule-type" { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "testdatabase", "table-name": "testtable" }, "parallel-load": { "type": "ranges", "columns": [ "_id", "num" ], "boundaries": [ // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79 // and num less-than-or-equal-to 2. [ "5f805c97873173399a278d79", "2" ], // Second segment selects documents with _id > 5f805c97873173399a278d79 and // _id less-than-or-equal-to 5f805cc5873173399a278d7c and // num > 2 and num less-than-or-equal-to 5. [ "5f805cc5873173399a278d7c", "5" ] // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c. ] // :"boundaries" } // :"parallel-load" } // "table-settings" :"rule-type" ] // :"rules" } // :Task table mappings

이 테이블 매핑 정의는 소스 모음을 세 개의 세그먼트로 분할하고 병렬로 마이그레이션합니다. 분할 경계는 다음과 같습니다.

Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records) Data with _id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 and not in (_id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2) (3 records) Data not in (_id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5) (2 records)

마이그레이션 작업이 완료되면 다음 예제와 같이 작업 로그에서 테이블이 병렬로 로드된 것을 확인할 수 있습니다. 소스 테이블에서 각 세그먼트를 언로드하는 데 사용된 Amazon DocumentDB find 절도 확인할 수 있습니다.

[TASK_MANAGER ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328) [SOURCE_UNLOAD ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent. [TASK_MANAGER ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) [SOURCE_UNLOAD ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328) [SOURCE_UNLOAD ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent. [TARGET_LOAD ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480. [TASK_MANAGER ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.

현재, AWS DMS 는 다음과 같은 Amazon DocumentDB 데이터 유형을 세그먼트 키 열로 지원합니다.

  • Double

  • String

  • ObjectId

  • 32비트 정수

  • 64비트 정수

Amazon DocumentDB를 원본으로 사용할 때 여러 데이터베이스를 마이그레이션하는 경우 AWS DMS

AWS DMS 버전 3.4.5 이상에서는 Amazon DocumentDB 버전 4.0 이상에서만 단일 작업으로 여러 데이터베이스를 마이그레이션할 수 있습니다. 여러 데이터베이스를 마이그레이션하려면 다음을 수행하세요.

  1. Amazon DocumentDB 소스 엔드포인트를 생성할 때:

    • 양식에서 AWS Management Console 엔드포인트 AWS DMS생성 페이지의 엔드포인트 구성 아래에 데이터베이스 이름을 비워 두십시오.

    • AWS Command Line Interface (AWS CLI) 에서 작업에 대해 지정하는 DocumentDbSettings의 DatabaseName매개 변수에 빈 문자열 값을 할당합니다. CreateEndpoint

  2. 이 Amazon DocumentDB 소스 엔드포인트에서 마이그레이션하려는 각 데이터베이스마다 콘솔의 안내 입력을 사용하거나 JSON에서 직접 각 데이터베이스의 이름을 작업 테이블 매핑의 스키마 이름으로 지정합니다. 안내 입력에 대한 자세한 내용은 콘솔에서 테이블 선택 및 변환 규칙 지정의 설명을 참조하세요. JSON에 대한 자세한 내용은 선택 규칙 및 작업 섹션을 참조하세요.

예를 들면 다음과 같이 JSON을 지정하여 Amazon DocumentDB 데이터베이스 3개를 마이그레이션할 수 있습니다.

예 스키마에서 모든 테이블 마이그레이션

다음 JSON은 소스 엔드포인트에 있는 Customers, Orders, Suppliers 데이터베이스의 모든 테이블을 대상 엔드포인트로 마이그레이션합니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Customers", "table-name": "%" }, "object-locator": { "schema-name": "Orders", "table-name": "%" }, "object-locator": { "schema-name": "Inventory", "table-name": "%" }, "rule-action": "include" } ] }

Amazon DocumentDB를 원본으로 사용할 때의 제한 사항 AWS DMS

Amazon DocumentDB를 원본으로 사용할 때의 제한 사항은 다음과 같습니다. AWS DMS

  • _id 옵션이 별도의 열로 설정된 경우 ID 문자열이 200자를 초과할 수 없습니다.

  • 객체 ID와 배열 형식 키는 테이블 모드에서 oidarray 접두사가 붙은 열로 변환됩니다.

    내부적으로 이러한 열은 접두사 이름으로 참조됩니다. 이러한 열을 AWS DMS 참조하는 변환 규칙을 사용하는 경우 접두어가 붙은 열을 지정해야 합니다. 예를 들면 ${_id}가 아니라 ${oid__id}, 또는 ${_addresses}가 아니라 ${array__addresses}를 지정합니다.

  • 모음 이름과 키 이름에는 달러 기호($)를 포함할 수 없습니다.

  • 테이블 모드와 문서 모드에는 앞서 설명한 제한이 있습니다.

  • 자동 분할을 사용한 병렬 마이그레이션에는 앞에서 설명한 제한 사항이 있습니다.

  • Amazon DocumentDB(MongoDB 호환) 소스는 변경 데이터 캡처(CDC) 시작 위치로 특정 타임스탬프를 사용하는 것을 지원하지 않습니다. 지속적 복제 작업은 타임스탬프에 상관없이 변경 내용을 캡처하기 시작합니다.

  • DocumentDB(MongoDB 호환)를 소스로 사용하는 경우, DMS는 초당 최대 250개의 레코드를 처리할 수 있습니다.

  • AWS DMS 중첩 수준이 97보다 큰 문서는 지원하지 않습니다.

  • DocumentDB에는 소스 필터가 지원되지 않습니다.

  • AWS DMS 탄력적 클러스터 모드에서는 DocumentDB에 대한 CDC (변경 데이터 캡처) 복제를 소스로 지원하지 않습니다.

Amazon DocumentDB를 소스로 하는 엔드포인트 설정 사용

추가 연결 속성을 사용하는 것과 비슷하게 엔드포인트 설정을 사용하여 Amazon DocumentDB 소스 데이터베이스를 구성할 수 있습니다. AWS DMS 콘솔을 사용하거나 에서 JSON 구문을 사용하여 create-endpoint 명령을 사용하여 원본 엔드포인트를 생성할 때 설정을 지정합니다. AWS CLI--doc-db-settings '{"EndpointSetting": "value", ...}'

Amazon DocumentDB를 소스로 하여 사용할 수 있는 엔드포인트 설정이 다음 표에 나와 있습니다.

속성 이름 유효값 기본값과 설명

NestingLevel

"none"

"one"

"none" - 문서 모드를 사용하려면 "none"을 지정합니다. 테이블 모드를 사용하려면 "one"을 지정합니다.

ExtractDocID

true

false

false - 이 속성은 NestingLevel"none"으로 설정된 경우에 사용합니다.

대상 데이터베이스가 Amazon DocumentDB인 경우, '{"ExtractDocID": true}'를 설정합니다.

DocsToInvestigate

0보다 큰 양의 정수입니다.

1000 - 이 속성은 NestingLevel"one"으로 설정된 경우에 사용합니다.

ReplicateShardCollections

boolean

true

false

true인 경우 데이터를 샤드 AWS DMS 컬렉션에 복제합니다. AWS DMS 대상 엔드포인트가 DocumentDB 엘라스틱 클러스터인 경우에만 이 설정을 사용합니다.

이 설정이 true인 경우 다음 사항에 유의하세요.

  • TargetTablePrepModenothing으로 설정해야 합니다.

  • AWS DMS 로 자동 설정됩니다useUpdateLookup. false

Amazon DocumentDB의 소스 데이터 형식

다음 표에서 AWS DMS사용 시 지원되는 Amazon DocumentDB 소스 데이터 형식을 찾을 수 있습니다. 이 표의 AWS DMS 데이터 유형에서 기본 매핑을 찾을 수도 있습니다. 데이터 형식에 대한 자세한 내용은 MongoDB 설명서의 BSON Types를 참조하세요.

대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참조하십시오.

AWS DMS 데이터 유형에 대한 추가 정보는 을 참조하십시오AWS Database Migration Service에서 사용되는 데이터 형식.

Amazon DocumentDB 데이터 형식

AWS DMS 데이터 유형

부울

바이너리

BLOB

날짜

날짜

타임스탬프

날짜

정수

INT4

Long

INT8

Double

REAL8

String(UTF-8)

CLOB

배열

CLOB

OID

String