AWS Database Migration Service 사용 설명서
AWS Database Migration Service: 사용 설명서 Copyright 2019 Amazon Web Services, Inc. and/or its affiliates. All rights reserved. Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored by Amazon.
Table of Contents AWS Database Migration Service란 무엇입니까?... 1 AWS DMS에서 수행하는 마이그레이션 작업... 1 기본 수준에서 AWS DMS가 작동하는 방식... 2 AWS DMS 작동 방식... 4 AWS DMS의 상위 수준 보기... 4 구성 요소... 5 소스... 10 대상... 11 다른 AWS 서비스... 12 AWS CloudFormation 지원... 12 ARN 생성... 12 설정... 15 AWS에 가입... 15 IAM 사용자 생성... 15 AWS Database Migration Service 마이그레이션 계획... 17 시작하기... 18 데이터베이스 마이그레이션 시작... 18 1단계: 소개... 18 2단계: 복제 인스턴스 생성... 19 3단계: 원본과 대상 엔드포인트 지정... 23 4단계: 작업 생성... 26 작업 모니터링... 30 보안... 32 필요한 IAM 권한... 32 CLI와 API에 대한 IAM 역할... 35 Fine-Grained Access Control... 39 리소스 이름을 사용하여 액세스 제어... 39 태그를 사용하여 액세스 제어... 41 암호화 키 설정... 45 네트워크 보안... 46 SSL 사용... 47 AWS Database Migration Service에서 SSL을 사용할 때 적용되는 제한 사항... 48 인증서 관리... 49 MySQL 호환, PostgreSQL 또는 SQL Server 엔드포인트에서 SSL 활성화... 49 Oracle 엔드포인트용 SSL 지원... 51 데이터베이스 암호 변경... 55 제한... 57 AWS Database Migration Service 제한 사항... 57 복제 인스턴스... 58 복제 인스턴스에 대한 자세한 설명... 59 퍼블릭 및 프라이빗 복제 인스턴스... 61 AWS DMS 유지 관리... 61 AWS DMS 유지 관리 기간... 61 복제 엔진 버전... 64 복제 인스턴스 버전 사용 중지... 64 복제 인스턴스의 엔진 버전 업그레이드... 64 복제 인스턴스용으로 네트워크 설정... 66 데이터 마이그레이션을 위한 네트워크 구성... 66 복제 서브넷 그룹 생성... 71 암호화 키 설정... 72 복제 인스턴스 생성... 73 복제 인스턴스 수정... 77 복제 인스턴스 재부팅... 79 복제 인스턴스 삭제... 81 iii
지원되는 DDL 문... 82 엔드포인트... 83 데이터 마이그레이션용 소스... 83 Oracle을 원본으로 사용... 84 SQL Server를 원본으로 사용... 99 Azure SQL 데이터베이스를 원본으로 사용... 108 PostgreSQL을 원본으로 사용... 109 MySQL을 원본으로 사용... 121 SAP ASE를 원본으로 사용... 128 MongoDB를 원본으로 사용... 131 원본으로 Amazon Simple Storage Service 사용... 136 IBM Db2 LUW를 소스로 사용... 141 대상 마이그레이션에 적합한 대상... 144 Oracle을 대상으로 사용... 145 SQL Server를 대상으로 사용... 150 PostgreSQL를 대상으로 사용... 154 MySQL을 대상으로 사용... 156 대상으로 Amazon Redshift 사용... 161 SAP ASE를 대상으로 사용... 172 대상으로 Amazon S3 사용... 174 대상으로 Amazon DynamoDB 사용... 190 대상으로 Amazon Kinesis Data Streams 사용... 203 대상으로 Amazon Elasticsearch Service 사용... 208 대상으로 Amazon DocumentDB 사용... 211 원본 및 대상 엔드포인트 생성... 223 작업... 227 작업 평가 보고서 생성... 228 작업 생성... 230 작업 설정... 237 LOB 지원 설정... 251 여러 작업 생성... 251 지속적 복제 작업... 252 CDC 시작 포인트에서 복제 시작... 252 작업 수정... 254 작업 중 테이블 다시 로드... 255 AWS Management 콘솔... 255 테이블 매핑... 257 콘솔에서 테이블 매핑을 통해 테이블 선택 및 변환 지정... 257 JSON을 사용하여 테이블 매핑을 통해 테이블 선택 및 변환 지정... 262 테이블 설정 규칙 및 작업... 273 소스 필터 사용... 286 작업 모니터링... 290 작업 상태... 290 작업 중 테이블 상태... 291 Amazon CloudWatch를 사용한 복제 작업 모니터링... 292 데이터 마이그레이션 서비스 지표... 294 복제 인스턴스 지표... 294 복제 작업 지표... 295 AWS DMS 로그 관리... 296 AWS CloudTrail을 사용하여 AWS DMS API 호출 로깅... 297 CloudTrail의 AWS DMS 정보... 298 AWS DMS 로그 파일 항목 이해... 298 검증 작업... 301 복제 작업 통계... 302 작업 중 테이블 다시 검증... 304 AWS Management 콘솔... 304 문제 해결... 304 iv
제한... 305 리소스 태그 지정... 306 API... 307 이벤트 및 알림 사용... 309 AWS DMS 이벤트 카테고리 및 이벤트 메시지... 309 AWS DMS 이벤트 알림 구독... 312 AWS Management 콘솔... 312 AWS DMS API... 313 Snowball 엣지를 사용하여 대규모 데이터 스토어를 마이그레이션... 314 프로세스 개요... 315 사전 조건... 316 마이그레이션 체크리스트... 316 단계별 절차... 318 1단계: Snowball 엣지 작업 생성... 318 2단계: AWS Schema Conversion Tool(AWS SCT) 다운로드 및 설치... 318 3단계: Snowball 엣지 디바이스 잠금 해제... 318 4단계: ODBC 드라이버로 DMS 에이전트 호스트 구성... 320 5단계: DMS 에이전트 설치... 322 6단계: 새 AWS SCT 프로젝트 생성... 324 7단계: AWS SCT를 구성하여 Snowball 엣지 디바이스 사용... 324 8단계: AWS SCT에서 DMS 에이전트 등록... 327 9단계: 로컬 및 DMS 작업 생성... 328 10단계: SCT에서 작업 실행 및 모니터링... 331 제한... 333 문제 해결... 335 느리게 실행되는 마이그레이션 작업... 335 작업 상태 표시줄이 이동하지 않음... 336 외래 키와 보조 인덱스 누락... 336 Amazon RDS 연결 문제... 336 오류 메시지: Incorrect thread connection string: incorrect thread value 0... 336 네트워킹 문제... 336 전체 로드 후 CDC 중단... 337 작업 재시작 시 기본 키 위반 오류... 337 스키마 초기 로그 실패... 337 알 수 없는 오류로 인해 작업 실패... 337 시작부터 작업 재시작 시 테이블 로드... 337 작업당 테이블 수... 338 Oracle별 문제 해결... 338 보기에서 데이터 가져오기... 338 12c에서 LOB 마이그레이션... 338 Oracle LogMiner와 Binary Reader 간 전환... 338 오류: Oracle CDC stopped 122301 Oracle CDC maximum retry counter exceeded.... 339 보충 로깅을 Oracle 원본 엔드포인트에 자동으로 추가합니다.... 339 LOB 변경 사항이 캡처되지 않음... 339 오류: ORA-12899: value too large for column <column-name>... 340 NUMBER 데이터 형식 오해... 340 MySQL별 문제 해결... 340 이진 로깅 비활성화로 인해 Amazon RDS DB 인스턴스 엔드포인트에서 CDC 작업 실패... 340 작업 중에 대상 MySQL 인스턴스 연결이 끊김... 341 MySQL 호환 엔드포인트에 자동 커밋 추가... 341 대상 MySQL 호환 엔드포인트에서 외래 키 비활성화... 341 물음표로 대체된 문자... 342 "Bad event" 로그 항목... 342 MySQL 5.5로 변경 데이터 캡처... 342 Amazon RDS DB 인스턴스를 위한 이진 로그 보존 기간 증가... 342 로그 메시지: 원본 데이터베이스의 일부 변경 사항은 대상 데이터베이스에 적용될 때 영향이 전혀 없었습니다.... 342 v
오류: Identifier too long... 342 오류: 지원되지 않는 문자 집합으로 인해 필드 데이터 변환 실패... 343 오류: Codepage 1252 to UTF8 [120112] A field data conversion failed... 343 PostgreSQL별 문제 해결... 344 잘리는 JSON 데이터 형식... 344 사용자 정의 데이터 형식 열이 올바르게 마이그레이션되지 않음... 344 오류: 생성하도록 선택된 스키마가 없음... 345 테이블 삭제와 업데이트가 CDC를 사용하여 복제되지 않음... 345 자르기 문이 전파되지 않고 있습니다.... 345 PostgreSQL에서 DDL이 캡처되지 않음... 345 DDL 캡처를 위해 데이터베이스 객체가 생성되는 스키마 선택... 345 PostgreSQL로 마이그레이션한 후 Oracle 테이블 누락... 345 원본으로 보기를 사용한 작업에서 복사된 행이 없음... 345 Microsoft SQL Server별 문제 해결... 346 AWS DMS 사용자 계정이 CDC를 사용하기 위한 특수 권한... 346 SQL Server 데이터베이스에서 변경 사항을 캡처하면서 발생하는 오류... 346 자격 증명 열 누락... 346 오류: SQL Server Does Not Support Publications... 346 변경 사항이 대상에 표시되지 않음... 347 Amazon Redshift별 문제 해결... 347 AWS DMS 복제 인스턴스와 다른 리전에서 Amazon Redshift 클러스터에 로드... 347 오류: Relation "awsdms_apply_exceptions" already exists... 347 awsdms_changes"로 시작하는 테이블 이름이 있는 오류... 347 dms.awsdms_changes000000000xxxx와 같은 이름과 함께 클러스터에 테이블 표시... 348 Amazon Redshift 사용에 필요한 권한... 348 Amazon Aurora MySQL 관련 문제 해결... 348 오류: CHARACTER SET UTF8 fields terminated by ',' enclosed by '"' lines terminated by '\n'... 348 모범 사례... 349 성능 개선... 349 복제 인스턴스 크기 조정... 350 원본 데이터베이스의 로드 감소... 352 작업 로그 사용... 352 스키마 변환... 352 대용량 이진 객체(LOB) 마이그레이션... 352 제한적 LOB 모드 사용... 353 지속적 복제... 353 Oracle 대상에서 사용자 및 스키마 변경... 353 Oracle 대상에 대한 테이블 및 인덱스 테이블스페이스 변경... 354 라지 테이블 마이그레이션 시 성능 향상... 355 참조... 356 AWS DMS 데이터 형식... 356 출시 정보... 358 AWS DMS 3.1.3 릴리스 정보... 358 AWS DMS 3.1.2 릴리스 정보... 359 AWS DMS 3.1.1 릴리스 정보... 360 AWS DMS 2.4.5 릴리스 정보... 361 AWS DMS 2.4.4 릴리스 정보... 362 AWS DMS 2.4.3 릴리스 정보... 363 AWS DMS 2.4.2 릴리스 정보... 364 AWS DMS 2.4.1 릴리스 정보... 365 AWS DMS 2.4.0 릴리스 정보... 366 AWS DMS 2.3.0 릴리스 정보... 368 문서 이력... 370 이전 업데이트... 370 AWS Glossary... 373 vi
AWS DMS에서 수행하는 마이그레이션 작업 AWS Database Migration Service란 무엇입니까? AWS Database Migration Service(AWS DMS)는 관계형 데이터베이스, 데이터 웨어하우스, NoSQL 데이터 베이스 및 그 밖의 데이터 스토어 유형을 쉽게 마이그레이션하도록 해주는 클라우드 서비스입니다. AWS DMS를 사용하여 AWS 클라우드로, 온프레미스 인스턴스 간에(AWS 클라우드 설정을 통해) 또는 클라우드 와 온프레미스가 결합된 설정 간에 데이터를 마이그레이션할 수 있습니다. AWS DMS를 사용하면 마이그레이션을 한 번 수행할 수 있으며 지속적인 변경 사항을 복제하여 소스와 대상을 동기화 상태로 유지할 수 있습니다. 데이터베이스 엔진을 변경하려면 AWS Schema Conversion Tool(AWS SCT)을 사용하여 데이터베이스 스키마를 새로운 플랫폼으로 변환하면 됩니다. 그런 다음 AWS DMS를 사용하여 데이터를 마이그레이션합니다. AWS DMS는 AWS 클라우드의 일부분이므로 AWS 서비스 혜택의 비용 효율성, 빠른 출시 기간, 보안 및 유연성을 제공합니다. AWS DMS를 지원하는 AWS 리전에 대한 자세한 내용은 AWS DMS 복제 인스턴스 작업 사용 (p. 58) 단원을 참조하십시오. 데이터베이스 마이그레이션 비용에 대한 자세한 내용은 AWS Database Migration Service 요금 페이지를 참조하십시오. AWS DMS에서 수행하는 마이그레이션 작업 AWS DMS는 마이그레이션 프로젝트에 수반되는 여러 가지 어렵거나 지루한 작업을 대신합니다. 기존 솔루션에서는 용량 분석을 직접 수행하고 하드웨어와 소프트웨어를 조달하며 시스템을 설치 및 관리 하고 설치를 테스트 및 디버깅해야 하지만 AWS DMS에서는 마이그레이션에 필요한 모든 하드웨어 및 소 프트웨어의 배포, 관리 및 모니터링을 자동으로 관리합니다. AWS DMS 구성 프로세스를 시작한 후 몇 분 이내에 마이그레이션을 시작하고 실행할 수 있습니다. AWS DMS를 사용하여 필요에 따라 실제 워크로드에 맞게 마이그레이션 리소스를 확장하거나 축소할 수 있습니다. 예를 들어, 추가 스토리지가 필요하다고 판단되면 할당된 스토리지를 손쉽게 늘리고 대개 몇 분 안에 마이그레이션을 다시 시작할 수 있습니다. 반면에 구성한 리소스 용량 중 일부만 사용하는 경우에는 실제 워크로드에 맞추어 손쉽게 축소할 수 있습니다. AWS DMS에는 종량 요금 모델이 사용됩니다. 구매 비용을 먼저 내고 유지 관리 비용을 지속적으로 납부 하는 기존 라이선스 모델과 반대로 AWS DMS 리소스를 사용하는 동안 그에 대한 요금만 지불합니다. AWS DMS는 하드웨어 및 소프트웨어, 소프트웨어 패치 및 오류 보고를 포함하여 마이그레이션 서버를 지 원하는 모든 인프라를 자동으로 관리합니다. AWS DMS는 자동 장애 조치를 제공합니다. 어떤 이유로든 기본 복제 서버가 실패해도 서비스가 거의 또 는 전혀 중단되지 않고 백업 복제 서버가 그 역할을 대신합니다. AWS DMS를 사용하여 지금 실행하고 있는 데이터베이스 엔진에 비해 현대적이고 비용 효율적인 데이터 베이스 엔진으로 전환할 수 있습니다. 예를 들어, AWS DMS를 통해 Amazon RDS 또는 Amazon Aurora에 서 제공하는 관리형 데이터베이스 서비스를 이용할 수 있습니다. 아니면 Amazon Redshift, NoSQL 플랫 폼(예: Amazon DynamoDB) 또는 저렴한 스토리지 플랫폼(예: Amazon Simple Storage Service(Amazon S3))이 제공하는 관리형 데이터 웨어하우스 서비스로 쉽게 옮겨갈 수도 있습니다. 이와 달리 이전의 인프 라에서 마이그레이션은 진행하지만 동일한 데이터베이스 엔진을 계속 사용하려는 경우에도 AWS DMS에 서 해당 프로세스를 지원합니다. AWS DMS는 Oracle, Microsoft SQL Server, MySQL, MariaDB, PostgreSQL, Db2 LUW, SAP, MongoDB 및 Amazon Aurora를 비롯하여 오늘날 가장 널리 사용되는 거의 모든 DBMS 엔진을 데이터 원본으로 지원 합니다. AWS DMS는 Oracle, Microsoft SQL Server, PostgreSQL, MySQL, Amazon Redshift, SAP ASE, Amazon S3 및 Amazon DynamoDB를 비롯하여 광범위한 대상 엔진을 시중에 제공합니다. 1
기본 수준에서 AWS DMS가 작동하는 방식 지원되는 모든 데이터 원본에서 지원되는 모든 데이터 대상으로 마이그레이션할 수 있습니다. AWS DMS 는 지원되는 엔진 간에 전혀 다른 유형의 데이터 마이그레이션을 지원합니다. AWS DMS는 데이터 마이그레이션의 보안을 보장합니다. AWS Key Management Service(AWS KMS) 암 호화를 통해 유휴 데이터가 암호화됩니다. 마이그레이션 중에 SSL(Secure Sockets Layer)을 사용하여 데 이터가 원본에서 대상으로 이동할 때 이동 중인 데이터를 암호화할 수 있습니다. 기본 수준에서 AWS DMS가 작동하는 방식 가장 기본적인 수준에서 AWS DMS는 복제 소프트웨어를 실행하는 AWS 클라우드의 서버입니다. 원본과 대 상 연결을 생성하여 어디에서 추출하고 어디에 로드할 것인지 AWS DMS에 알립니다. 그런 다음 데이터를 이동하기 위해 이 서버에서 실행되는 작업을 예약합니다. 테이블 및 연관된 기본 키가 대상에 없으면 AWS DMS에서 생성합니다. 원한다면 대상 테이블을 수동으로 미리 생성할 수 있습니다. 아니면 AWS SCT를 사 용하여 일부 또는 전체 대상 테이블, 인덱스, 보기, 트리거 등을 생성할 수 있습니다. 다음 다이어그램에서 AWS DMS 프로세스를 보여 줍니다. AWS DMS 프로세스를 처음부터 끝까지 실행하려면 1. 2. 3. 4. 마이그레이션 프로젝트를 시작하려면 원본 및 대상 데이터 스토어를 식별합니다. 앞서 언급한 데이터 엔 진 중 어디에나 데이터 스토어가 있을 수 있습니다. 원본과 대상 둘 다에 데이터베이스와의 연결 정보를 지정하는 엔드포인트를 AWS DMS 안에 구성합니 다. 엔드포인트가 적절한 ODBC 드라이버를 사용하여 원본 및 대상과 통신합니다. 복제 인스턴스를 프로비저닝합니다. 이 인스턴스는 AWS DMS가 복제 소프트웨어를 통해 자동으로 구 성하는 서버입니다. 마이그레이션할 실제 데이터 테이블과 적용할 데이터 변환 규칙을 지정하는 복제 작업을 생성합니다. AWS DMS는 복제 작업 실행을 관리하고 마이그레이션 프로세스에서 상태를 제공합니다. 자세한 내용은 다음을 참조하십시오. AWS DMS를 처음 사용하지만 다른 AWS 서비스에 익숙한 경우 AWS Database Migration Service 작동 방식 (p. 4)에서 시작합니다. 이 단원에서는 AWS DMS의 핵심 구성 요소와 마이그레이션을 설정하고 실행하는 전반적인 프로세스를 설명합니다. 데이터베이스 엔진을 전환하려는 경우 AWS Schema Conversion Tool이 테이블, 인덱스 및 대부분의 애플 리케이션 코드를 비롯한 기존의 데이터베이스 스키마를 대상 플랫폼으로 변환할 수 있습니다. 마이그레이션 전략 설계에 필요한 관련 AWS 제품에 대한 자세한 내용은 AWS 클라우드 제품을 참조하십 시오. Amazon Web Services는 수많은 데이터베이스 서비스를 제공합니다. 환경에 가장 적합한 서비스에 대한 지침은 AWS에서 데이터베이스 실행을 참조하십시오. 2
기본 수준에서 AWS DMS가 작동하는 방식 모든 AWS 제품의 개요는 클라우드 컴퓨팅이란?을 참조하십시오. 3
AWS DMS의 상위 수준 보기 AWS Database Migration Service 작 동 방식 AWS Database Migration Service(AWS DMS)는 소스 데이터 스토어에서 대상 데이터 스토어로 마이그레이 션하는 데 사용할 수 있는 웹 서비스입니다. 이러한 두 데이터 스토어는 엔드포인트라고 합니다. Oracle 데이 터베이스에서 Oracle 데이터베이스로와 같이 동일한 데이터베이스 엔진을 사용하는 원본 및 대상 엔드포인 트를 마이그레이션할 수 있습니다. Oracle 데이터베이스에서 PostgreSQL 데이터베이스로와 같이 다른 데이 터베이스 엔진을 사용하는 원본 및 대상 엔드포인트를 마이그레이션할 수 있습니다. AWS DMS 사용 시 요 구되는 한 가지는 AWS 서비스에 자체 엔드포인트 중 하나가 존재해야 한다는 것입니다. AWS DMS를 사용 하여 온프레미스 데이터베이스에서 다른 온프레미스 데이터베이스로 마이그레이션할 수 없습니다. 데이터베이스 마이그레이션 비용에 대한 자세한 내용은 AWS Database Migration Service 요금 페이지를 참 조하십시오. AWS DMS에 대해 더 잘 이해하려면 다음 주제를 참조하십시오. 주제 AWS DMS의 상위 수준 보기 (p. 4) AWS Database Migration Service의 구성 요소 (p. 5) AWS Database Migration Service 소스 (p. 10) AWS Database Migration Service 대상 (p. 11) 다른 AWS 서비스와 함께 AWS DMS 사용 (p. 12) AWS DMS의 상위 수준 보기 데이터베이스 마이그레이션을 수행하기 위해 AWS DMS에서는 소스 데이터 스토어에 연결하고, 소스 데이 터를 읽고, 대상 데이터 스토어에서 사용할 수 있도록 데이터 형식을 지정합니다. 그런 다음 데이터를 대상 데이터 스토어에 로드합니다. 이러한 처리 대다수는 메모리에서 나타나지만, 큰 트랜잭션에는 디스크로의 일 부 버퍼링이 필요할 수 있습니다. 캐시된 트랜잭션과 로그 파일도 디스크에 기록됩니다. 상위 수준에서 AWS DMS를 사용할 때에는 다음 작업을 수행합니다. 복제 서버를 생성합니다. 데이터 스토어에 대한 연결 정보가 있는 소스 및 대상 엔드포인트를 생성합니다. 하나 이상의 마이그레이션 작업을 생성하여 원본과 대상 데이터 스토어 간 데이터를 마이그레이션합니다. 작업은 세 가지 주요 단계로 구성되어 있습니다. 기존 데이터의 전체 로드 캐시된 변경 사항 적용 지속적 복제 소스의 기존 데이터가 대상으로 이전되는 전체 로드 마이그레이션 도중 AWS DMS는 소스 데이터 스토어에 있는 테이블의 데이터를 대상 데이터 스토어에 있는 테이블로 로드합니다. 전체 로드가 진행되는 동안 로드 4
구성 요소 중인 테이블에 적용된 변경 사항은 복제 서버에서 캐시되고, 이것은 캐시된 변경 사항입니다. 이 테이블의 전 체 로드가 시작될 때까지 AWS DMS에서 지정된 테이블에 대한 변경 내용을 캡처하지 않는다는 점을 잘 알 고 있어야 합니다. 즉, 변경 캡처가 시작되는 시점은 각 테이블별로 다릅니다. 지정된 테이블의 전체 로드가 완료되면, AWS DMS는 즉시 이 테이블의 캐시된 변경 사항을 적용하기 시작 합니다. 모든 테이블이 로드되면, AWS DMS는 진행 중인 복제 단계의 트랜잭션으로서 변경 사항을 수집하 기 시작합니다. AWS DMS가 모든 캐시된 변경 사항을 적용한 후 테이블은 트랜잭션에서 일관성이 있습니 다. 이 시점에서 AWS DMS는 지속적 복제 단계로 이동하고 트랜잭션으로서 변경 사항을 적용합니다. 지속적 복제 단계가 시작되면, 트랜잭션의 백로그는 일반적으로 원본과 대상 데이터베이스 사이에서 일부 지 연 시간을 유발합니다. 결국 마이그레이션은 이 트랜잭션 백로그를 통해 진행된 후 일정한 상태에 도달합니 다. 이 시점에서 애플리케이션을 종료하고, 남은 트랙잭션을 대상에 적용하도록 허용하고, 애플리케이션을 불러오면 이제 대상 데이터베이스를 가리킵니다. AWS DMS는 마이그레이션을 수행하는 데 필요한 대상 스키마 객체를 생성합니다. 그러나 AWS DMS는 가 장 소극적인 접근 방식을 취하여 데이터를 효율적으로 마이그레이션하는 데 필요한 바로 그 객체만을 생성합 니다. 즉, AWS DMS는 테이블과 기본 키를 생성하고 경우에 따라 고유 인덱스도 생성하지만, 소스의 데이터 를 효율적으로 마이그레이션하는 데 필요하지 않은 다른 객체를 생성하지 않습니다. 예를 들어 보조 인덱스, 기본이 아닌 키 제약 조건 또는 데이터 기본값을 생성하지 않습니다. 대부분의 경우 마이그레이션을 수행할 때는 대부분 또는 전체 원본 스키마도 마이그레이션합니다. 같은 유형 의 마이그레이션(동일한 엔진 유형의 데이터베이스 2개 사이)을 수행하는 경우, 엔진의 기본 도구를 사용하 여 데이터 없이 스키마 자체를 내보내고 가져와 스키마를 마이그레이션합니다. 마이그레이션이 다른 유형인 경우(다른 엔진 유형을 사용하는 데이터베이스 2개), AWS Schema Conversion Tool(AWS SCT)을 사용하여 전체 대상 스키마를 자동으로 생성할 수 있습니다. 도구를 사용하는 경우, 외래 키 제약과 같은 테이블 간 종속성은 마이그레이션의 "전체 로드"와 "캐시된 변경 적용" 단계 중에 비활성화되 어야 합니다. 성능이 문제인 경우, 마이그레이션 프로세스 중에 보조 인덱스를 제거 또는 비활성화하면 도움 이 됩니다. AWS SCT에 대한 자세한 내용은 AWS SCT 설명서의 AWS Schema Conversion Tool을 참조하 십시오. AWS Database Migration Service의 구성 요소 이 단원에서는 AWS DMS의 내부 구성 요소와 이들 구성 요소가 어떻게 함께 작동하여 데이터 마이그레이션 을 완수하는지 설명합니다. AWS DMS의 기본 구성 요소를 이해하면 데이터를 더 효율적으로 마이그레이션 할 수 있고 문제를 해결하거나 원인을 파악할 때 문제를 더 심도 있게 파악할 수 있습니다. AWS DMS 마이그레이션은 세 가지 구성 요소, 즉 복제 인스턴스, 원본 및 대상 엔드포인트, 복제 작업으로 이루어집니다. 사용자는 AWS 리전에 필요한 복제 인스턴스, 엔드포인트, 작업을 생성하여 AWS DMS 마이 그레이션을 생성합니다. 복제 인스턴스 상위 수준에서 AWS DMS 복제 인스턴스는 복제 작업을 한 개 이상 호스팅하는 관리형 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스일 뿐입니다. 다음 그림은 몇 가지 연결된 복제 작업을 실행하는 복제 인스턴스의 예시입니다. 5
구성 요소 복제 인스턴스 하나는 마이그레이션의 성격과 복제 서버의 용량에 따라 복제 작업을 한 개 이상 호스팅 할 수 있습니다. AWS DMS에서는 다양한 복제 인스턴스를 제공하므로 사용자는 사용 사례에 가장 적합 한 구성을 선택할 수 있습니다. 복제 인스턴스의 다양한 클래스에 대한 자세한 내용은 마이그레이션에 적합한 AWS DMS 복제 인스턴스 선택 (p. 59) 단원을 참조하십시오. AWS DMS는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 복제 인스턴스를 생성합니다. 소형 인스턴스 클래스 중에는 서비스를 테스트하거나 소규모 마이그레이션을 하기에 충분한 것이 있습 니다. 마이그레이션에 대량의 테이블이 포함되어 있는 경우 또는 여러 동시 복제 작업을 실행해야 하는 경우, 대형 인스턴스 중 하나를 사용하는 것이 좋습니다. AWS DMS는 상당량의 메모리와 CPU를 소모 할 수 있으므로 이 접근 방식을 권장합니다. 6
구성 요소 사용자가 선택하는 Amazon EC2 인스턴스 클래스에 따라 복제 인스턴스에는 50GB 또는 100GB의 데이 터 스토리지가 포함되어 있습니다. 대개 이 정도 크기면 대부분 고객에게 충분합니다. 그러나 마이그레 이션에 대규모 트랜잭션 또는 대량 데이터 변경 사항이 포함되어 있다면 기본 스토리지 할당을 늘리고 싶을 것입니다. 변경 데이터 캡처(CDC)로 인해 데이터가 디스크에 쓰일 수 있는데, 이는 대상이 변경 사 항을 쓰는 속도에 달려 있습니다. AWS DMS는 다중 AZ 배포를 사용해 고가용성과 장애 조치 기능을 지원합니다. 다중 AZ 배포에서 AWS DMS는 자동으로 서로 다른 가용 영역에 복제 인스턴스의 예비 복제본을 프로비저닝하고 유지합니다. 기본 복제 인스턴스는 대기 복제본에 동기식으로 복제됩니다. 기본 복제 인스턴스에 장애가 발생하거나 무응답 상태가 되면 대기 복제본은 중단을 최소화하면서 실행 중이던 작업을 다시 시작합니다. 기본 복 제본은 자신의 상태를 끊임없이 대기 복제본으로 복제하기 때문에 다중 AZ 배포는 약간의 성능 오버헤 드를 발생시킵니다. AWS DMS 복제 인스턴스에 대한 자세한 내용은 AWS DMS 복제 인스턴스 작업 사용 (p. 58) 단원을 참조하십시오. 엔드포인트 AWS DMS는 엔드포인트를 사용하여 소스 또는 대상 데이터 스토어에 액세스합니다. 구체적인 연결 정 보는 데이터 스토어에 따라 다르지만, 일반적으로 사용자는 엔드포인트 생성 시 다음과 같은 정보를 제 공합니다. 엔드포인트 유형 소스 또는 대상. 엔진 유형 Oracle, PostgreSQL, Amazon S3와 같은 데이터베이스 엔진의 유형입니다. 서버 이름 AWS DMS에서 연결할 수 있는 서버 이름 또는 IP 주소. 포트 데이터베이스 서버 연결에 사용되는 포트 번호. 암호화 SSL 모드(연결 암호화에 사용되는 경우). 자격 증명 필수 액세스 권한이 있는 계정의 사용자 이름 및 암호. AWS DMS 콘솔을 사용해 엔드포인트를 생성할 때 콘솔에서는 사용자에게 엔드포인트 연결을 테스트할 것을 요구합니다. 이 테스트의 결과가 성공적이어야 DMS 작업에서 엔드포인트를 사용할 수 있습니다. 연결 정보와 마찬가지로 구체적인 테스트 기준은 엔진 유형에 따라 다릅니다. 일반적으로 AWS DMS에 서는 주어진 서버 이름 및 포트에 데이터베이스가 있는지, 제공된 자격 증명을 마이그레이션을 수행하는 데 필요한 권한이 있는 데이터베이스에 연결하는 데 사용할 수 있는지 확인합니다. 연결 테스트 결과가 성공적이면 AWS DMS에서는 나중에 작업 구성 중에 사용할 수 있는 테이블 정의, 기본/고유 키 정의 등 스키마 정보를 다운로드하여 저장합니다. 2개 이상의 복제 작업에서 엔드포인트 하나를 사용할 수 있습니다. 예를 들어 동일한 원본 데이터베이스 에서 호스팅되는 논리적으로 구분된 애플리케이션이 두 개 있는데, 사용자가 이를 서로 구분하여 마이그 레이션하고자 하는 경우가 있을 수 있습니다. 애플리케이션 테이블 각 세트에 대해 하나씩, 도합 두 개의 복제 작업을 생성할 수 있지만, 두 작업 모두에 동일한 AWS DMS 엔드포인트를 사용할 수 있습니다. 사용자는 추가 연결 속성을 사용하여 엔드포인트의 동작을 사용자 지정할 수 있습니다. 이 속성을 통해 로깅에 관한 세부 정보, 파일 크기, 기타 파라미터 등 다양한 동작을 제어할 수 있습니다. 각 데이터 스 토어 엔진 유형에는 사용 가능한 여러 가지 추가 연결 속성이 있습니다. 데이터 스토어의 원본 혹은 대 상 섹션에서 이 데이터 스토어 각각의 특정 추가 연결 속성을 찾을 수 있습니다. 지원되는 원본 및 대상 데이터 스토어 목록은 AWS Database Migration Service 소스 (p. 10) 및 AWS Database Migration Service 대상 (p. 11) 섹션을 참조하십시오. AWS DMS 엔드포인트에 대한 자세한 내용은 AWS DMS 엔드포인트 작업 (p. 83) 단원을 참조하십시 오. 복제 작업 AWS DMS 복제 작업을 사용하여 소스 엔드포인트에서 대상 엔드포인트로 데이터 세트를 이동합니다. 복제 작업 생성은 마이그레이션을 시작하기 전에 수행해야 할 최종 단계입니다. 복제 작업을 생성할 때 다음 작업 설정을 지정합니다. 7
구성 요소 복제 인스턴스 작업을 호스팅하고 실행할 인스턴스 소스 엔드포인트 대상 엔드포인트 마이그레이션 유형 옵션은 다음과 같습니다. 마이그레이션 유형 옵션에 대한 자세한 설명은 작업 생 성 (p. 230)을 참조하십시오. 전체 로드(기존 데이터 마이그레이션) 기존 데이터를 복사할 수 있을 정도로 긴 중단을 감당할 수 있는 경우 이 옵션이 적합합니다. 이 옵션은 간단히 원돈 데이터베이스에서 대상 데이터 베이스로 데이터를 마이그레이션하여 필요할 경우 테이블을 생성합니다. 전체 로드 및 CDC(기존 데이터를 마이그레이션하고 지속적 변경 사항 복제) 이 옵션을 선택하면 소스에서 변경 사항을 캡처하는 동안 전체 데이터 로드를 수행합니다. 전체 로드가 완료되고 나면, 캡처된 변경 사항을 대상에 적용합니다. 결과적으로 변경 사항 적용은 안정적인 상태에 도달합니다. 이 시점에서 애플리케이션을 종료할 수 있고, 남은 변경 사항이 대상으로 흐르도록 한 후 대상을 나 타내는 애플리케이션을 다시 시작할 수 있습니다. CDC 전용(데이터 변경 사항만 복제) 경우에 따라서는 AWS DMS 이외의 방법을 사용하여 기존 데이터를 복사하는 것이 더 효율적일 수 있습니다. 예를 들어 같은 유형의 마이그레이션에서 기본 내보내기/가져오기 도구를 사용하면 대량 데이터를 로그하기에 더 효과적일 수 있습니다. 이 상황에 서 AWS DMS를 사용하여 대량 로드를 시작하여 소스와 대상 데이터베이스를 가져와 동기화를 유 지할 때 시작하는 변경 사항을 복제할 수 있습니다. 대상 테이블 준비 모드 옵션은 다음과 같습니다. 대상 테이블 모드에 관한 완전한 설명을 보려면 작업 생성 (p. 230) 단원을 참조하십시오. 아무 작업 안 함 AWS DMS는 대상에 대상 테이블이 미리 생성되었다고 가정합니다. 대상에서 테이블 삭제 AWS DMS는 대상 테이블을 삭제하고 재생성합니다. 자르기 대상에 테이블을 생성했다면 AWS DMS는 마이그레이션을 시작하기 전에 이 테이블을 자 릅니다. 테이블이 존재하지 않고 이 옵션을 선택할 수 있다면 AWS DMS는 없어진 테이블을 생성합 니다. LOB 모드 옵션은 다음과 같습니다. LOB 모드에 관한 완전한 설명을 보려면 AWS DMS 작업의 원본 데이터베이스에 대한 LOB 지원 설정 (p. 251) 단원을 참조하십시오. LOB 열 포함 안 함 LOB 열은 마이그레이션에서 제외됩니다. 전체 LOB 모드 크기와 상관없이 전체 LOB를 마이그레이션합니다. AWS DMS는 Max LOB size(최대 LOB 크기) 파라미터에 의해 제어되는 청크 단위로 LOB 하나씩 마이그레이션합니다. 이 모드는 제한적 LOB 모드를 사용하는 것보다 더 느립니다. 제한적 LOB 모드 LOB를 최대 LOB 크기 파라미터 값으로 지정합니다. 이 모드는 전체 LOB 모드 를 사용하는 것보다 더 빠릅니다. 테이블 매핑 마이그레이션할 테이블과 마이그레이션 방법을 나타냅니다. 자세한 내용은 작업 설정 을 지정하기 위한 테이블 매핑 사용 (p. 257) 단원을 참조하십시오. 데이터 변환은 다음과 같습니다. 데이터 변환에 대한 자세한 내용은 JSON을 사용하여 테이블 매핑을 통해 테이블 선택 및 변환 지정 (p. 262) 단원을 참조하십시오. 스키마, 테이블 및 열 이름 변경. 테이블스페이스 이름 변경(Oracle 대상 엔드포인트의 경우). 대상에서 기본 키와 고유한 인덱스 정의. 데이터 유효성 검사 Amazon CloudWatch 로깅 해당 작업을 사용하여 소스 엔드포인트에서 대상 엔드포인트로 데이터를 마이그레이션하고 나면 복제 인스턴스에서 작업 처리가 완료됩니다. 마이그레이션할 테이블 및 스키마와 모든 특수 처리(로깅 요구 사항, 제어 테이블 데이터 및 오류 처리 등)를 지정합니다. 개념적으로 AWS DMS 복제 작업에서는 다음 다이어그램과 같이 두 가지 구분된 기능을 수행합니다. 8
구성 요소 전체 로드 프로세스는 이해하기 쉽습니다. 데이터는 대량 추출 방식으로 소스에서 추출되어 대상으로 직 접 로드됩니다. AWS DMS 콘솔의 고급 설정에서 병렬로 추출 및 로드할 테이블 개수를 지정할 수 있습 니다. AWS DMS 작업에 대한 자세한 내용은 AWS DMS 작업 사용 (p. 227)를 참조하십시오. 지속적인 복제 또는 변경 데이터 캡처(CDC) AWS DMS 작업을 사용하여 대상에 데이터를 마이그레이션하는 동안 소스 데이터 스토어에 대해 지속 적으로 변경 사항을 캡처할 수도 있습니다. 소스 엔드포인트에서 지속적 변경 사항을 복제할 때 AWS DMS가 사용하는 변경 캡처 프로세스는 데이터베이스 엔진의 기본 API를 사용하여 데이터베이스 로그 에 대한 변경 사항을 수집합니다. 9
소스 CDC 프로세스에서 복제 작업은 인 메모리 버퍼를 사용해 전송 중인 데이터를 유지하는 방식으로 원본 에서 대상으로 변경 사항을 스트림하도록 설계되어 있습니다. 어떤 이유로든 인 메모리 버퍼가 남지 않 게 되면 복제 작업은 보류 중인 변경 사항을 디스크의 변경 사항 캐시로 유출합니다. 이러한 현상은 변경 사항이 대상에 적용되는 것보다 빠르게 AWS DMS가 소스에서 변경 사항을 캡처하는 경우에 발생할 수 있습니다. 이 경우 사용자는 작업의 대상 지연 시간이 작업의 원본 지연 시간을 초과하는지 확인해야 합 니다. AWS DMS 콘솔에서 해당 작업으로 이동한 후 작업 모니터링 탭을 열어 이를 확인할 수 있습니다. CDCLatencyTarget 및 CDCLatencySource 그래프는 페이지 하단에 표시됩니다. 대상 지연 시간을 표시 하는 작업이 있다면 애플리케이션 속도를 높이는 데 필요한 대상 엔드포인트 튜닝이 있을 가능성이 있습 니다. 복제 작업에서도 위에 설명한 작업 로그용 스토리지를 사용합니다. 복제 인스턴스로 사전 구성되어 제공 되는 디스크 공간은 대개 로깅 및 유출된 변경 사항에 충분한 크기입니다. 추가 디스크 공간이 필요하다 면(예: 마이그레이션 문제를 조사하기 위해 세부 디버깅을 사용하는 경우) 복제 인스턴스를 수정하여 더 많은 공간을 할당할 수 있습니다. 스키마 및 코드 마이그레이션 AWS DMS에서는 스키마 또는 코드 변환을 수행하지 않습니다. 원본과 대상이 동일한 데이터베이스 엔 진인 경우 Oracle SQL Developer, MySQL Workbench, pgadmin III와 같은 도구를 사용하여 스키마를 이동 수 있습니다. 기존 스키마를 다른 데이터베이스 엔진으로 변환할 경우, AWS SCT을 사용할 수 있 습니다. 대상 스키마를 생성하고 전체 스키마(테이블, 인덱스, 보기 등)을 생성할 수도 있습니다. 또한 AWS SCT를 PL/SQL 또는 TSQL을 PgSQL 또는 다른 형식으로 변환하는 도구를 사용할 수도 있습니다. AWS SCT에 대한 자세한 내용은 AWS Schema Conversion Tool 단원을 참조하십시오. 가능할 때마다 AWS DMS는 자동으로 대상 스키마 생성을 시도합니다. 때때로 AWS DMS는 스키마를 생성할 수 없습니다. 예를 들어, AWS DMS는 보안상의 이유로 대상 Oracle 스키마를 생성하지 못합니 다. MySQL 데이터베이스 대상의 경우, 추가 연결 속성을 사용하여 AWS DMS가 모든 객체를 지정된 데 이터베이스와 스키마로 마이그레이션되도록 하거나 소스에서 스키마를 찾을 때 자동으로 각 데이터베 이스와 스키마를 생성할 수 있습니다. AWS Database Migration Service 소스 AWS Database Migration Service를 사용하여 다음 데이터 스토어를 데이터 마이그레이션용 소스 엔드포인 트로 사용할 수 있습니다. 온프레미스 및 EC2 인스턴스 데이터베이스 Enterprise, Standard, Standard One 및 Standard Two 버전용 Oracle 버전 10.2 이상, 11g 및 12.2 이하 Enterprise, Standard, Workgroup, 및 Developer 버전용 Microsoft SQL Server 버전 2005, 2008, 2008R2, 2012, 2014 및 2016. Web 및 Express 버전은 지원되지 않습니다. MySQL 버전 5.5, 5.6 및 5.7. MariaDB(MySQL 호환 데이터 원본으로 지원됨). PostgreSQL 버전 9.4 이상. MongoDB 버전 2.6.x 및 3.x 이상. SAP Adaptive Server Enterprise(ASE) 버전 12.5, 15, 15.5, 15.7, 16 이상. Db2 LUW 버전: 버전 9.7, 모든 수정 팩이 지원됩니다. 버전 10.1, 모든 수정 팩이 지원됩니다. 버전 10.5, 수정 팩 5를 제외한 모든 수정 팩이 지원됩니다. Microsoft Azure Azure SQL 데이터베이스. 10
대상 Amazon RDS 인스턴스 데이터베이스 및 Amazon Simple Storage Service Enterprise, Standard, Standard One 및 Standard Two 버전용 Oracle 버전 11g(버전 11.2.0.3.v1 이상) 및 12c. Enterprise, Standard, Workgroup 및 Developer 버전용 Microsoft SQL Server 버전 2008R2, 2012, 2014 및 2016. Web 및 Express 버전은 지원되지 않습니다. MySQL 버전 5.5, 5.6 및 5.7. MariaDB(MySQL 호환 데이터 원본으로 지원됨). PostgreSQL 9.4 이상. 버전 9.4.9 이상과 9.5.4 이상에서는 변경 데이터 캡처(CDC)만이 지원됩니다. CDC 에서 필요한 rds.logical_replication 파라미터는 이 버전 이상에서만 지원됩니다. Amazon Aurora(MySQL 호환 데이터 원본으로 지원됨). Amazon Simple Storage Service. AWS Database Migration Service 대상 AWS Database Migration Service를 사용하여 다음 데이터 스토어를 데이터 마이그레이션용 대상 엔드포인 트로 사용할 수 있습니다. 온프레미스 및 Amazon EC2 인스턴스 데이터베이스 Enterprise, Standard, Standard One 및 Standard Two 버전용 Oracle 버전 10g, 11g, 12c Enterprise, Standard, Workgroup, 및 Developer 버전용 Microsoft SQL Server 버전 2005, 2008, 2008R2, 2012, 2014 및 2016. Web 및 Express 버전은 지원되지 않습니다. MySQL 버전 5.5, 5.6 및 5.7 MariaDB(MySQL 호환 데이터 대상으로 지원됨) PostgreSQL 버전 9.4 이상 SAP Adaptive Server Enterprise(ASE) 버전 15, 15.5, 15.7, 16 이상 Amazon RDS 인스턴스 데이터베이스, Amazon Redshift, Amazon DynamoDB, Amazon S3, Amazon Elasticsearch Service Amazon Kinesis Data Streams 및 Amazon DocumentDB Enterprise, Standard, Standard One 및 Standard Two 버전용 Oracle 버전 11g(버전 11.2.0.3.v1 이상) 및 12c Enterprise, Standard, Workgroup, 및 Developer 버전용 Microsoft SQL Server 버전 2008R2, 2012, 2014. Web 및 Express 버전은 지원되지 않습니다. MySQL 버전 5.5, 5.6 및 5.7 MariaDB(MySQL 호환 데이터 대상으로 지원됨) PostgreSQL 버전 9.4 이상 MySQL과 호환되는 Amazon Aurora Amazon Aurora의 PostgreSQL 호환성 Amazon Redshift Amazon S3 Amazon DynamoDB Amazon Elasticsearch Service Amazon Kinesis Data Streams Amazon DocumentDB(MongoDB와 호환) 11
다른 AWS 서비스 다른 AWS 서비스와 함께 AWS DMS 사용 몇몇 다른 AWS 서비스와 함께 AWS DMS를 사용할 수 있습니다. Amazon EC2 인스턴스나 Amazon RDS DB 인스턴스를 데이터 마이그레이션 대상으로 사용할 수 있습니 다. AWS Schema Conversion Tool(AWS SCT)를 사용하여 소스 스키마와 SQL 코드를 동등한 대상 스키마와 SQL 코드로 변환할 수 있습니다. Amazon S3를 데이터 스토리지 장소로 사용하거나, 많은 데이터를 마이그레이션할 때 중간 단계로 사용할 수 있습니다. AWS CloudFormation을 사용하여 인프라 관리나 배포용 AWS 리소스를 설정할 수 있습니다. 예를 들면 복 제 인스턴스, 작업, 인증서 및 엔드포인트 같은 AWS DMS 리소스를 프로비저닝할 수 있습니다. 필요한 모 든 AWS 리소스를 설명하는 템플릿을 생성하면 AWS CloudFormation에서 이러한 리소스를 프로비저닝하 고 구성합니다. AWS CloudFormation에 대한 AWS DMS 지원 AWS CloudFormation 사용을 통해 AWS Database Migration Service 리소스를 프로비저닝할 수 있습니다. AWS CloudFormation은 인프라 관리 또는 배포에 대해 AWS 리소스를 모델링하고 설정할 수 있도록 도와주 는 서비스입니다. 예를 들면 복제 인스턴스, 작업, 인증서 및 엔드포인트 같은 AWS DMS 리소스를 프로비저 닝할 수 있습니다. 필요한 모든 AWS 리소스를 설명하는 템플릿을 생성하면 AWS CloudFormation에서 이러 한 리소스를 프로비저닝하고 구성합니다. 개발자나 시스템 관리자는 반복적인 마이그레이션 작업이나 조직에 리소스 배포 작업에 사용할 수 있는 이러한 리소스의 모음을 생성 및 관리할 수 있습니다. AWS CloudFormation에 대한 자세한 내용은 AWS CloudFormation 사용 설명서의 AWS CloudFormation 개념 단원을 참조하십시오. AWS DMS에서는 AWS CloudFormation을 사용하여 다음과 같은 AWS DMS 리소스를 생성하는 작업을 지 원합니다. AWS::DMS::Certificate AWS::DMS::Endpoint AWS::DMS::EventSubscription AWS::DMS::ReplicationInstance AWS::DMS::ReplicationSubnetGroup AWS::DMS::ReplicationTask AWS DMS용 Amazon 리소스 이름(ARN) 생성 AWS CLI 또는 AWS Database Migration Service API를 사용하여 데이터베이스 마이그레이션을 자동화할 경우, Amazon 리소스 이름(ARN)을 제공하는 방법에 대해 잘 알고 있어야 합니다. Amazon Web Services에 서 생성되는 리소스는 ARN이라는 고유 식별자로 식별됩니다. AWS CLI 또는 AWS DMS API를 사용하여 데 이터베이스 마이그레이션을 설정하는 경우, 사용할 리소스의 ARN을 제공해야 합니다. AWS DMS 리소스의 ARN에는 다음과 같은 구문이 사용됩니다. arn:aws:dms:<region>:<account number>:<resourcetype>:<resourcename> 이 구문에서: <region>은 AWS DMS 리소스가 생성된 AWS 리전의 ID입니다(예: us-west-2). 다음 표에는 ARN 생성 시 사용해야 하는 AWS 리전 이름과 값이 나와 있습니다. 12
ARN 생성 리전 이름 아시아 태평양(도쿄) 리전 ap-northeast-1 아시아 태평양(서울) 리전 ap-northeast-2 아시아 태평양(뭄바이) 리전 ap-south-1 아시아 태평양(싱가포르) 리전 ap-southeast-1 아시아 태평양(시드니) 리전 ap-southeast-2 캐나다(중부) 리전 ca-central-1 EU(프랑크푸르트) 리전 eu-central-1 EU(아일랜드) 지역 eu-west-1 EU(런던) 리전 eu-west-2 남아메리카(상파울루) 리전 sa-east-1 미국 동부(버지니아 북부) 지역 us-east-1 미국 동부(오하이오) 리전 us-east-2 미국 서부(캘리포니아 북부) 리전 us-west-1 미국 서부(오레곤) 지역 us-west-2 <account number>는 대시가 생략된 계정 번호입니다. 계정 번호를 찾으려면 http://aws.amazon.com에 서 AWS 계정으로 로그인하고 내 계정/콘솔, 내 계정을 차례로 선택합니다. <resourcetype>은 AWS DMS 리소스의 유형입니다. 다음 표에는 특정 AWS DMS 리소스에 대한 ARN 생성 시 사용해야 하는 리소스 유형이 나와 있습니다. AWS DMS 리소스 유형 ARN 형식 복제 인스턴스 arn:aws:dms:<region>: <account>:rep: <resourcename> Endpoint arn:aws:dms:<region>:<account>:endpoint: <resourcename> 복제 작업 arn:aws:dms:<region>:<account>:task:<resourcename> Subnet Group arn:aws:dms:<region>:<account>:subgrp:<resourcename> <resourcename> 은 AWS DMS 리소스에 할당되는 리소스 이름입니다. 이것은 생성된 임의 문자입니다. 다음 표에서는 123456789012의 AWS 계정으로 AWS DMS 리소스에 대한 ARN 예를 보여 줍니다. 이것은 미국 동부(버지니아 북부) 리전에서 생성되고 다음과 같은 리소스를 갖습니다. 리소스 유형 샘플 ARN 복제 인스턴스 arn:aws:dms:useast-1:123456789012:rep:qlxqz64mh7cxf4qcqmgrvyvxai Endpoint arn:aws:dms:useast-1:123456789012:endpoint:d3hmz2igucgff3ntaxuxgf6s5a 13
ARN 생성 리소스 유형 샘플 ARN 복제 작업 arn:aws:dms:useast-1:123456789012:task:2pvremwnpgyjcvu2ibptoytiv4 Subnet Group arn:aws:dms:us-east-1:123456789012:subgrp:test-tag-grp 14
AWS에 가입 AWS Database Migration Service 설 정 AWS Database Migration Service(AWS DMS)를 처음 사용하는 경우, 먼저 다음 작업을 완료해야 합니다. 1. AWS에 가입 (p. 15) 2. IAM 사용자 생성 (p. 15) 3. AWS Database Migration Service 마이그레이션 계획 (p. 17) AWS에 가입 Amazon Web Services(AWS)에 가입하면 AWS DMS를 포함해 AWS의 모든 서비스에 AWS 계정이 자동으 로 등록됩니다. 사용한 서비스에 대해서만 청구됩니다. AWS DMS에서는 사용한 리소스에 대해서만 비용을 지불합니다. 생성한 AWS DMS 복제 인스턴스는 실시 간으로 활성화됩니다(샌드박스에서 실행되지 않음). 종료하기 전까지 해당 인스턴스에 대해 표준 Amazon AWS DMS 사용 요금이 발생합니다. AWS DMS 사용 요금에 대한 자세한 내용은 AWS DMS 제품 페이지를 참조하십시오. AWS를 처음 사용하는 고객인 경우에는 AWS DMS를 무료로 사용해볼 수 있습니다. 자세한 내용은 AWS 프리 티어 단원을 참조하십시오. AWS 계정을 닫으면 2일 후에 계정과 연결된 모든 AWS DMS 리소스 및 구성이 삭제됩니다. 이 리소스에는 모든 복제 인스턴스, 원본 및 대상 엔드포인트 구성, 복제 작업, SSL 인증서가 포함됩니다. 2일이 지난 후에 AWS DMS를 다시 사용하기로 한 경우 필요한 리소스를 다시 생성해야 합니다. 이미 AWS 계정이 있다면 다음 작업으로 건너뛰십시오. AWS 계정이 없는 경우 다음 절차에 따라 하나 만드십시오. AWS에 가입하려면 1. https://aws.amazon.com/을 열고 [Create an AWS Account]를 선택합니다. 2. 온라인 지시 사항을 따릅니다. 다음 작업에 필요하므로 AWS 계정 번호를 기록합니다. IAM 사용자 생성 AWS DMS 같은 AWS 서비스는 액세스하려면 자격 증명을 입력해야 합니다. 리소스에 대한 액세스 권한 여 부를 파악해야 하기 때문입니다. 콘솔은 암호를 요구합니다. AWS 계정에 대한 액세스 키를 생성하면 명령줄 인터페이스 또는 API에 액세스할 수 있습니다. 그러나 AWS 계정에 자격 증명을 사용하여 AWS에 액세스하 지 말고, AWS Identity and Access Management(IAM)를 사용하는 것이 좋습니다. IAM 사용자를 생성하여 관 리자 권한과 함께 IAM 그룹에 추가하거나, 이 사용자에게 관리자 권한을 부여하십시오. 그러면 IAM 사용자 의 특정 URL이나 자격 증명을 사용하여 AWS에 액세스할 수 있습니다. AWS에 가입했지만 IAM 사용자를 생성하지 않았다면 IAM 콘솔에서 생성할 수 있습니다. 15
IAM 사용자 생성 관리자 사용자를 직접 생성하여 관리자 그룹에 추가하려면(콘솔) 1. https://console.aws.amazon.com/iam/에서 AWS 계정 루트 사용자 이메일 주소 및 암호를 사용하여 IAM 콘솔에 AWS 계정 루트 사용자 로그인합니다. Note Administrator IAM 사용자를 사용하는 아래 모범 사례를 준수하고, 루트 사용자 자격 증명 을 안전하게 보관해 두는 것이 좋습니다. 몇 가지 계정 및 서비스 관리 작업을 수행하려면 반드 시 루트 사용자로 로그인해야 합니다. 2. 탐색 창에서 사용자와 사용자 추가를 차례로 선택합니다. 3. 사용자 이름에 Administrator를 입력합니다. 4. AWS Management 콘솔 액세스 옆의 확인란을 선택합니다. 그런 다음 Custom password(사용자 지정 암호)를 선택하고 텍스트 상자에 새 암호를 입력합니다. 5. (선택 사항) 기본적으로 AWS에서는 새 사용자가 처음 로그인할 때 새 암호를 생성해야 합니다. User must create a new password at next sign-in(사용자가 다음에 로그인할 때 새 암호를 생성해야 합니다) 옆에 있는 확인란의 선택을 취소하면 새 사용자가 로그인한 후 암호를 재설정할 수 있습니다. 6. Next: Permissions(다음: 권한)를 선택합니다. 7. 권한 설정 아래에서 그룹에 사용자 추가를 선택합니다. 8. 그룹 생성을 선택합니다. 9. 그룹 생성 대화 상자의 그룹 이름에 Administrators를 입력합니다. 10. Filter policies(정책 필터링)을 선택한 다음 AWS managed -job function(aws 관리형 -job 함수)을 선택 하여 테이블 내용을 필터링합니다. 11. 정책 목록에서 AdministratorAccess 확인란을 선택합니다. 그런 다음 Create group을 선택합니다. Note AdministratorAccess 권한을 사용하여 AWS Billing and Cost Management 콘솔에 액세스 하려면 먼저 결제에 대한 IAM 사용자 및 역할 액세스를 활성화해야 합니다. 이를 위해 결제 콘 솔에 액세스를 위임하기 위한 자습서 1단계의 지침을 따르십시오. 12. 그룹 목록으로 돌아가 새 그룹의 확인란을 선택합니다. 목록에서 그룹을 확인하기 위해 필요한 경우 Refresh(새로 고침)를 선택합니다. 13. Next: Tags(다음: 태그)를 선택합니다. 14. (선택 사항) 태그를 키-값 페어로 연결하여 메타데이터를 사용자에게 추가합니다. IAM에서 태그 사용에 대한 자세한 내용은 IAM 사용 설명서의 IAM 개체 태그 지정을 참조하십시오. 15. Next: Review(다음: 검토)를 선택하여 새 사용자에 추가될 그룹 멤버십의 목록을 확인합니다. 계속 진행 할 준비가 되었으면 Create user를 선택합니다. 이와 동일한 절차에 따라 그룹 및 사용자를 추가로 생성하고 사용자에게 AWS 계정 리소스에 액세스할 수 있 는 권한을 부여할 수 있습니다. 특정 AWS 리소스에 대한 사용자 권한을 제한하는 정책을 사용하는 방법을 알아보려면 액세스 관리 및 정책 예제를 참조하십시오. 이 새로운 IAM 사용자로 로그인하려면 먼저 AWS 콘솔에서 로그아웃한 후 다음 URL을 사용합니다. 여기에 서 your_aws_account_id는 하이픈을 제외한 AWS 계정 번호를 나타냅니다. 예를 들어, AWS 계정 번호 가 1234-5678-9012이면 계정 ID는 123456789012입니다. https://your_aws_account_id.signin.aws.amazon.com/console/ 방금 생성한 IAM 사용자 이름과 암호를 입력합니다. 로그인하면 탐색 모음에 "your_user_name @ your_aws_account_id"가 표시됩니다. 로그인 페이지의 URL에 AWS 계정 ID가 포함되지 않게 하려면 계정 별칭을 생성합니다. IAM 대시보드에서 사용자 지정을 선택하고 회사 이름 등의 별칭을 입력합니다. 계정 별칭 생성 후 로그인할 때는 다음 URL을 사용합니다. 16
AWS Database Migration Service 마이그레이션 계획 https://your_account_alias.signin.aws.amazon.com/console/ 본인 계정의 IAM 사용자 로그인 링크를 확인하려면 IAM 콘솔을 열고 대시보드의 [AWS Account Alias] 아래 를 체크합니다. AWS Database Migration Service 마이그레이션 계 획 AWS Database Migration Service를 사용하여 데이터베이스 마이그레이션을 계획할 때에는 다음 사항을 고 려해야 합니다. 소스와 대상 데이터베이스를 AWS DMS 복제 인스턴스에 연결하는 네트워크를 구성해야 합니다. 이 작업 은 VPN을 통해 온프레미스 데이터베이스를 Amazon RDS DB 인스턴스에 연결하는 것과 같이 복제 인스 턴스와 동일한 VPC에서 AWS 리소스 2개를 보다 복잡한 구성에 연결하는 것만큼이나 간단합니다. 자세한 내용은 데이터 마이그레이션을 위한 네트워크 구성 (p. 66) 단원을 참조하십시오. 소스 및 대상 엔드포인트 대상 데이터베이스로 마이그레이션해야 하는 원본 데이터베이스의 정보와 테 이블을 알고 있어야 합니다. AWS DMS는 테이블 및 기본 키 생성을 포함하여 기본 스키마 마이그레이션 을 지원합니다. 그러나, AWS DMS는 보조 인덱스, 외부 키, 저장 프로시저, 사용자 계정 등은 대상 데이터 베이스에 자동으로 생성하지 않습니다. 원본 및 대상 데이터베이스 엔진에 따라 보충 로깅을 설정하거나 원본 또는 대상 데이터베이스의 다른 설정을 수정해야 할 수도 있습니다. 자세한 내용은 데이터 마이그레 이션용 소스 (p. 83) 및 대상 마이그레이션에 적합한 대상 (p. 144) 섹션을 참조하십시오. 스키마/코드 마이그레이션 AWS DMS에서는 스키마나 코드 변환을 수행하지 않습니다. Oracle SQL Developer, MySQL Workbench 또는 pgadmin III와 같은 도구를 사용하여 스키마를 변환할 수 있습니다. 기존 스키마를 다른 데이터베이스 엔진으로 변환할 경우, AWS Schema Conversion Tool을 사용할 수 있 습니다. 대상 스키마를 생성하고 전체 스키마(테이블, 인덱스, 보기 등)을 생성할 수도 있습니다. 또한 PL/ SQL 또는 TSQL을 PgSQL 또는 다른 형식으로 변환하는 도구를 사용할 수도 있습니다. AWS Schema Conversion Tool에 대한 자세한 내용은 AWS Schema Conversion Tool 을 참조하십시오. 지원되지 않는 데이터 형식 일부 원본 데이터 형식을 대상 데이터베이스의 해당 데이터 형식으로 변환해 야 합니다. 지원되는 데이터 형식에 대한 자세한 내용은 데이터 스토어의 원본 또는 대상 섹션을 참조하십 시오. 17
데이터베이스 마이그레이션 시작 AWS Database Migration Service 시 작하기 AWS Database Migration Service(AWS DMS)를 통해 데이터베이스를 AWS로 간편하고 안전하게 마이그레 이션할 수 있습니다. Oracle, MySQL, PostgreSQL와 같이 가장 널리 사용되는 상용 및 오픈 소스 데이터베이 스의 데이터를 마이그레이션할 수 있습니다. 이 서비스는 Oracle에서 Oracle로의 동종 마이그레이션뿐만 아 니라 Oracle에서 PostgreSQL로 또는 MySQL에서 Oracle로 등 서로 다른 데이터베이스 플랫폼 간 이종 마이 그레이션도 지원합니다. AWS Database Migration Service 사용을 통한 데이터베이스 마이그레이션 비용 정보는 AWS Database Migration Service 요금 페이지를 참조하십시오. 주제 AWS Database Migration Service를 통한 데이터베이스 마이그레이션 시작 (p. 18) 1단계: 소개 (p. 18) 2단계: 복제 인스턴스 생성 (p. 19) 3단계: 원본과 대상 엔드포인트 지정 (p. 23) 4단계: 작업 생성 (p. 26) 작업 모니터링 (p. 30) AWS Database Migration Service를 통한 데이터베 이스 마이그레이션 시작 몇 가지 방법으로 데이터베이스 마이그레이션을 시작할 수 있습니다. 각 프로세스 단계를 안내해 주는 AWS DMS 콘솔 마법사를 선택하거나 탐색 창에서 적절한 작업을 선택하여 각 단계를 진행할 수 있습니다. AWS CLI;을 사용할 수 있으며, AWS DMS에서 CLI 사용에 대한 자세한 내용은 AWS CLI for AWS DMS를 참조하 십시오. 마법사를 사용하려면, AWS DMS 콘솔에 있는 탐색 창에서 시작하기를 선택합니다. 마법사를 사용하여 첫 번째 데이터 마이그레이션을 생성할 수 있습니다. 마법사 프로세스 후에 모든 마이그레이션 프로세스를 실행 하는 복제 인스턴스를 할당하고, 소스와 대상 데이터베이스를 지정한 다음, 작업이나 작업 집합을 생성하여 사용할 테이블 및 복제 프로세스를 정의합니다. 그런 다음, AWS DMS는 복제 인스턴스를 생성하고 마이그 레이션 중인 데이터에서 작업을 수행합니다. 그렇지 않고, AWS DMS 데이터베이스 마이그레이션의 구성 요소 각각을 생성하려면 탐색 창에서 항목을 선 택하면 됩니다. 데이터베이스 마이그레이션을 위해서는 다음 작업을 수행해야 합니다. AWS Database Migration Service 설정 (p. 15)에 요약된 작업 완료 마이그레이션을 위한 모든 프로세스를 실행하는 복제 인스턴스 할당 원본과 대상 데이터베이스 엔드포인트 지정 하나의 작업이나 작업 집합을 생성하여 사용할 테이블과 복제 프로세스 정의 1단계: 소개 AWS DMS 콘솔 마법사를 사용하여 데이터베이스 마이그레이션을 시작하는 경우, 시작 페이지가 나타나 AWS DMS를 사용하여 데이터베이스를 마이그레이션하는 프로세스에 대해 설명합니다. 18
2단계: 복제 인스턴스 생성 콘솔의 Welcome 페이지에서 데이터베이스 마이그레이션을 시작하려면 [Next]를 선택합니다. 2단계: 복제 인스턴스 생성 데이터베이스를 마이그레이션할 때 첫 번째 작업은 할당한 작업을 수행하고 데이터를 원본 데이터베이스 에서 대상 데이터페이스로 마이그레이션할 수 있도록 스토리지와 프로세싱 성능이 충분한 복제 인스턴스 를 생성하는 것입니다. 이 인스턴스의 필요한 크기는 마이그레이션해야 하는 데이터 양과 인스턴스 실행에 필요한 작업에 따라 달라집니다. 복제 인스턴스에 대한 자세한 내용은 AWS DMS 복제 인스턴스 작업 사 용 (p. 58) 섹션을 참조하십시오. 다음 절차에서는 AWS DMS 콘솔 마법사를 이미 선택했다고 가정합니다. 이 단계를 진행하려면 AWS DMS 콘솔의 탐색 창에서 복제 인스턴스를 선택한 후 복제 인스턴스 생성을 선택합니다. AWS 콘솔을 사용하여 복제 인스턴스를 생성하려면 1. 탐색 창에서 [Replication instances]를 클릭합니다. 2. [Create Replication Instance]를 선택합니다. 3. [Create replication instance] 페이지에서 복제 인스턴스 정보를 지정합니다. 다음 표는 설정에 대한 설명 입니다. 19
2단계: 복제 인스턴스 생성 옵션 수행할 작업 [Name] 인쇄 가능한 ASCII 문자(/, " 및 @ 제외) 8-16자를 포함 하는 복제 인스턴스의 이름을 입력합니다. 이름은 선택 한 리전의 계정에서 고유해야 합니다. 예를 들어 west2mysql2mysql-instance1처럼 수행 중인 작업과 리전 등 일부 정보를 이름에 추가하도록 선택할 수 있습니다. 설명 복제 인스턴스에 대한 간략한 설명을 입력합니다. [Instance class] 마이그레이션에 필요한 구성과 함께 인스턴스 클래스를 선 택합니다. 마이그레이션을 성공적으로 완료할 수 있도록 인 스턴스의 스토리지, 네트워크 및 처리 능력은 충분해야 합니 다. 마이그레이션에 최적인 인스턴스 클래스를 결정하는 방 법에 대한 자세한 내용은 AWS DMS 복제 인스턴스 작업 사 용 (p. 58) 섹션을 참조하십시오. 복제 엔진 버전 기본적으로 복제 인스턴스는 AWS DMS 복제 엔진 소프트 웨어의 최신 버전을 실행합니다. 이 기본값을 그대로 사용하 는 것이 좋지만, 필요할 경우 이전 엔진 버전을 선택할 수도 있습니다. 20
2단계: 복제 인스턴스 생성 4. 옵션 수행할 작업 VPC 사용할 Amazon Virtual Private Cloud(Amazon VPC)를 선택 합니다. 원본 또는 대상 데이터베이스가 VPC에 있는 경우, 이 VPC를 선택합니다. 원본 및 대상 데이터베이스가 다른 VPC에 있으면, 모두가 퍼블릭 서브넷에 있고 공개적으로 액 세스 가능한지 확인하고 나서 복제 인스턴스가 배치될 VPC 를 선택합니다. 복제 인스턴스는 원본 VPC에 있는 데이터에 액세스할 수 있어야 합니다. 원본이나 대상 데이터베이스가 VPC에 없으면, 복제 인스턴스가 배치될 위치에 있는 VPC 를 선택합니다. [Multi-AZ] 이 선택적 파라미터를 사용하여 다른 가용 영역에 복제 인스 턴스의 대기 복제본을 생성하여 장애 조치를 지원합니다. 데 이터 캡처(CDC) 또는 지속적 복제를 사용하려면, 이 옵션을 활성화해야 합니다. [Publicly accessible] 인터넷에서 복제 인스턴스에 액세스하려면 이 옵션을 선택 합니다. 다음 그림과 같이 [Advanced ] 탭을 선택하고 네트워크와 암호화 설정이 필요하면 값을 설정합니다. 다 음 표는 설정에 대한 설명입니다. 21
2단계: 복제 인스턴스 생성 옵션 수행할 작업 [Allocated storage (GB)] 스토리지는 주로 로그 파일과 캐시된 트랜잭션에서 소모합 니다. 캐시 트랜잭션에서 스토리지는 캐시된 트랜잭션을 디 스크에 기록해야 할 때에만 사용됩니다. 따라서 AWS DMS 는 스토리지를 많이 사용하지 않습니다. 일부 예외 사항은 다음과 같습니다. 상당한 트랜잭션 로드를 발생하는 매우 큰 테이블. 큰 테 이블을 로드하면 다소 시간이 걸릴 수 있으므로, 캐시된 트랜잭션은 큰 테이블 로드 중에 디스크에 기록될 가능성 이 더 높습니다. 캐시된 트랜잭션을 로드하기 전에 일시 중지되도록 구성 되는 작업입니다. 이 경우에 모든 테이블에서 전체 로드가 완료될 때까지 모든 트랜잭션이 캐시됩니다. 이 구성에서 상당량의 스토리지가 캐시된 트랜잭션에서 소모될 수 있 습니다. Amazon Redshift로 로드되고 있는 테이블을 사용하여 구 성된 작업입니다. 그렇지만, 이 구성은 Amazon Aurora가 대상일 때는 문제가 아닙니다. 대다수의 경우에 스토리지의 기본 할당량은 충분합니다. 그 렇지만, 항상 스토리지 관련 지표에 유의하고 기본 할당량보 다 더 많이 소모하게 되면 스토리지를 확장하는 것이 좋습니 다. 5. [Replication Subnet Group] 복제 인스턴스를 생성할 위치에 있는 선택된 VPC에서 복제 서브넷 그룹을 선택합니다. 원본 데이터베이스가 VPC에 있 는 경우, 원본 데이터베이스가 포함된 서브넷 그룹을 복제 인스턴스 위치로 선택합니다. 복제 서브넷에 대한 자세한 내 용은 복제 서브넷 그룹 생성 (p. 71) 섹션을 참조하십시 오. [Availability zone] 원본 데이터베이스가 있는 가용 영역을 선택합니다. [VPC Security group(s)] 모든 복제 인스턴스가 VPC에 생성됩니다. 원본 데이터베이 스가 VPC에 있는 경우, 데이터베이스가 상주하는 곳에 있는 DB 인스턴스에 대한 액세스 권한을 부여하는 VPC 보안 그 룹을 선택합니다. [KMS master key] 복제 스토리지와 연결 정보를 암호화하기 위해 사용할 암호화 키를 선택합니다. [(Default) aws/dms]를 선택하 면, 계정 및 리전과 연결된 기본 AWS Key Management Service(AWS KMS) 키가 사용됩니다. 설명 및 계정 번호가 키의 ARN과 함께 표시됩니다. 암호화 키 사용에 대한 자세 한 내용은 암호화 키 설정 및 KMS 권한 지정 (p. 45)를 참 조하십시오. [Maintenance] 설정을 지정합니다. 다음 표는 설정에 대한 설명입니다. 유지 관리 설정에 대한 자세한 내 용은 AWS DMS 유지 관리 기간 (p. 61) 섹션을 참조하십시오. 22
3단계: 원본과 대상 엔드포인트 지정 옵션 수행할 작업 Auto minor version upgrade 유지 관리 기간 동안 마이너 엔진 업그레이드가 복제 인스턴 스에 자동으로 적용되도록 하려면 이 옵션을 선택합니다. 유지 관리 기간 시스템 유지 관리를 실행할 수 있는 주 단위 기간(UTC, 협정 세계시)을 선택합니다. 기본값: 리전마다 주중에 무작위로 8시간의 주기를 두고 선 택한 30분의 기간입니다. 6. [Create replication instance]를 선택합니다. 3단계: 원본과 대상 엔드포인트 지정 복제 인스턴스가 생성되는 동안 원본과 대상 데이터 스토어를 지정할 수 있습니다. 원본과 대상 데이 터 스토어는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스, Amazon Relational Database Service(Amazon RDS) DB 인스턴스 또는 온프레미스 데이터베이스에 있을 수 있습니다. 다음 절차에서는 AWS DMS 콘솔 마법사를 이미 선택했다고 가정합니다. 이 단계를 진행하려면 AWS DMS 콘솔의 탐색 창에서 엔드포인트를 선택한 후 엔드포인트 생성을 선택합니다. 콘솔 마법사를 사용할 때에는 동일한 페이지에서 원본과 대상 엔드포인트를 모두 생성합니다. 콘솔 마법사를 사용하지 않을 때에는 각 엔 드포인트를 별도로 생성합니다. AWS 콘솔을 사용하여 원본 또는 대상 데이터베이스 엔드포인트를 지정하려면 1. [Connect source and target database endpoints] 페이지에서 원본 또는 대상 데이터베이스에 대한 연결 정보를 지정합니다. 다음 표는 설정에 대한 설명입니다. 23
3단계: 원본과 대상 엔드포인트 지정 옵션 수행할 작업 [Endpoint identifier] 엔드포인트를 식별하는 데 사용할 이름을 입력합니다. 이름 에 oracle-source 또는 PostgreSQL-target과 같은 엔드포인트 유형을 포함해야 합니다. 모든 복제 인스턴스에 서 이 이름은 고유해야 합니다. 24
3단계: 원본과 대상 엔드포인트 지정 2. 옵션 수행할 작업 [Source engine] 및 [Target engine] 엔드포인트가 되는 데이터베이스 엔진의 유형을 선택합니 다. [Server name] 서버 이름을 입력합니다. 온프레미스 데이터베이스 의 경우, 이것은 IP 주소 또는 퍼블릭 호스트 이름 이 될 수 있습니다. Amazon RDS DB 인스턴스의 경 우, 이것은 mysqlsrvinst.abcd12345678.uswest-2.rds.amazonaws.com과 같이 DB 인스턴스의 엔 드포인트(DNS 이름)가 될 수 있습니다. 포트 데이터베이스가 사용하는 포트를 입력합니다. [SSL mode] 이 엔드포인트에서 연결 암호화를 활성화해야 하는 경우 SSL 모드를 선택합니다. 선택하는 모드에 따라 인증서와 서 버 인증서 정보를 제공해야 할 수도 있습니다. 사용자 이름 데이터 마이그레이션을 허용하는 데 필요한 권한을 가진 사 용자 이름을 입력합니다. 필요한 권한에 대한 정보는 이 사 용 설명서의 원본 또는 대상 데이터베이스 엔진의 보안 섹션 을 참조하십시오. [Password] 필요한 권한을 가진 계정의 암호를 입력합니다. 암호에 "+" 또는 "&"와 같은 특수 문자가 포함된 경우 전체 암호를 중괄 호 ""로 묶으십시오. 다음 그림과 같이 [Advanced ] 탭을 선택하고 필요한 경우 연결 문자열과 암호화 키 값을 설정합니다. [Run test]를 선택하여 엔드포인트 연결을 테스트할 수 있습니다. 25
4단계: 작업 생성 옵션 수행할 작업 [Extra connection attributes] 여기에 추가 연결 파라미터를 입력합니다. 추가 연결 속성에 대한 자세한 내용은 데이터 스토어의 설명서 섹션을 참조하 십시오. [KMS master key] 복제 스토리지와 연결 정보를 암호화하기 위해 사용할 암호화 키를 선택합니다. [(Default) aws/dms]를 선택하 면, 계정 및 리전과 연결된 기본 AWS Key Management Service(AWS KMS) 키가 사용됩니다. 암호화 키 사용 에 대한 자세한 내용은 암호화 키 설정 및 KMS 권한 지 정 (p. 45)를 참조하십시오. 4단계: 작업 생성 작업을 생성하여 마이그레이션할 테이블을 지정하고, 대상 스키마를 사용하여 데이터를 매핑하고, 대상 데이 터베이스에 새 테이블을 생성합니다. 작업 생성의 일부 작업으로 마이그레이션 유형 즉, 기존 데이터 마이그 26
4단계: 작업 생성 레이션, 기존 데이터를 마이그레이션하고 지속적 변경 사항 복제, 데이터 변경 사항만 복제 중 하나를 선택할 수 있습니다. AWS DMS를 사용하여 원본과 대상 데이터베이스 사이에서 데이터의 정확한 매핑을 지정할 수 있습니다. 매 핑을 지정하기 전에 원본 및 대상 데이터베이스의 데이터 형식 매핑에 대한 관련 설명서 섹션을 검토하십시 오. [Create task] 페이지에서 이 작업에 대한 정보 지정을 마친 직후에 작업을 시작하거나 작업 정보 지정을 마친 후 대시보드에서 작업을 시작할 수 있습니다. 이후 절차에서는 AWS DMS 콘솔 마법사를 선택하고 이 콘솔 마법사를 사용하여 복제 인스턴스 정보와 엔드 포인트를 선택했다고 가정합니다. 이 단계를 진행하려면 AWS DMS 콘솔의 탐색 창에서 작업을 선택한 후 작업 생성을 선택합니다. 마이그레이션 작업을 생성하려면 1. [Create Task] 페이지에서 작업 옵션을 지정합니다. 다음 표는 설정에 대한 설명입니다. 옵션 수행할 작업 [Task name] 작업 이름을 입력합니다. [Task description] 작업 설명을 입력합니다. [Source endpoint] 사용할 소스 엔드포인트를 표시합니다. [Target endpoint] 사용할 대상 엔드포인트를 표시합니다. 27
4단계: 작업 생성 2. 옵션 수행할 작업 [Replication instance] 사용할 복제 인스턴스를 표시합니다. [Migration type] 사용할 마이그레이션 방법을 선택합니다. 기존 데이터가 대 상 데이터베이스에 마이그레이션되도록 선택하거나 마이그 레이션된 데이터 외에 지속적 변경 사항이 대상 데이터베이 스에 전송되도록 선택할 수 있습니다. [Start task on create] 이 옵션을 선택하면 작업 생성 직후 작업이 시작됩니다. 다음 그림과 같이 [Task Settings ] 탭을 선택하고 대상 테이블 값, LOB 지원을 지정하고 로깅을 활성 화합니다. 표시되는 작업 설정은 선택한 [Migration type] 값에 따라 달라집니다. 예를 들어, [Migrate existing data]를 선택하면 다음 옵션이 표시됩니다. 옵션 수행할 작업 [Target table preparation mode] [Do nothing] - 대상 테이블의 데이터와 메타데이터가 변경 되지 않습니다. [Drop tables on target] - 테이블이 삭제되고 그 자리에 새 테 이블이 생성됩니다. [Truncate] - 테이블 메타데이터에 영향을 주지 않고 테이블 이 잘립니다. [Include LOB columns in replication] [Don't include LOB columns] - LOB 열은 마이그레이션에서 제외됩니다. [Full LOB mode] - 크기와 상관없이 전체 LOB를 마이그레이 션합니다. LOB는 LOB 청크 크기별로 제어되는 청크 단위로 하나씩 마이그레이션됩니다. 이 방법은 제한적 LOB 모드를 사용하는 것보다 더 느립니다. 제한적 LOB 모드 - LOB를 '최대 LOB 크기'로 자릅니다. 이 방법은 전체 LOB 모드를 사용하는 것보다 더 빠릅니다. 최대 LOB 크기(kb) [Limited LOB Mode]에서 [Max LOB Size] 설정을 초과하는 LOB 열은 지정된 최대 LOB 크기로 잘립니다. 28
4단계: 작업 생성 옵션 수행할 작업 로깅 활성화 Amazon CloudWatch를 통해 로깅을 활성화합니다. 예를 들어, [Migration type]에서 [Migrate existing data and replicate]를 선택하면 다음 옵션이 표시됩니 다. 옵션 수행할 작업 [Target table preparation mode] [Do nothing] - 대상 테이블의 데이터와 메타데이터가 변경 되지 않습니다. [Drop tables on target] - 테이블이 삭제되고 그 자리에 새 테 이블이 생성됩니다. [Truncate] - 테이블 메타데이터에 영향을 주지 않고 테이블 이 잘립니다. [Stop task after full load completes] [Don't stop] - 작업을 중지하지 않고, 캐시된 변경 사항을 즉 시 적용하고 계속 진행합니다. [Stop before applying cached changes] - 캐시된 변경 사항 을 적용하기 전에 작업을 중지합니다. 이렇게 하면 보조 인 덱스를 추가하여 변경 사항을 적용하는 속도를 향상할 수 있 습니다. [Stop after applying cached changes] - 캐시된 변경 사항 적 용 후 작업을 중지합니다. 이렇게 하면 트랜잭션 적용을 사 용하는 경우 외래 키, 트리거 등을 추가할 수 있습니다. 29
작업 모니터링 옵션 수행할 작업 [Include LOB columns in replication] [Don't include LOB columns] - LOB 열은 마이그레이션에서 제외됩니다. [Full LOB mode] - 크기와 상관없이 전체 LOB를 마이그레이 션합니다. LOB는 LOB 청크 크기별로 제어되는 청크 단위로 하나씩 마이그레이션됩니다. 이 방법은 제한적 LOB 모드를 사용하는 것보다 더 느립니다. 제한적 LOB 모드 - LOB를 '최대 LOB 크기'로 자릅니다. 이 방법은 전체 LOB 모드를 사용하는 것보다 더 빠릅니다. 최대 LOB 크기(kb) [Limited LOB Mode]에서 [Max LOB Size] 설정을 초과하는 LOB 열은 지정된 최대 LOB 크기로 잘립니다. 로깅 활성화 Amazon CloudWatch를 통해 로깅을 활성화합니다. 3. 다음 그림과 같이 [Table mappings ] 탭을 선택하여 스키마 매핑과 매핑 방법에 대한 값을 설정합니다. [Custom]을 선택한 경우 대상 스키마와 테이블 값을 지정할 수 있습니다. 테이블 매핑에 대한 자세한 내 용은 작업 설정을 지정하기 위한 테이블 매핑 사용 (p. 257) 섹션을 참조하십시오. 4. 작업 설정을 완료하고 나면, [Create task]를 선택합니다. 작업 모니터링 작업을 생성할 때 [Start task on create]를 선택하는 경우, [Create task]을 선택하면 작업이 즉시 시작되어 데 이터를 마이그레이션합니다. 작업 통계와 모니터링 정보를 보려면 AWS Management Console에서 실행 중 인 작업을 선택하면 됩니다. 다음 스크린샷은 데이터베이스 마이그레이션의 테이블 통계를 보여 줍니다. 모 니터링에 대한 자세한 내용은 AWS DMS 작업 모니터링 (p. 290)을 참조하십시오. 30
작업 모니터링 31
필요한 IAM 권한 AWS Database Migration Service의 보안 AWS Database Migration Service(AWS DMS)는 여러 프로세스를 사용하여 마이그레이션 중에 데이터를 보호합니다. 이 서비스는 AWS 계정에 고유한 AWS Key Management Service(AWS KMS)를 사용하여 복 제 인스턴스에서 사용되는 스토리지와 엔드포인트 연결 정보를 암호화합니다. Secure Sockets Layer(SSL) 이 지원됩니다. AWS Identity and Access Management(IAM) 사용자로서 로그인한 경우, AWS Database Migration Service에서 적절한 권한이 있어야 합니다. 복제 인스턴스에서 사용하는 Amazon Virtual Private Cloud(Amazon VPC) 서비스를 기반으로 한 VPC는 모 든 포트의 트래픽 전체를 VPC에서 내보내도록 허용하는 규칙을 가진 보안 그룹과 연결되어 있어야 합니다. 해당 엔드포인트에서 올바른 수신이 활성화되어 있는 한 이 접근 방식을 통해 통신을 복제 인스턴스에서 원 본과 대상 데이터베이스 엔드포인트로 전달할 수 있습니다. 데이터베이스 마이그레이션 로그를 확인하려면, 사용 중인 IAM 역할에 적합한 Amazon CloudWatch Log 권 한이 필요합니다. 주제 AWS DMS 사용에 필요한 IAM 권한 (p. 32) AWS CLI 및 AWS DMS API에서 사용하는 IAM 역할 생성 (p. 35) 리소스 이름 및 태그를 사용하여 세분화된 액세스 제어 (p. 39) 암호화 키 설정 및 KMS 권한 지정 (p. 45) AWS Database Migration Service 네트워크 보안 (p. 46) AWS Database Migration Service에서 SSL 사용 (p. 47) 데이터베이스 암호 변경 (p. 55) AWS DMS 사용에 필요한 IAM 권한 특정 IAM 권한과 IAM 역할을 사용하여 AWS DMS를 사용합니다. IAM 사용자로 로그인하여 AWS DMS를 사 용하려면 계정 관리자가 이 단원에서 설명한 정책을 AWS DMS를 실행할 때 사용하는 IAM 사용자, 그룹 또 는 역할에 연결해야 합니다. IAM 권한에 대한 자세한 내용은 IAM 사용 설명서를 참조하십시오. 다음 권한 집합은 AWS DMS에 대한 액세스 권한을 부여할 뿐 아니라, AWS KMS, IAM, Amazon Elastic Compute Cloud(Amazon EC2), Amazon CloudWatch와 같은 다른 Amazon 서비스에서 필요한 특정 작업에 대한 권한을 부여합니다. CloudWatch는 AWS DMS 마이그레이션을 실시간으로 모니터링하고 마이그레이 션의 진행률을 나타내는 지표를 추적합니다. CloudWatch 로그를 사용하여 작업에 발생한 문제를 디버깅할 수 있습니다. Note 태그 지정을 사용하여 AWS DMS 리소스에 대한 액세스를 추가로 제한할 수 있습니다. 태그 지정을 사용한 AWS DMS 리소스에 대한 액세스 제한에 대한 자세한 내용은 리소스 이름 및 태그를 사용하 여 세분화된 액세스 제어 (p. 39) 단원을 참조하십시오. "Version": "2012-10-17", "Statement": [ 32
필요한 IAM 권한 ] "Effect": "Allow", "Action": "dms:*", "Resource": "*" "Effect": "Allow", "Action": [ "kms:listaliases", "kms:describekey" ], "Resource": "*" "Effect": "Allow", "Action": [ "iam:getrole", "iam:passrole", "iam:createrole", "iam:attachrolepolicy" ], "Resource": "*" "Effect": "Allow", "Action": [ "ec2:describevpcs", "ec2:describeinternetgateways", "ec2:describeavailabilityzones", "ec2:describesubnets", "ec2:describesecuritygroups", "ec2:modifynetworkinterfaceattribute", "ec2:createnetworkinterface", "ec2:deletenetworkinterface" ], "Resource": "*" "Effect": "Allow", "Action": [ "cloudwatch:get*", "cloudwatch:list*" ], "Resource": "*" "Effect": "Allow", "Action": [ "logs:describeloggroups", "logs:describelogstreams", "logs:filterlogevents", "logs:getlogevents" ], "Resource": "*" "Effect": "Allow", "Action": [ "redshift:describe*", "redshift:modifyclusteriamroles" ], "Resource": "*" 33
필요한 IAM 권한 이러한 권한을 분석하면 각 권한이 필요한 이유를 더 잘 이해할 수 있습니다. 다음 단원은 사용자에게 AWS DMS API 작업을 호출할 수 있도록 하는 데 필요합니다. "Effect": "Allow", "Action": "dms:*", "Resource": "*" 다음 단원은 사용자에게 콘솔에 표시할 수 있는 AWS KMS 키와 별칭을 나열할 수 있도록 하는 데 필요합니 다. KMS 키에 대한 Amazon 리소스 이름(ARN)을 알고 있고 AWS Command Line Interface(AWS CLI)만을 사용할 때는 이 항목이 필요하지 않습니다. "Effect": "Allow", "Action": [ "kms:listaliases", "kms:describekey" ], "Resource": "*" 엔드포인트를 사용하여 역할 ARN을 전달해야 하는 특정 엔드포인트 유형에는 다음 단원이 필요합니다. 또 한, 필요한 AWS DMS 역할을 사전에 생성하지 않은 경우 AWS DMS 콘솔이 해당 역할을 생성할 수 있습니 다. 모든 역할이 사전에 구성된 경우 iam:getrole 및 iam:passrole만 있으면 됩니다. 역할에 대한 자세 한 내용은 AWS CLI 및 AWS DMS API에서 사용하는 IAM 역할 생성 (p. 35)을 참조하십시오. "Effect": "Allow", "Action": [ "iam:getrole", "iam:passrole", "iam:createrole", "iam:attachrolepolicy" ], "Resource": "*" AWS DMS에서 Amazon EC2 인스턴스를 생성하고 생성되는 복제 인스턴스에 대해 네트워크를 구성해야 하 므로 다음 단원이 필요합니다. 이러한 리소스는 고객의 계정에 있으므로 고객 대신에 이러한 작업을 수행하 는 기능이 필요합니다. "Effect": "Allow", "Action": [ "ec2:describevpcs", "ec2:describeinternetgateways", "ec2:describeavailabilityzones", "ec2:describesubnets", "ec2:describesecuritygroups", "ec2:modifynetworkinterfaceattribute", "ec2:createnetworkinterface", "ec2:deletenetworkinterface" ], "Resource": "*" 34
CLI와 API에 대한 IAM 역할 사용자가 복제 인스턴스 지표를 볼 수 있도록 하려면 다음 단원이 필요합니다. "Effect": "Allow", "Action": [ "cloudwatch:get*", "cloudwatch:list*" ], "Resource": "*" 사용자가 복제 로그를 볼 수 있도록 하려면 이 섹션이 필요합니다. "Effect": "Allow", "Action": [ "logs:describeloggroups", "logs:describelogstreams", "logs:filterlogevents", "logs:getlogevents" ], "Resource": "*" 다음 단원은 Amazon Redshift를 대상으로 사용 시 필요합니다. 이 단원은 AWS DMS에 대해 Amazon Redshift 클러스터가 올바르게 설정되었음을 AWS DMS에서 검증할 수 있도록 합니다. "Effect": "Allow", "Action": [ "redshift:describe*", "redshift:modifyclusteriamroles" ], "Resource": "*" AWS DMS 콘솔은 AWS DMS 콘솔을 사용할 때 AWS 계정에 자동으로 연결되는 여러 역할을 생성합니다. AWS Command Line Interface(AWS CLI) 또는 AWS DMS API를 사용하여 마이그레이션하는 경우, 이 역할 을 계정에 추가해야 합니다. 이 역할 추가 방법에 대한 자세한 내용은 AWS CLI 및 AWS DMS API에서 사용 하는 IAM 역할 생성 (p. 35) 섹션을 참조하십시오. AWS CLI 및 AWS DMS API에서 사용하는 IAM 역할 생성 AWS CLI 또는 AWS DMS API를 사용하여 데이터베이스를 마이그레이션하는 경우, AWS 계정에 IAM 역 할 3개를 추가해야만 AWS DMS 기능을 사용할 수 있습니다. 이 중 두 가지는 dms-vpc-role과 dmscloudwatch-logs-role입니다. 대상 데이터베이스로서 Amazon Redshift을 사용하는 경우, IAM 역할 dms-access-for-endpoint를 AWS 계정에 추가해야 합니다. 관리형 정책은 자동으로 업데이트됩니다. IAM 역할에서 사용자 지정 정책을 사용하는 경우, 이 설명서의 관리형 정책 업데이트를 정기적으로 확인해야 합니다. 관리형 정책의 세부 정보를 보려면 get-policy와 get-policy-version 명령을 조합하여 사용하면 됩니다. 예를 들어, 다음 get-policy 명령은 역할에 대한 정보를 검색합니다. 35
CLI와 API에 대한 IAM 역할 aws iam get-policy --policy-arn arn:aws:iam::aws:policy/service-role/ AmazonDMSVPCManagementRole 이 명령에서 반환되는 정보는 다음과 같습니다. "Policy": "PolicyName": "AmazonDMSVPCManagementRole", "Description": "Provides access to manage VPC settings for AWS managed customer configurations", "CreateDate": "2015-11-18T16:33:19Z", "AttachmentCount": 1, "IsAttachable": true, "PolicyId": "ANPAJHKIGMBQI4AEFFSYO", "DefaultVersionId": "v3", "Path": "/service-role/", "Arn": "arn:aws:iam::aws:policy/service-role/amazondmsvpcmanagementrole", "UpdateDate": "2016-05-23T16:29:57Z" 다음 get-policy-version 명령은 정책 정보를 검색합니다. aws iam get-policy-version --policy-arn arn:aws:iam::aws:policy/service-role/ AmazonDMSVPCManagementRole --version-id v3 이 명령에서 반환되는 정보는 다음과 같습니다. "PolicyVersion": "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": "Version": "2012-10-17", "Statement": [ "Action": [ "ec2:createnetworkinterface", "ec2:describeavailabilityzones", "ec2:describeinternetgateways", "ec2:describesecuritygroups", "ec2:describesubnets", "ec2:describevpcs", "ec2:deletenetworkinterface", "ec2:modifynetworkinterfaceattribute" ], "Resource": "*", "Effect": "Allow" ] "IsDefaultVersion": true 36
CLI와 API에 대한 IAM 역할 동일한 명령을 사용하여 AmazonDMSCloudWatchLogsRole과 AmazonDMSRedshiftS3Role 관리형 정책 에 대한 정보를 가져올 수 있습니다. Note AWS DMS 콘솔을 사용하여 데이터베이스 마이그레이션을 수행하는 경우, 이들 역할은 AWS 계정 에 자동으로 추가됩니다. 다음 절차에 따라 dms-vpc-role, dms-cloudwatch-logs-role, dms-access-for-endpoint IAM 역 할을 생성합니다. AWS CLI 또는 AWS DMS API에서 사용하기 위해 dms-vpc-role IAM 역할을 생성하려면 1. 다음과 같이 IAM 정책이 있는 JSON 파일을 생성합니다. JSON 파일에 dmsassumerolepolicydocument.json 이름을 지정합니다. ] "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com" "Action": "sts:assumerole" 다음 명령을 사용하는 AWS CLI를 사용하여 역할을 생성합니다. aws iam create-role --role-name dms-vpc-role --assume-role-policy-document file:// dmsassumerolepolicydocument.json 2. 다음 명령을 사용하여 AmazonDMSVPCManagementRole 정책을 dms-vpc-role에 연결합니다. aws iam attach-role-policy --role-name dms-vpc-role --policy-arn arn:aws:iam::aws:policy/service-role/amazondmsvpcmanagementrole AWS CLI 또는 AWS DMS API에서 사용하기 위해 dms-cloudwatch-logs-role IAM 역할을 생 성하려면 1. 다음과 같이 IAM 정책이 있는 JSON 파일을 생성합니다. JSON 파일에 dmsassumerolepolicydocument2.json 이름을 지정합니다. "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com" 37
CLI와 API에 대한 IAM 역할 ] "Action": "sts:assumerole" 다음 명령을 사용하는 AWS CLI를 사용하여 역할을 생성합니다. aws iam create-role --role-name dms-cloudwatch-logs-role --assume-role-policy-document file://dmsassumerolepolicydocument2.json 2. 다음 명령을 사용하여 AmazonDMSCloudWatchLogsRole 정책을 dms-cloudwatch-logs-role에 연결합니다. aws iam attach-role-policy --role-name dms-cloudwatch-logs-role --policy-arn arn:aws:iam::aws:policy/service-role/amazondmscloudwatchlogsrole 대상 데이터베이스로서 Amazon Redshift를 사용하는 경우, IAM 역할 dms-access-for-endpoint를 생 성하여 Amazon Simple Storage Service(Amazon S3)에 대한 액세스 권한을 부여해야 합니다. Amazon Redshift에서 대상 데이터베이스로 사용하기 위해 dms-access-for-endpoint IAM 역 할을 생성하려면 1. 다음과 같이 IAM 정책이 있는 JSON 파일을 생성합니다. JSON 파일에 dmsassumerolepolicydocument3.json 이름을 지정합니다. "Version": "2012-10-17", "Statement": [ "Sid": "1", "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com" "Action": "sts:assumerole" "Sid": "2", "Effect": "Allow", "Principal": "Service": "redshift.amazonaws.com" "Action": "sts:assumerole" ] 2. 다음 명령을 사용하는 AWS CLI를 사용하여 역할을 생성합니다. aws iam create-role --role-name dms-access-for-endpoint --assume-role-policy-document file://dmsassumerolepolicydocument3.json 38
Fine-Grained Access Control 3. 다음 명령을 사용하여 AmazonDMSRedshiftS3Role 정책을 dms-access-for-endpoint 역할에 연 결합니다. aws iam attach-role-policy --role-name dms-access-for-endpoint \ --policy-arn arn:aws:iam::aws:policy/service-role/amazondmsredshifts3role 이제 IAM 정책을 적용하여 AWS CLI 또는 AWS DMS API를 사용해야 합니다. 리소스 이름 및 태그를 사용하여 세분화된 액세스 제 어 ARN 기반 리소스 이름 및 리소스 태그를 사용하여 AWS DMS 리소스에 대한 액세스를 관리할 수 있습니다. IAM 정책에 조건문을 포함하거나 허용 작업을 정의하여 이 작업을 수행할 수 있습니다. 리소스 이름을 사용하여 액세스 제어 IAM 사용자 계정을 생성하고 AWS DMS 리소스의 Amazon 리소스 이름(ARN)에 따라 정책을 할당할 수 있습 니다. 다음 정책은 ARN arn:aws:dms:us-east-1:152683116:rep:doh67ztoxglixmihkitv를 사용하여 AWS DMS 복제 인스턴스에 대한 액세스 권한을 거부합니다. "Version": "2012-10-17", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:rep:doh67ztoxglixmihkitv" ] 예를 들면, 정책이 적용 중일 때는 다음 명령이 실패합니다. $ aws dms delete-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:doh67ztoxglixmihkitv" A client error (AccessDeniedException) occurred when calling the DeleteReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:deletereplicationinstance on resource: arn:aws:dms:useast-1:152683116:rep:doh67ztoxglixmihkitv $ aws dms modify-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:doh67ztoxglixmihkitv" A client error (AccessDeniedException) occurred when calling the ModifyReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: 39
리소스 이름을 사용하여 액세스 제어 dms:modifyreplicationinstance on resource: arn:aws:dms:useast-1:152683116:rep:doh67ztoxglixmihkitv AWS DMS 엔드포인트와 복제 작업에 대한 액세스를 제한하는 IAM 정책을 지정할 수도 있습니다. 다음 정책은 엔드포인트의 ARN을 사용하여 AWS DMS 엔드포인트에 대한 액세스를 제한합니다. "Version": "2012-10-17", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:endpoint:d6e37ybxtnhoa6xrqszcugx" ] 예를 들면, 엔드포인트의 ARN을 사용하는 정책이 적용 중일 때는 다음 명령이 실패합니다. $ aws dms delete-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:d6e37ybxtnhoa6xrqszcugx" A client error (AccessDeniedException) occurred when calling the DeleteEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:deleteendpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:d6e37ybxtnhoa6xrqszcugx $ aws dms modify-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:d6e37ybxtnhoa6xrqszcugx" A client error (AccessDeniedException) occurred when calling the ModifyEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:modifyendpoint on resource: arn:aws:dms:us-east-1:152683116:endpoint:d6e37ybxtnhoa6xrqszcugx 다음 정책은 작업의 ARN을 사용하여 AWS DMS 작업에 대한 액세스를 제한합니다. "Version": "2012-10-17", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "arn:aws:dms:us-east-1:152683116:task:uo3yr4n47dxh3att4ymwoit" ] 예를 들면, 작업의 ARN을 사용하는 정책이 적용 중일 때는 다음 명령이 실패합니다. 40
태그를 사용하여 액세스 제어 $ aws dms delete-replication-task --replication-task-arn "arn:aws:dms:us-east-1:152683116:task:uo3yr4n47dxh3att4ymwoit" A client error (AccessDeniedException) occurred when calling the DeleteReplicationTask operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:deletereplicationtask on resource: arn:aws:dms:us-east-1:152683116:task:uo3yr4n47dxh3att4ymwoit 태그를 사용하여 액세스 제어 AWS DMS는 추가 태그 지정 요구 사항 없이 고객 정의 정책에서 사용할 수 있는 공통 키-값 페어 집합을 정 의합니다. AWS DMS 리소스 태그 지정에 대한 자세한 내용은 AWS Database Migration Service에 리소스 태그 지정 (p. 306) 단원을 참조하십시오. 다음은 AWS DMS와 사용할 수 있는 표준 태그 목록입니다. aws:currenttime 임시 기준에 따라 액세스 제한을 허용하는 요청 날짜 및 시간을 나타냅니다. aws:epochtime 이 태그는 위의 aws:currenttime 태그와 비슷하지만, 현재 시간이 Unix epoch 이후에 경과된 초 시간으로 표시됩니다. aws:multifactorauthpresent 요청이 멀티 팩터 인증을 통해 서명되었는지 여부를 나타내는 부울 태그입 니다. aws:multifactorauthage 멀티 팩터 인증 토큰의 수명(초)에 액세스할 수 있습니다. aws:principaltype - 현재 요청에 대한 보안 주체 유형(사용자, 계정, 연합된 사용자 등)에 액세스할 수 있습 니다. aws:sourceip - 요청을 실행하는 사용자의 원본 IP 주소를 나타냅니다. aws:useragent 리소스를 요청하는 클라이언트 애플리케이션에 대한 정보를 제공합니다. aws:userid 요청을 실행하는 사용자의 ID에 액세스할 수 있습니다. aws:username 요청을 실행하는 사용자의 이름에 액세스할 수 있습니다. dms:instanceclass 복제 인스턴스 호스트의 컴퓨팅 크기에 액세스할 수 있습니다. dms:storagesize - 스토리지 볼륨 크기(GB)에 액세스할 수 있습니다. 고유한 태그를 정의할 수도 있습니다. 고객이 정의한 태그는 AWS 태깅 서비스에서 지속되는 단순한 키-값 페어입니다. 이러한 키-값 페어를 복제 인스턴스, 엔드포인트 및 작업을 비롯한 AWS DMS 리소스에 추가할 수 있습니다. 이러한 태그는 정책의 IAM "조건"문을 사용하여 일치되며 특정 조건 태그를 사용하여 참조됩니 다. 태그 키에는 "dms" 접두사, 리소스 유형 및 "tag" 접두사가 붙습니다. 태그 형식은 다음과 같습니다. dms:resource type-tag/tag key=tag value 예를 들어 "stage=production" 태그를 포함하는 복제 인스턴스에 대해 API 호출 성공만 허용하는 정책을 정 의하려 한다고 가정해 보겠습니다. 다음 조건문은 리소스와 지정된 태그를 일치시킵니다. "Condition": "streq": "dms:rep-tag/stage":"production" 이 정책 조건과 일치하는 복제 인스턴스에 다음 태그를 추가합니다. 41
태그를 사용하여 액세스 제어 stage production AWS DMS 리소스에 이미 할당된 태그 외에, 지정된 리소스에 적용할 수 있는 태그 키와 값을 제한할 정책을 작성할 수도 있습니다. 이 경우 태그 접두사는 "req"입니다. 예를 들면, 다음 정책문은 사용자가 지정된 리소스에 할당할 수 있는 태그를 특정 허용 값 목록으로 제한합니 다. "Condition": "streq": "dms:req-tag/stage": [ "production", "development", "testing" ] 다음 정책 예제는 리소스 태그에 따라 AWS DMS 리소스에 대한 액세스를 제한합니다. 다음 정책은 태그 값이 "Desktop"이고 태그 키가 "Env"인 복제 인스턴스에 대한 액세스를 제한합니다. "Version": "2012-10-17", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": "StringEquals": "dms:rep-tag/env": [ "Desktop" ] ] 다음 명령은 태그 값이 "Desktop"이고 태그 키가 "Env"일 때 액세스를 제한하는 IAM 정책에 따라 성공하거나 실패합니다. $ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46dhou7jojyojxwdoznfen --endpoint-url http://localhost:8000 "TagList": [ "Value": "Desktop", "Key": "Env" ] $ aws dms delete-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:46dhou7jojyojxwdoznfen" A client error (AccessDeniedException) occurred when calling the DeleteReplicationInstance 42
태그를 사용하여 액세스 제어 operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:deletereplicationinstance on resource: arn:aws:dms:useast-1:152683116:rep:46dhou7jojyojxwdoznfen $ aws dms modify-replication-instance --replication-instance-arn "arn:aws:dms:us-east-1:152683116:rep:46dhou7jojyojxwdoznfen" A client error (AccessDeniedException) occurred when calling the ModifyReplicationInstance operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:modifyreplicationinstance on resource: arn:aws:dms:useast-1:152683116:rep:46dhou7jojyojxwdoznfen $ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46dhou7jojyojxwdoznfen --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:addtagstoresource on resource: arn:aws:dms:useast-1:152683116:rep:46dhou7jojyojxwdoznfen $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:rep:46dhou7jojyojxwdoznfen --tag-keys Env A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:removetagsfromresource on resource: arn:aws:dms:useast-1:152683116:rep:46dhou7jojyojxwdoznfen 다음 정책은 태그 값이 "Desktop"이고 태그 키가 "Env"인 AWS DMS 엔드포인트에 대한 액세스를 제한합니 다. "Version": "2012-10-17", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": "StringEquals": "dms:endpoint-tag/env": [ "Desktop" ] ] 다음 명령은 태그 값이 "Desktop"이고 태그 키가 "Env"일 때 액세스를 제한하는 IAM 정책에 따라 성공하거나 실패합니다. $ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:j2yczpngolfy52344izwa6i 43
태그를 사용하여 액세스 제어 "TagList": [ "Value": "Desktop", "Key": "Env" ] $ aws dms delete-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:j2yczpngolfy52344izwa6i" A client error (AccessDeniedException) occurred when calling the DeleteEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:deleteendpoint on resource: arn:aws:dms:useast-1:152683116:endpoint:j2yczpngolfy52344izwa6i $ aws dms modify-endpoint --endpoint-arn "arn:aws:dms:us-east-1:152683116:endpoint:j2yczpngolfy52344izwa6i" A client error (AccessDeniedException) occurred when calling the ModifyEndpoint operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:modifyendpoint on resource: arn:aws:dms:useast-1:152683116:endpoint:j2yczpngolfy52344izwa6i $ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:j2yczpngolfy52344izwa6i --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:addtagstoresource on resource: arn:aws:dms:useast-1:152683116:endpoint:j2yczpngolfy52344izwa6i $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:endpoint:j2yczpngolfy52344izwa6i --tag-keys Env A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:removetagsfromresource on resource: arn:aws:dms:useast-1:152683116:endpoint:j2yczpngolfy52344izwa6i 다음 정책은 태그 값이 "Desktop"이고 태그 키가 "Env"인 복제 작업에 대한 액세스를 제한합니다. "Version": "2012-10-17", "Statement": [ "Action": [ "dms:*" ], "Effect": "Deny", "Resource": "*", "Condition": "StringEquals": "dms:task-tag/env": [ "Desktop" ] ] 44
암호화 키 설정 다음 명령은 태그 값이 "Desktop"이고 태그 키가 "Env"일 때 액세스를 제한하는 IAM 정책에 따라 성공하거나 실패합니다. $ aws dms list-tags-for-resource --resource-name arn:aws:dms:us-east-1:152683116:task:rb7n24j2xbups3rfabztg3 "TagList": [ "Value": "Desktop", "Key": "Env" ] $ aws dms delete-replication-task --replication-task-arn "arn:aws:dms:us-east-1:152683116:task:rb7n24j2xbups3rfabztg3" A client error (AccessDeniedException) occurred when calling the DeleteReplicationTask operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:deletereplicationtask on resource: arn:aws:dms:useast-1:152683116:task:rb7n24j2xbups3rfabztg3 $ aws dms add-tags-to-resource --resource-name arn:aws:dms:us-east-1:152683116:task:rb7n24j2xbups3rfabztg3 --tags Key=CostCenter,Value=1234 A client error (AccessDeniedException) occurred when calling the AddTagsToResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:addtagstoresource on resource: arn:aws:dms:useast-1:152683116:task:rb7n24j2xbups3rfabztg3 $ aws dms remove-tags-from-resource --resource-name arn:aws:dms:us-east-1:152683116:task:rb7n24j2xbups3rfabztg3 --tag-keys Env A client error (AccessDeniedException) occurred when calling the RemoveTagsFromResource operation: User: arn:aws:iam::152683116:user/dmstestusr is not authorized to perform: dms:removetagsfromresource on resource: arn:aws:dms:useast-1:152683116:task:rb7n24j2xbups3rfabztg3 암호화 키 설정 및 KMS 권한 지정 AWS DMS는 복제 인스턴스와 엔드포인트 연결 정보에서 사용하는 스토리지를 암호화합니다. 복제 인스턴 스에서 사용하는 스토리지를 암호화하기 위해 AWS DMS는 AWS 계정에 고유한 AWS Key Management Service(AWS KMS) 키를 사용합니다. AWS KMS에서 이 키를 보고 관리할 수 있습니다. 계정의 기본 KMS 키(aws/dms)를 사용하거나 사용자 지정 KMS 키를 생성할 수 있습니다. 기존 KMS 키가 있는 경우, 암호화 에 이 키를 사용할 수도 있습니다. 기본 KMS 키(aws/dms)를 생성하려면 먼저 복제 인스턴스를 시작하고 복제 인스턴스 생성 페이지의 고급 단원에서 사용자 지정 KMS 마스터 키를 선택해서는 안 됩니다. 기본 KMS 키를 사용할 경우, 마 이그레이션을 위해 사용 중인 IAM 사용자 계정에 부여해야 하는 유일한 권한은 kms:listaliases와 kms:describekey입니다. 기본 KMS 키 사용에 대한 자세한 정보는 AWS DMS 사용에 필요한 IAM 권 한 (p. 32) 섹션을 참조하십시오. 사용자 지정 KMS 키를 사용하려면 다음 옵션 중 하나를 사용하여 사용자 지정 KMS 키에 대한 권한을 할당 해야 합니다. 45
네트워크 보안 KMS 사용자 지정 키에서 키 관리자 또는 키 사용자로서 마이그레이션에 사용되는 IAM 사용자 계정을 추 가합니다. 이렇게 하면 필요한 KMS 권한을 IAM 사용자 계정에 부여하도록 보장됩니다. 이 작업은 AWS DMS를 사용하기 위해 사용자가 IAM 사용자 계정에 부여하는 IAM 권한 외의 것입니다. 주요 사용자에게 권한을 부여하는 방법에 대한 자세한 내용은 AWS Key Management Service Developer Guide에서 키 사 용자가 CMK를 사용하도록 허용 단원을 참조하십시오. 사용자 지정 KMS 키에서 IAM 사용자 계정을 키 관리자/키 사용자로서 추가하지 않을 경우, AWS DMS를 사용할 수 있도록 IAM 사용자 계정에 부여해야 하는 IAM 권한에 다음 추가 권한을 부여해야 합니다. "Effect": "Allow", "Action": [ "kms:listaliases", "kms:describekey", "kms:creategrant", "kms:encrypt", "kms:reencrypt*" ], "Resource": "*" AWS DMS에서는 KMS 키 별칭을 사용할 수 없습니다. 그러나 KMS 키 정보를 지정할 때 KMS 키의 Amazon 리소스 이름(ARN)을 사용할 수 있습니다. 자체 키를 생성하고 KMS 키에 대한 액세스 권한을 사용자에게 부 여하는 방법에 대한 자세한 내용은 KMS 개발자 안내서를 참조하십시오. KMS 키 식별자를 지정하지 않으면 AWS DMS에서 기본 암호화 키를 사용합니다. AWS DMS에서는 AWS 계 정을 위한 기본 암호화 키를 생성합니다. AWS 계정에는 AWS 지역마다 다른 기본 암호화 키가 있습니다. AWS DMS 리소스를 암호화하는 데 사용되는 KMS 키를 관리하려면, KMS를 사용합니다. AWS Management 콘솔에서 KMS를 찾으려면 콘솔 홈 페이지에서 자격 증명 및 액세스 관리를 선택한 후 탐색 창 에서 암호화 키를 선택합니다. KMS는 클라우드에 맞게 확장된 키 관리 시스템을 제공하기 위해 안전하고 가 용성 높은 하드웨어 및 소프트웨어를 결합합니다. KMS를 사용하면 암호화 키를 생성하고 이 키를 사용할 수 있는 방법을 제어하는 정책을 정의할 수 있습니다. KMS는 AWS CloudTrail를 지원하므로 키가 적절하게 사 용되고 있는지 확인하기 위해 키 사용을 감사할 수 있습니다. KMS 키는 AWS DMS 및 지원되는 AWS 서비 스(예: Amazon RDS, Amazon S3, Amazon Redshift, Amazon EBS)와 함께 사용할 수 있습니다. 또한 특히 다음 AWS DMS 엔드포인트에 대한 대상 데이터를 암호화하기 위해 사용자 지정 KMS 키를 생성 할 수 있습니다. Amazon Redshift 자세한 내용은 Amazon Redshift 대상 데이터 암호화를 위한 AWS KMS 키 생성 및 사 용 (p. 163) 단원을 참조하십시오. Amazon S3 자세한 내용은 AWS KMS 키를 생성하여 Amazon S3 대상 객체 암호화 (p. 181) 단원을 참 조하십시오. KMS 키를 사용하여 AWS DMS 리소스를 생성한 후에는 이 리소스에서 암호화 키를 변경할 수 없습니다. AWS DMS 리소스를 생성하기 전에 암호화 키 요구 사항을 결정해야 합니다. AWS Database Migration Service 네트워크 보안 AWS Database Migration Service를 사용할 때 생성하는 네트워크의 보안 요구 사항은 네트워크 구성 방법에 따라 달라집니다. AWS DMS의 네트워크 보안에 적용되는 일반 규칙은 다음과 같습니다. 복제 인스턴스에는 리소스 및 대상 엔드포인트에 대한 액세스 권한이 있어야 합니다. 복제 인스턴스용 보 안 그룹에는 데이터베이스 포트에서 밖으로 데이터베이스 엔드포인트까지 인스턴스를 내보내도록 허용하 는 네트워크 ACL 또는 규칙이 있어야 합니다. 46
SSL 사용 데이터베이스 엔드포인트에는 복제 인스턴스에서 수신되는 액세스를 허용하는 네트워크 ACL과 보안 그 룹 규칙이 포함되어야 합니다. 이 작업을 완료하기 위해 사용자의 구성에 따라 복제 인스턴스의 보안 그룹, 프라이빗 IP 주소, 퍼블릭 IP 주소 또는 NAT 게이트웨이의 퍼블릭 주소를 사용합니다. 네트워크에서 VPN 터널을 사용하는 경우, NAT 게이트웨이 역할을 하는 Amazon EC2 인스턴스는 복제 인 스턴스가 트래픽을 전송하도록 허용하는 규칙을 가진 보안 그룹을 사용해야 합니다. 기본적으로 AWS DMS 복제 인스턴스에서 사용하는 VPC 보안 그룹에는 모든 포트에서 0.0.0.0/0으로의 송 신을 허용하는 규칙이 있습니다. 이 보안 그룹을 수정하거나 자체 보안 그룹을 사용하는 경우, 각 데이터베이 스 포트에서 최소한 발신이 원본과 대상 엔드포인트에 허용되어야 합니다. 각 데이터베이스 마이그레이션에서 사용할 수 있는 네트워크를 구성할 때에는 다음 구체적인 보안 사항을 고 려해야 합니다. 하나의 VPC에 모든 데이터베이스 마이그레이션 구성 요소가 있는 구성 (p. 67) 엔드포인트에서 사 용되는 보안 그룹은 복제 인스턴스의 데이터베이스 포트에서 수신을 허용해야 합니다. 복제 인스턴스에서 사용하는 보안 그룹이 엔드포인트에 대한 수신이 있는지 확인하고, 그렇지 않으면 복제 인스턴스 액세스의 프라이빗 IP 주소를 허용하고 엔드포인트가 사용하는 보안 그룹에 규칙을 생성할 수 있습니다. VPC 2개를 사용한 구성 (p. 67) 복제 인스턴스에서 사용하는 보안 그룹에는 데이터베이스의 VPC 범 위와 DB 포트에 대한 규칙이 있어야 합니다. AWS Direct Connect 또는 VPN을 사용한 네트워크와 VPC 연결 구성 (p. 67) VPC에서 온프레미스 VPN으로 트래픽 전송을 허용하는 VPN 터널입니다. 이 구성에서 VPC에는 특정 IP 주소나 범위로 지정된 트래픽을 호스트로 전송하는 라우팅 규칙이 포함되어 있어 트래픽을 VPC에서 온프레미스 VPN으로 연결 할 수 있습니다. 이 경우에 트래픽을 복제 인스턴스의 프라이빗 IP 주소나 보안 그룹에서 NAT 인스턴스로 전송하도록 허용해야 하는 자체 보안 그룹 설정이 NAT 호스트에 적용되어 있습니다. 인터넷을 사용한 네트워크와 VPC 연결 구성 (p. 68) VPC 보안 그룹에는 트래픽을 VPC로 전달하지 않고 인터넷 게이트웨이로 전송하는 라우팅 규칙이 적용되어 있어야 합니다. 이 구성에서 엔드포인트와의 연결이 복제 인스턴스의 퍼블릭 IP 주소에서 오는 것으로 나타납니다. ClassicLink를 사용하여 VPC에 없는 Amazon RDS DB 인스턴스를 VPC에 있는 DB 인스턴스와 연결하여 구성 (p. 68) 원본 또는 대상 Amazon RDS DB 인스턴스가 VPC에 없고 보안 그룹을 VPC(복제 인스 턴스가 있음)와 공유하지 않을 경우, 프록시 서버를 설정하고 ClassicLink를 사용하여 원본과 대상 데이터 베이스를 연결할 수 있습니다. 소스 엔드포인트가 복제 인스턴스에서 사용되는 VPC의 외부에 있고 NAT 게이트웨이를 사용해서 단일 탄 력적 네트워크 인터페이스에 연결된 단일 탄력적 IP 주소를 사용하여 네트워크 주소 변환(NAT) 게이트웨 이를 구성할 수 있습니다. 그런 다음 이 탄력적 네트워크 인터페이스는 NAT 식별자(nat-#####)를 수신합 니다. VPC에 인터넷 게이트웨이가 아닌 해당 NAT 게이트웨이로의 기본 경로가 포함된 경우, 대신 복제 인 스턴스가 인터넷 게이트웨이의 퍼블릭 IP 주소를 사용하여 데이터베이스 엔드포인트에 접촉하는 것으로 나타납니다. 이 경우에 VPC 외부에 있는 데이터베이스 엔드포인트로의 수신은 복제 인스턴스의 퍼블릭 IP 주소가 아닌 NAT 주소의 수신을 허용해야 합니다. AWS Database Migration Service에서 SSL 사용 Secure Sockets Layer(SSL)을 사용하여 소스와 대상 엔드포인트 연결을 암호화할 수 있습니다. 이 작업을 위해 AWS DMS 관리 콘솔 또는 AWS DMS API를 사용하여 엔드포인트에 인증서를 할당할 수 있습니다. 또 한 AWS DMS 콘솔을 사용하여 인증서를 관리할 수도 있습니다. 모든 데이터베이스가 동일한 방식으로 SSL을 사용하는 것은 아닙니다. MySQL과 호환되는 Amazon Aurora 는 서버 이름 즉, SSL용 엔드포인트로서 클러스터에서 기본 인스턴스의 엔드포인트를 사용합니다. Amazon Redshift 엔드포인트는 이미 SSL 연결을 사용하므로 AWS DMS에서 설정한 SSL 연결이 필요하지 않습니다. Oracle 엔드포인트에서는 추가 단계가 필요합니다. 자세한 내용은 Oracle 엔드포인트용 SSL 지원 (p. 51) 섹션을 참조하십시오. 주제 AWS Database Migration Service에서 SSL을 사용할 때 적용되는 제한 사항 (p. 48) 47
AWS Database Migration Service에 서 SSL을 사용할 때 적용되는 제한 사항 인증서 관리 (p. 49) MySQL 호환, PostgreSQL 또는 SQL Server 엔드포인트에서 SSL 활성화 (p. 49) Oracle 엔드포인트용 SSL 지원 (p. 51) 인증서를 엔드포인트에 할당하기 위해 루트 인증서나 중간 CA 인증서 체인을 제공하여 루트(인증서 번들 로서)로 이어집니다. 즉, 이것은 엔드포인트에서 배포되는 서버 SSL 인증서에 서명하는 데 사용됩니다. 인 증서는 PEM 형식 X509 파일로만 허용됩니다. 인증서를 가져올 때에는 엔드포인트에서 인증서를 지정하 는 데 사용할 수 있는 Amazon 리소스 이름(ARN)을 수신합니다. Amazon RDS를 사용하는 경우, https:// s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem에 있는 Amazon RDS에서 제공하는 루트 CA와 인증서 번들을 다운로드할 수 있습니다. 여러 SSL 모드에서 선택하여 SSL 인증서 확인에 사용할 수 있습니다. none 연결이 암호화되지 않습니다. 이 옵션은 보안이 적용되지 않지만, 오버헤드를 줄여야 합니다. require CA 검증 없이 SSL(TLS)를 사용하여 연결이 암호화됩니다. 이 옵션은 보안이 강화되어 오버헤드 가 증가합니다. verify-ca 연결이 암호화됩니다. 이 옵션은 보안이 강화되어 오버헤드가 증가합니다. 이 옵션은 서버 인증 서를 확인합니다. verify-full 연결이 암호화됩니다. 이 옵션은 보안이 강화되어 오버헤드가 증가합니다. 이 옵션은 서버 인 증서를 확인하고 서버 호스트 이름이 인증서의 호스트 이름 속성과 일치하는지 확인합니다. 데이터베이스 엔드포인트에서 작동하지 않는 SSL 모드도 있습니다. 다음 표에는 각 데이터베이스 엔진별로 지원되는 SSL 모드가 나와 있습니다. DB 엔진 none [require] [verify-ca] [verify-full] MySQL/MariaDB/ Amazon Aurora MySQL 기본값 지원되지 않음 지원 지원 Microsoft SQL Server 기본값 지원 지원되지 않음 지원 PostgreSQL 기본값 지원 지원 지원 Amazon Redshift 기본값 SSL이 활성화되 지 않음 SSL이 활성화되 지 않음 SSL이 활성화되 지 않음 Oracle 기본값 지원되지 않음 지원 지원되지 않음 SAP ASE 기본값 SSL이 활성화되 지 않음 SSL이 활성화되 지 않음 지원 MongoDB 기본값 지원 지원되지 않음 지원 Db2 LUW 기본값 지원되지 않음 지원 지원되지 않음 AWS Database Migration Service에서 SSL을 사용할 때 적용되는 제한 사항 SSL과 Amazon Redshift 대상 엔드포인트 연결이 지원되지 않습니다. AWS DMS는 Amazon S3 버킷을 사 용하여 데이터를 Redshift 데이터베이스로 전송합니다. 이 전송은 기본적으로 Amazon Redshift로 암호화 됩니다. SSL이 활성화된 Oracle 엔드포인트를 통해 CDC 작업을 수행할 때 SQL 시간 초과가 발생할 수 있습니다. 이러한 문제가 있으면 CDC 카운터가 예상 수치를 반영하지 않으므로, 작업 설정의 48
인증서 관리 ChangeProcessingTuning 섹션에서 MinimumTransactionSize 파라미터를 낮은 값(100만큼 낮은 값으로 시작)으로 설정합니다. MinimumTransactionSize 파라미터에 대한 자세한 내용은 변경 처리 튜 닝 설정 (p. 245)을 참조하십시오. 인증서는.PEM and.sso(oracle wallet) 형식으로만 가져올 수 있습니다. 서버 SSL 인증서가 중간 CA로 서명되는 경우, 중간 CA에서 루트 CA로 이어지는 전체 인증서 체인이 단 일.PEM file로 가져오는지 확인해야 합니다. 서버에서 자체 서명 인증서를 사용하는 경우, SSL 모드로서 [require]를 선택합니다. [require] SSL 모드는 서버의 SSL 인증서를 명시적으로 신뢰하고 이 인증서가 CA에서 서명되었는지 여부를 확인하려고 하지 않 습니다. 인증서 관리 DMS 콘솔을 사용하여 SSL 인증서를 보고 관리할 수 있습니다. 또한 DMS 콘솔을 사용하여 인증서를 가져올 수도 있습니다. MySQL 호환, PostgreSQL 또는 SQL Server 엔드포인 트에서 SSL 활성화 새로 생성한 엔드포인트 또는 기존 엔드포인트에 SSL 연결을 추가할 수 있습니다. SSL을 통해 AWS DMS 엔드포인트를 생성하려면 1. AWS Management Console에 로그인하고 AWS Database Migration Service을 선택합니다. Note AWS IAM(Identity and Access Management) 사용자로 로그인한 경우에는 AWS DMS에 액세 스하기 위한 적절한 권한이 있어야 합니다. 데이터베이스 마이그레이션에 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 (p. 32)를 참조하십시오. 2. 탐색 창에서 [Certificates]를 선택합니다. 3. [Import Certificate]를 선택합니다. 4. 엔드포인트와의 연결을 암호화하는 데 사용할 인증서를 업로드합니다. 49
MySQL 호환, PostgreSQL 또는 SQL Server 엔드포인트에서 SSL 활성화 Note 데이터베이스 엔드포인트 생성 페이지에서 새 CA 인증서 추가를 선택하여 엔드포인트를 생성 하거나 수정할 때 AWS DMS 콘솔을 사용하여 인증서를 업로드할 수도 있습니다. 5. 3단계: 원본과 대상 엔드포인트 지정 (p. 23) 섹션의 설명과 같이 엔드포인트를 생성합니다. 기존의 AWS DMS 엔드포인트를 수정하여 SSL을 사용하려면 1. AWS Management Console에 로그인하고 AWS Database Migration Service을 선택합니다. Note AWS IAM(Identity and Access Management) 사용자로 로그인한 경우에는 AWS DMS에 액세 스하기 위한 적절한 권한이 있어야 합니다. 데이터베이스 마이그레이션에 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 (p. 32)를 참조하십시오. 2. 탐색 창에서 [Certificates]를 선택합니다. 3. [Import Certificate]를 선택합니다. 4. 엔드포인트와의 연결을 암호화하는 데 사용할 인증서를 업로드합니다. Note 데이터베이스 엔드포인트 생성 페이지에서 새 CA 인증서 추가를 선택하여 엔드포인트를 생성 하거나 수정할 때 AWS DMS 콘솔을 사용하여 인증서를 업로드할 수도 있습니다. 5. 탐색 창에서 [Endpoints]를 선택하고, 수정할 엔드포인트를 선택하고, [Modify]를 선택합니다. 6. [SSL mode]를 선택합니다. verify-ca 또는 verify-full 모드를 선택할 경우, 다음과 같이 사용할 CA 인증서를 지정해야 합니다. 50
Oracle 엔드포인트용 SSL 지원 7. 8. [Modify]를 선택합니다. 엔드포인트를 수정할 때 엔드포인트를 선택하고 [Test connection]을 선택하여 SSL 연결이 잘 작동하는 지 여부를 확인합니다. 소스와 대상 엔드포인트를 생성한 후 이 엔드포인트를 사용하는 작업을 생성합니다. 작업 생성 방법에 대한 자세한 내용은 4단계: 작업 생성 (p. 26)를 참조하십시오. Oracle 엔드포인트용 SSL 지원 AWS DMS의 Oracle 엔드포인트는 none 및 verify-ca SSL 모드를 지원합니다. Oracle 엔드포인트에서 SSL을 사용하려면,.pem 인증서 파일이 아닌 엔드포인트용 Oracle wallet을 업로드해야 합니다. 주제 Oracle SSL용 기존 인증서 사용 (p. 51) Oracle SSL용 자체 서명 인증서 사용 (p. 52) Oracle SSL용 기존 인증서 사용 기존 Oracle 클라이언트 설치를 사용하여 CA 인증서 파일에서 Oracle wallet 파일을 생성하려면, 다음 단계 를 진행합니다. AWS DMS에서 Oracle SSL에 대해 기존 Oracle 클라이언트 설치를 사용하려면 1. 다음 명령을 실행하여 ORACLE_HOME 시스템 변수를 dbhome_1 디렉터리의 위치로 설정합니다. 51
Oracle 엔드포인트용 SSL 지원 prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1 2. LD_LIBRARY_PATH 시스템 변수에 $ORACLE_HOME/lib를 추가합니다. prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib 3. $ORACLE_HOME/ssl_wallet에 Oracle Wallet을 위한 디렉터리를 만듭니다. prompt>mkdir $ORACLE_HOME/ssl_wallet 4. CA 인증서.pem 파일을 ssl_wallet 디렉터리에 배치합니다. Amazon RDS 고객은 https:// s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem에서 RDS CA 인증서를 다운로드할 수 있습 니다. 5. 다음 명령을 실행하여 Oracle Wallet을 만듭니다. prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert cert $ORACLE_HOME/ssl_wallet/ca-cert.pem -auto_login_only 이전 단계를 완료했으면, certificate-wallet 매개변수를 지정하여 ImportCertificate API를 사용하여 wallet 파 일을 가져올 수 있습니다. 그런 다음 Oracle 엔드포인트를 생성하거나 수정할 때 SSL 모드로서 verifyca를 선택하면 가져온 wallet 인증서를 사용할 수 있습니다. Note Oracle wallet은 바이너리 파일입니다. AWS DMS는 이 파일을 있는 그대로 수용합니다. Oracle SSL용 자체 서명 인증서 사용 Oracle SSL용 자체 서명 인증서를 사용하려면, 다음 작업을 수행합니다. AWS DMS에서 Oracle SSL용 자체 서명 인증서를 사용하려면 1. 자체 서명 인증서를 사용할 디렉터리를 생성합니다. mkdir <SELF_SIGNED_CERT_DIRECTORY> 2. 이전 단계에서 생성한 디렉터리로 변경합니다. cd <SELF_SIGNED_CERT_DIRECTORY> 3. 루트 키를 생성합니다. openssl genrsa -out self-rootca.key 2048 52
Oracle 엔드포인트용 SSL 지원 4. 이전 단계에서 생성한 루트 키를 루트 인증서를 자체 서명합니다. openssl req -x509 -new -nodes -key self-rootca.key -sha256 -days 1024 -out self-rootca.pem 5. Oracle 데이터베이스용 Oracle wallet 디렉터리를 만듭니다. mkdir $ORACLE_HOME/self_signed_ssl_wallet 6. 새 Oracle wallet을 만듭니다. orapki wallet create -wallet $ORACLE_HOME/self_signed_ssl_wallet -pwd <password> -auto_login_local 7. 루트 인증서를 Oracle wallet에 추가합니다. orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -trusted_cert -cert self-rootca.pem -pwd <password> 8. Oracle wallet의 콘텐츠를 나열합니다. 이 목록에는 루트 인증서가 포함되어야 합니다. orapki wallet display -wallet $ORACLE_HOME/self_signed_ssl_wallet 9. ORAPKI 유틸리티를 사용한 인증서 서명 요청(CSR)을 생성합니다. orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -dn "CN=dms" -keysize 2048 -sign_alg sha256 -pwd <password> 10. 다음 명령을 실행합니다. openssl pkcs12 -in ewallet.p12 -nodes -out nonoracle_wallet.pem 11. 'dms'를 일반 이름으로 둡니다. openssl req -new -key nonoracle_wallet.pem -out certrequest.csr 12. 인증서 서명을 가져옵니다. openssl req -noout -text -in self-signed-oracle.csr grep -i signature 13. 12단계의 출력이 sha256withrsaencryption이면 다음 코드를 실행합니다. openssl x509 -req -in self-signed-oracle.csr -CA self-rootca.pem -CAkey self-rootca.key -CAcreateserial -out self-signed-oracle.crt -days 365 -sha256 14. 12단계의 출력이 md5withrsaencryption이면 다음 코드를 실행합니다. openssl x509 -req -in certrequest.csr -CA self-rootca.pem -CAkey self-rootca.key -CAcreateserial -out certrequest.crt -days 365 -sha256 15. 인증서를 wallet에 추가합니다. orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -user_cert -cert certrequest.crt -pwd <password> 53
Oracle 엔드포인트용 SSL 지원 16. sqlnet.ora 파일($ORACLE_HOME/network/admin/sqlnet.ora)을 구성합니다. WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_HOME>/self_signed_ssl_wallet) ) ) SQLNET.AUTHENTICATION_SERVICES = (NONE) SSL_VERSION = 1.0 SSL_CLIENT_AUTHENTICATION = FALSE SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) 17. Oracle 리스너를 중지합니다. lsnrctl stop 18. listener.ora 파일($ORACLE_HOME/network/admin/listener.ora)에서 SSL에 대한 항목을 추가합니다. SSL_CLIENT_AUTHENTICATION = FALSE WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = <ORACLE_HOME>/self_signed_ssl_wallet) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = <SID>) (ORACLE_HOME = <ORACLE_HOME>) (SID_NAME = <SID>) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(port = 1521)) (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(port = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) 19. tnsnames.ora 파일($ORACLE_HOME/network/admin/tnsnames.ora)을 구성합니다. <SID>= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(port = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) ) <SID>_ssl= (DESCRIPTION= 54
데이터베이스 암호 변경 ) (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(port = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) 20. Oracle 리스너를 다시 시작합니다. lsnrctl start 21. Oracle 리스너 상태를 표시합니다. lsnrctl status 22. sqlplus 및 SSL tnsnames 항목을 사용하여 로컬 호스트에서 데이터베이스와의 SSL 연결을 테스트합니 다. sqlplus -L <ORACLE_USER>@<SID>_ssl 23. SSL을 사용하여 잘 연결되었는지 확인합니다. SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') -------------------------------------------------------------------------------tcps 24. 자체 서명 인증서를 사용하여 디렉터리를 이 디렉터리로 변경합니다. cd <SELF_SIGNED_CERT_DIRECTORY> 25. AWS DMS가 사용할 새 클라이언트 Oracle wallet을 생성합니다. orapki wallet create -wallet./ -auto_login_only 26. Oracle wallet에 자체 서명 루트 인증서를 추가합니다. orapki wallet add -wallet./ -trusted_cert -cert rootca.pem -auto_login_only 27. AWS DMS가 사용할 Oracle wallet의 콘텐츠를 나열합니다. 이 목록에는 자체 서명 루트 인증서가 포함 되어야 합니다. orapki wallet display -wallet./ 28. 방금 생성한 Oracle wallet을 AWS DMS에 업로드합니다. 데이터베이스 암호 변경 대다수의 경우에 소스 또는 대상 엔드포인트에서 데이터베이스 암호를 쉽게 변경할 수 있습니다. 마이그레이 션이나 복제 작업에 현재 사용하고 있는 엔드포인트의 데이터베이스 암호를 변경해야 하는 경우, 이 과정은 약간 더 복잡합니다. 다음 절차에서는 이 작업을 수행하는 방법을 보여 줍니다. 55
데이터베이스 암호 변경 마이그레이션이나 복제 작업에 현재 사용하고 있는 엔드포인트의 데이터베이스 암호를 변경하려면 1. 2. AWS Management Console에 로그인하고 AWS DMS을 선택합니다. AWS Identity and Access Management(IAM) 사용자로서 로그인한 경우에는 AWS DMS 액세스를 위한 적절한 권한이 있어야 합 니다. 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 (p. 32) 섹션을 참조하 십시오. 탐색 창에서 [Tasks]를 선택합니다. 3. 변경하려는 엔드포인트를 사용하는 작업을 선택하여 데이터베이스 암호를 변경한 후 [Stop]을 선택합니 다. 4. 작업을 중지한 동안 데이터베이스에서 사용하는 기본 도구를 사용하여 엔드포인트의 데이터베이스 암 호를 변경할 수 있습니다. 5. DMS 관리 콘솔로 돌아가 탐색 창에서 [Endpoints]를 선택합니다. 6. 7. 암호를 변경할 데이터베이스의 엔드포인트를 선택하고 나서 [Modify]를 선택합니다. [Password] 상자에 새 암호를 입력하고 나서 [Modify]를 선택합니다. 8. 탐색 창에서 [Tasks]를 선택합니다. 9. 이전에 중지한 작업을 선택하고 [Start/Resume]을 선택합니다. 10. 작업을 계속할 방법에 따라 [Start] 또는 [Resume]를 선택하고 나서 [Start task]를 선택합니다. 56
AWS Database Migration Service 제한 사항 AWS Database Migration Service 제 한 사항 다음은 AWS Database Migration Service(AWS DMS)의 리소스 제한과 각 제약 조건의 명명 방법에 대해 설 명합니다. AWS DMS가 마이그레이션할 수 있는 최대 데이터베이스 크기는 소스 환경, 소스 데이터베이스에서 데이터 배포, 소스 시스템의 사용 빈도에 따라 다를 수 있습니다. 특정 시스템이 AWS DMS에 알맞은지 여부를 판단 하는 최선의 방법은 테스트해 보는 것입니다. 천천히 시작하여 구성이 작동하도록 한 후 복합 객체를 추가하 고, 마지막으로 테스트로서 전체 로드를 시도합니다. AWS Database Migration Service 제한 사항 AWS 계정은 리전마다 생성할 수 있는 AWS DMS 리소스 수에 제한이 있습니다. 리소스가 제한 값에 이르면 리소스 생성을 위한 추가 호출이 예외적으로 중단됩니다. 스토리지의 6TB 제한은 DMS 복제 인스턴스에 적용됩니다. 이는 대상이 원본을 유지하고 로그 정보를 저장 할 수 없는 경우에 이 스토리지는 변경 사항을 캐시하는 데 사용됩니다. 이 제한은 대상 크기에 적용되지 않 고, 대상 엔드포인트는 6TB 이상일 수 있습니다. 다음 표는 각 리전의 AWS DMS 리소스와 그 제한을 나타냅니다. 리소스 기본 한도 복제 인스턴스 20 총 스토리지 양 6TB 이벤트 구독 20 복제 서브넷 그룹 20 복제 서브넷 그룹당 서브넷 20 엔드포인트 100 작업 200 인스턴스당 엔드포인트 20 57
AWS DMS 복제 인스턴스 작업 사용 AWS DMS 복제 인스턴스를 생성하는 경우 AWS DMS는 Amazon Elastic Compute Cloud(Amazon EC2) 서 비스 기반 VPC에 있는 Amazon Virtual Private Cloud(Amazon VPC) 인스턴스에 복제 인스턴스를 생성합니 다. 이 복제 인스턴스를 사용하여 데이터베이스 마이그레이션을 수행합니다. 복제 인스턴스는 [Multi-AZ] 옵 션을 선택할 때 다중 AZ 배포를 사용하여 고가용성과 장애 조치를 지원합니다. 다중 AZ 배포에서 AWS DMS는 자동으로 서로 다른 가용 영역에 복제 인스턴스의 동기식 예비 복제본을 프 로비저닝하고 유지합니다. 기본 복제 인스턴스는 가용 영역 전체에서 대기 복제본으로 동기식으로 복제됩니 다. 이 접근 방식에서는 데이터 중복을 제공하고 I/O 중지를 없애며 지연 시간 스파이크를 최소화합니다. AWS DMS에서는 사용자의 원본 데이터 스토어에 연결되는 복제 인스턴스를 사용하고 원본 데이터를 읽으 며 대상 데이터 스토어에서 소모할 수 있도록 데이터 형식을 지정합니다. 복제 인스턴스는 또한 데이터를 대 상 데이터 스토어에 로드합니다. 이 절차 대다수는 메모리에서 진행됩니다. 그렇지만, 대규모 트랜잭션은 디 스크에서 일부 버퍼링이 필요할 수 있습니다. 캐시된 트랜잭션과 로그 파일도 디스크에 기록됩니다. 다음 AWS 리전에서 AWS DMS 복제 인스턴스를 생성할 수 있습니다. 리전 이름 아시아 태평양(도쿄) 리전 ap-northeast-1 아시아 태평양(서울) 리전 ap-northeast-2 아시아 태평양(뭄바이) 리전 ap-south-1 아시아 태평양(싱가포르) 리전 ap-southeast-1 아시아 태평양(시드니) 리전 ap-southeast-2 캐나다(중부) 리전 ca-central-1 EU(프랑크푸르트) 리전 eu-central-1 EU(아일랜드) 지역 eu-west-1 EU(런던) 리전 eu-west-2 남아메리카(상파울루) 리전 sa-east-1 미국 동부(버지니아 북부) 지역 us-east-1 미국 동부(오하이오) 리전 us-east-2 미국 서부(캘리포니아 북부) 리전 us-west-1 미국 서부(오레곤) 지역 us-west-2 58
복제 인스턴스에 대한 자세한 설명 AWS DMS는 미국 정부 기관 및 고객이 더욱 민감한 워크로드를 클라우드로 이전하도록 설계된 AWS GovCloud(US)라는 특별한 AWS 리전을 지원합니다. AWS GovCloud(US)는 미국 정부의 규제 및 규정 준수 요구 사항을 충족합니다. AWS GovCloud(US)에 대한 자세한 내용은 AWS GovCloud(US)란 무엇입니까?를 참조하십시오. 아래에서 복제 인스턴스에 대한 자세한 정보를 확인할 수 있습니다. 주제 마이그레이션에 적합한 AWS DMS 복제 인스턴스 선택 (p. 59) 퍼블릭 및 프라이빗 복제 인스턴스 (p. 61) AWS DMS 유지 관리 (p. 61) 복제 엔진 버전 작업 (p. 64) 복제 인스턴스용으로 네트워크 설정 (p. 66) 복제 인스턴스의 암호화 키 설정 (p. 72) 복제 인스턴스 생성 (p. 73) 복제 인스턴스 수정 (p. 77) 복제 인스턴스 재부팅 (p. 79) 복제 인스턴스 삭제 (p. 81) AWS DMS에 의해 지원되는 DDL 문 (p. 82) 마이그레이션에 적합한 AWS DMS 복제 인스턴스 선택 AWS DMS는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 복제 인스턴스를 생성합니다. AWS DMS는 현재 다음과 같이 복제 인스턴스에 대해 T2, C4 및 R4 Amazon EC2 인스턴스 클래스를 지원합 니다. T2 인스턴스 클래스는 기본 수준의 CPU 성능을 발휘하면서 기본 수준 이상으로 버스트하는 기능을 제공 하도록 설계된 저렴한 표준 인스턴스입니다. 이 클래스들은 데이터베이스 마이그레이션 프로세스를 개발, 구성, 테스트하는 데 적합합니다. 또한 CPU 버스트 기능의 이점을 활용할 수 있는 주기적인 데이터 마이그 레이션 작업에도 좋습니다. C4 인스턴스 클래스는 컴퓨터 집약적인 워크로드에 최고 수준의 프로세서 성능을 제공하도록 설계되었습 니다. 이에 따라 PPS(Packet Per Second) 성능이 크게 높아지고, 네트워크 지터 및 지연 시간은 낮아졌습 니다. AWS DMS는 CPU 집약적일 수 있는데, 특히 Oracle에서 PostgreSQL로 마이그레이션하는 것과 같 이 다른 유형의 마이그레이션 및 복제를 수행할 때 그렇습니다. C4 인스턴스는 이러한 상황에서 훌륭한 선 택이 될 수 있습니다. R4 인스턴스 클래스는 메모리 집약적 워크로드에 최적화된 메모리입니다. DMS를 사용한 고처리량 트랜 잭션 시스템의 지속적 마이그레이션 또는 복제 작업에서는 때로 많은 양의 CPU 및 메모리를 소비할 수 있 습니다. R4 인스턴스에는 vcpu당 더 많은 메모리가 포함되어 있습니다. 각 복제 인스턴스에는 특정 메모리 및 vcpu 구성이 있습니다. 다음 표에는 각 복제 인스턴스 유형별 구성이 나와 있습니다. 요금에 관한 정보는 AWS Database Migration Service 요금 페이지를 참조하십시오. 복제 인스턴스 유형 vcpu 메모리(GB) dms.t2.micro 1 1 dms.t2.small 1 2 범용 59
복제 인스턴스에 대한 자세한 설명 복제 인스턴스 유형 vcpu 메모리(GB) dms.t2.medium 2 4 dms.t2.large 2 8 dms.c4.large 2 3.75 dms.c4.xlarge 4 7.5 dms.c4.2xlarge 8 15 dms.c4.4xlarge 16 30 dms.r4.large 2 15.25 dms.r4.xlarge 4 30.5 dms.r4.2xlarge 8 61 dms.r4.4xlarge 16 122 dms.r4.8xlarge 32 244 컴퓨팅 최적화 메모리 최적화 해당 마이그레이션에 어떤 복제 인스턴스 클래스가 가장 잘 작동할지 판단하는 데 도움이 되도록 AWS DMS 복제 인스턴스에서 사용하는 변경 데이터 캡처(CDC) 프로세스를 살펴보겠습니다. 사용자가 전체 로드 및 CDC 작업(대량 로드 및 지속적 복제)를 실행 중이라고 가정해 봅시다. 이 경우 해당 작업에는 자체 SQLite 리포지토리가 있어 메타데이터 및 기타 정보를 저장할 수 있습니다. AWS DMS가 전 체 로드를 시작하기 전에 다음과 같은 작업이 단계적으로 이루어집니다. AWS DMS는 자신이 소스 엔진의 트랜잭션 로그에서 마이그레이션하고 있는 테이블에 대해 변경 사항을 캡처하기 시작합니다(이를 가리켜 캐시된 변경 사항이라고 함). 전체 로드가 완료되고 나면 이러한 캐시된 변경 사항이 수집되어 대상에 적용됩니다. 캐시된 변경 사항의 볼륨에 따라 이러한 변경 사항은 메모리로 부터 직접 적용될 수 있습니다. 이 경우 변경 사항은 적용되기 전에 먼저 설정된 임계값에 이를 때까지 수 집됩니다. 또는 디스크로부터 적용될 수 있습니다. 이 경우 변경 사항은 메모리에 유지될 수 없을 때 기록 됩니다. 캐시된 변경 사항이 적용되고 나면 기본적으로 AWS DMS는 대상 인스턴스에서 트랜잭션 적용을 시작합 니다. 캐시된 변경 사항 적용 단계 및 지속적 복제 단계 중에 AWS DMS는 수신 및 발신 데이터에 하나씩, 도합 두 개의 스트림 버퍼를 사용합니다. 또한 AWS DMS에서는 또 다른 메모리 버퍼인 '분류기'라는 중요 구성 요소 를 사용합니다. 다음은 분류기 구성 요소의 두 가지 중요 용도입니다(다른 용도도 있음). 분류기는 모든 트랜잭션을 추적하고 발신 버퍼에 관련이 있는 트랜잭션만 전달합니다. 이를 통해 트랜잭션이 원본에서와 동일한 커밋 순서로 전달됩니다. 보시다시피 이와 같은 AWS DMS의 CDC용 아키텍처에는 세 가지 중요 메모리 버퍼가 있습니다. 이 버퍼 중 에 메모리 부족을 겪는 것이 있다면 해당 마이그레이션에는 장애를 유발할 가능성이 있는 성능 문제가 있을 수 있습니다. 초당 트랜잭션(TPS)이 높은 과중한 워크로드를 이 아키텍처에 플러깅하는 경우 R4 인스턴스에서 제공하는 추가 메모리가 유용할 수 있습니다. R4 인스턴스를 사용하여 메모리에 대규모 트랜잭션을 유지하고 지속적 복제 중에 메모리 부족 문제를 방지할 수 있습니다. 60
퍼블릭 및 프라이빗 복제 인스턴스 퍼블릭 및 프라이빗 복제 인스턴스 복제 인스턴스가 원본과 대상 데이터베이스에 연결하는 데 사용할 퍼블릭 또는 프라이빗 IP 주소 여부를 지 정할 수 있습니다. 프라이빗 복제 인스턴스에는 복제 네트워크 외부에서 액세스할 수 없는 프라이빗 IP 주소가 있습니다. 원본 과 대상 데이터베이스가 VPN, AWS Direct Connect 또는 VPC 피어링을 사용하여 복제 인스턴스의 VPC에 연결된 동일한 네트워크에 있는 경우 복제 인스턴스에는 프라이빗 IP 주소가 있어야 합니다. [VPC peering] 연결은 두 VPC가 동일한 네트워크에 있는 것처럼 각 VPC의 프라이빗 IP 주소를 사용하여 라 우팅을 지원하는 두 VPC 간 네트워크 연결입니다. VPC 피어링에 대한 자세한 내용은 Amazon VPC 사용 설 명서에서 VPC 피어링을 참조하십시오. AWS DMS 유지 관리 AWS DMS에서는 AWS DMS 리소스를 정기적으로 유지 관리합니다. 이러한 유지 관리에는 대개 복제 인스 턴스 또는 복제 인스턴스의 운영 체제(OS)에 대한 업데이트가 포함됩니다. AWS CLI 또는 AWS DMS API를 사용하여 유지 관리 기간을 관리하고 유지 관리 업데이트를 확인할 수 있습니다. AWS DMS 콘솔은 현재 이 작업에서 지원되지 않습니다. 유지 관리 항목에서는 AWS DMS가 잠시 복제 인스턴스를 오프라인 상태로 전환해야 합니다. 리소스가 오 프라인 상태에 있어야 하는 유지 관리에는 필수 운영 체제 또는 인스턴스 패칭이 포함됩니다. 이때 보안 및 인스턴스 안정성과 관련된 패치에 한해 필수 패치 작업으로 자동 예약됩니다. 이러한 패치 작업은 잦지는 않아서(수 개월에 한 번 또는 두 번 정도) 유지 관리 기간에 비하면 매우 적은 편입니다. [Auto minor version upgrade] 콘솔 옵션을 선택하여 마이너 버전 업데이트를 자동으로 적용되도록 할 수 있습니다. AWS DMS 유지 관리 기간 모든 AWS DMS 복제 인스턴스는 사용 가능한 시스템 변경 내용이 적용되는 주별 유지 관리 기간이 있습니 다. 유지 관리 기간은 수정 사항 및 소프트웨어 패치 적용 시점을 조절할 수 있는 기회로 생각하면 좋습니다. AWS DMS에서는 지정된 주 동안 유지 관리가 필요하다고 판단되는 경우 복제 인스턴스를 생성할 때 선택한 30분 유지 관리 기간 동안 유지 관리가 발생합니다. AWS DMS는 대부분 유지 관리를 30분의 유지 관리 기간 동안에 완료합니다. 단, 대규모 변경 사항의 경우 보다 긴 시간이 필요할 수 있습니다. 복제 인스턴스를 생성할 때 선택한 30분 유지 관리 기간은 AWS 리전당 할당된 8시간의 시간 블록에서 선택 됩니다. 복제 인스턴스 생성 시 기본 유지 관리 기간을 지정하지 않으면 AWS DMS에서 임의로 선택한 요일 에 이를 배정합니다. 다중 AZ 배포를 사용하는 복제 인스턴스의 경우, 유지 관리를 완료하려면 장애 조치가 필요할 수 있습니다. 다음 표에는 AWS DMS를 지원하는 AWS 리전별 유지 관리 기간이 나와 있습니다. 리전 시간 블록 아시아 태평양(시드니) 리전 12:00 20:00 UTC 아시아 태평양(도쿄) 리전 13:00 21:00 UTC 아시아 태평양(뭄바이) 리전 17:30 01:30 UTC 아시아 태평양(서울) 리전 13:00 21:00 UTC 아시아 태평양(싱가포르) 리전 14:00 22:00 UTC 61
AWS DMS 유지 관리 기간 리전 시간 블록 캐나다(중부) 리전 06:29 14:29 UTC EU(프랑크푸르트) 리전 23:00 07:00 UTC EU(아일랜드) 지역 22:00 06:00 UTC EU(런던) 리전 06:00 14:00 UTC 남아메리카(상파울루) 리전 00:00 08:00 UTC 미국 동부(버지니아 북부) 지 역 03:00 11:00 UTC 미국 동부(오하이오) 리전 03:00 11:00 UTC 미국 서부(캘리포니아 북부) 리전 06:00 14:00 UTC 미국 서부(오레곤) 지역 06:00 14:00 UTC AWS GovCloud(미국 서부) 06:00 14:00 UTC 유지 관리가 기존 마이그레이션 작업에 미치는 영향 AWS DMS 마이그레이션 작업이 인스턴스에서 실행 중인 경우 패치 적용 시 다음 이벤트가 발생합니다. 마이그레이션 작업의 테이블이 지속적인 변경 복제 단계(CDC)에 있는 경우 AWS DMS는 패치가 적용되 는 잠시 동안 작업을 일시 중지합니다. 그러고 나면 패치가 적용될 때 중단되었던 지점부터 마이그레이션 이 계속됩니다. 패치가 적용될 때 AWS DMS에서 테이블을 마이그레이션하고 있는 경우 AWS DMS는 테이블에 대한 마이 그레이션을 다시 시작합니다. 유지 관리 기간 설정 변경 AWS Management 콘솔, AWS CLI 또는 AWS DMS API를 사용하여 유지 관리 기간 프레임을 변경할 수 있 습니다. AWS 콘솔을 사용하여 유지 관리 기간 설정 변경 AWS Management 콘솔을 사용하여 유지 관리 기간 프레임을 변경할 수 있습니다. AWS 콘솔을 사용하여 기본 유지 관리 기간을 변경하려면 1. AWS Management 콘솔에 로그인하고 AWS DMS 선택을 수행합니다. 2. 탐색 창에서 [Replication instances]를 선택합니다. 3. [Modify]를 수정 및 선택할 복제 인스턴스를 선택합니다. 4. [Maintenance] 섹션을 확장하고 유지 관리 기간의 날짜 및 시간을 선택합니다. 62
AWS DMS 유지 관리 기간 5. 6. [Apply changes immediately]를 선택합니다. [Modify]를 선택합니다. CLI를 사용하여 유지 관리 기간 설정 변경 기본 유지 관리 기간을 조정하려면 AWS CLI modify-replication-instance 명령을 다음 파라미터와 함께 사용합니다. --replication-instance-identifier --preferred-maintenance-window Example 다음은 유지 관리 기간을 화요일 오전 4:00 4:30로 설정하는 AWS CLI 예제입니다. UTC 기준입니다. aws dms modify-replication-instance \ --replication-instance-identifier myrepinstance \ --preferred-maintenance-window Tue:04:00-Tue:04:30 API를 사용하여 유지 관리 기간 설정 변경 기본 유지 관리 기간을 조정하려면 AWS DMS API ModifyReplicationInstance 작업을 다음 파라미터 와 함께 사용합니다. ReplicationInstanceIdentifier = myrepinstance PreferredMaintenanceWindow = Tue:04:00-Tue:04:30 Example 다음은 유지 관리 기간을 화요일 오전 4:00 4:30로 설정하는 코드 예제입니다. UTC 기준입니다. https://dms.us-west-2.amazonaws.com/?action=modifyreplicationinstance &DBInstanceIdentifier=myrepinstance &PreferredMaintenanceWindow=Tue:04:00-Tue:04:30 &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request &X-Amz-Date=20140425T192732Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date 63
복제 엔진 버전 &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3 복제 엔진 버전 작업 복제 엔진은 복제 인스턴스에서 실행되어 마이그레이션 작업을 수행하는 코어 AWS DMS 소프트웨어입니 다. AWS는 새로운 기능과 성능 개선 사항을 포함하는 AWS DMS 복제 엔진 소프트웨어의 새 버전을 정기적 으로 릴리스합니다. 복제 엔진 소프트웨어의 각 버전마다 고유한 버전 번호가 있어서 버전 간에 구분됩니다. 새 복제 인스턴스를 시작할 때 별도로 지정하지 않는 경우 최신 AWS DMS 엔진 버전이 실행됩니다. 자세한 내용은 AWS DMS 복제 인스턴스 작업 사용 (p. 58) 단원을 참조하십시오. 현재 실행 중인 복제 인스턴스가 있는 경우 더 최신 엔진 버전으로 업그레이드할 수 있습니다(AWS DMS에 서는 엔진 버전 다운그레이드를 지원하지 않습니다). 자세한 내용은 복제 엔진 버전 목록을 비롯하여 다음 섹 션을 참조하십시오. 복제 인스턴스 버전 사용 중지 때때로 AWS DMS에서는 이전 버전의 복제 인스턴스를 사용하지 않습니다. 2018년 4월 2일부터 AWS DMS 에서 1.9.0 버전의 새로운 복제 인스턴스를 생성할 수 없습니다. 이 버전은 2016년 3월 15일 AWS DMS에서 처음 지원된 이후 기능, 보안 및 안정성 향상이 포함된 후속 버전으로 대체되었습니다. 2018년 8월 5일 0:00 UTC부터는 1.9.0 버전을 실행하는 모든 DMS 복제 인스턴스가 각 인스턴스에 지정된 유지 관리 기간 중에 사용 가능한 최신 버전으로 자동 업그레이드될 예정입니다. 그 전에 편리한 시간에 인스 턴스를 업그레이드하는 것이 좋습니다. 다음 단원 복제 인스턴스의 엔진 버전 업그레이드 (p. 64)의 지침을 사용하여 복제 인스턴스 업그레이드 를 시작할 수 있습니다. 복제 인스턴스를 업그레이드하도록 선택할 때 실행 중인 작업을 마이그레이션하기 위해 업그레이드가 완료 되면 업그레이드시 전체 로드 단계의 테이블이 처음부터 다시 로드됩니다. 업그레이드가 완료되면 중단 없이 다른 모든 테이블의 복제가 다시 시작됩니다. 버전 1.9.0에서 인스턴스를 업그레이드하기 전에 AWS DMS 복 제 인스턴스의 사용 가능한 최신 버전에서 현재의 모든 마이그레이션 작업을 테스트하는 것이 좋습니다. 복제 인스턴스의 엔진 버전 업그레이드 AWS는 새로운 기능과 성능 개선 사항을 포함하는 AWS DMS 복제 엔진 소프트웨어의 새 버전을 정기적으 로 릴리스합니다. 사용 가능한 AWS DMS 엔진 버전을 요약하면 다음과 같습니다. Version 릴리스 요약 3.1.x AWS Database Migration Service(AWS DMS) 3.1.3 릴리스 정보 (p. 358) AWS Database Migration Service(AWS DMS) 3.1.2 릴리스 정보 (p. 359) AWS Database Migration Service(AWS DMS) 3.1.1 릴리스 정보 (p. 360) 2.4.x AWS Database Migration Service(AWS DMS) 2.4.5 릴리스 정보 (p. 361) AWS Database Migration Service(AWS DMS) 2.4.4 릴리스 정보 (p. 362) AWS Database Migration Service(AWS DMS) 2.4.3 릴리스 정보 (p. 363) AWS Database Migration Service(AWS DMS) 2.4.2 릴리스 정보 (p. 364) AWS Database Migration Service(AWS DMS) 2.4.1 릴리스 정보 (p. 365) AWS Database Migration Service(AWS DMS) 2.4.0 릴리스 정보 (p. 366) 2.3.x AWS Database Migration Service(AWS DMS) 2.3.0 릴리스 정보 (p. 368) 64
복제 인스턴스의 엔진 버전 업그레이드 Version 릴리스 요약 2.2.x AWS DMS 소스나 AWS DMS 대상으로 Microsoft SQL Server 2016을 지원합니 다. AWS DMS 소스 또는 AWS DMS 대상으로 SAP ASE 16을 지원합니다. Microsoft Azure에서 실행 중인 Microsoft SQL Server를 AWS DMS 소스로만 지 원합니다. 기존 데이터의 전체 마이그레이션을 수행할 수 있지만, 변경 데이터 캡처(CDC)는 사용할 수 없습니다. 1.9.x AWS DMS 복제 엔진 소프트웨어의 누적 릴리스. Note 복제 인스턴스를 2.4.x에서 최신 버전으로 바로 업그레이드할 수 있습니다. 콘솔을 사용하여 엔진 버전 업그레이드 AWS Management 콘솔을 사용하여 AWS DMS 복제 인스턴스를 업그레이드할 수 있습니다. 콘솔을 사용하여 복제 인스턴스를 업그레이드하려면 1. https://console.aws.amazon.com/dms/에서 AWS DMS 콘솔을 엽니다. 2. 탐색 창에서 [Replication instances]를 선택합니다. 3. 복제 엔진을 선택한 다음 [Modify]를 선택합니다. 4. [Replication engine version]에서 원하는 버전 번호를 선택한 다음 [Modify]를 선택합니다. Note 복제 인스턴스를 업그레이드하는 데는 몇 분이 걸립니다. 인스턴스가 준비되면 인스턴스의 상태가 [available]로 변경됩니다. CLI를 사용하여 엔진 버전 업그레이드 AWS CLI를 다음과 같이 사용하여 AWS DMS 복제 인스턴스를 업그레이드할 수 있습니다. AWS CLI를 사용하여 복제 인스턴스를 업그레이드하려면 1. 다음 명령을 사용하여 복제 인스턴스의 ARN(Amazon 리소스 이름)을 확인합니다. aws dms describe-replication-instances \ --query "ReplicationInstances[*]. [ReplicationInstanceIdentifier,ReplicationInstanceArn,ReplicationInstanceClass]" 출력에서 업그레이드할 복제 인스턴스에 대한 ARN을 적어둡니다. 예: arn:aws:dms:useast-1:123456789012:rep:6efqqo6u6edprcpklnpl2sceey 2. 다음 명령을 사용하여 사용할 수 있는 복제 인스턴스 버전을 확인합니다. aws dms describe-orderable-replication-instances \ --query "OrderableReplicationInstances[*].[ReplicationInstanceClass,EngineVersion]" 출력에서 복제 인스턴스 클래스에 사용할 수 있는 엔진 버전 번호를 적어둡니다. 1단계의 출력에 이 정 보가 표시됩니다. 65
복제 인스턴스용으로 네트워크 설정 3. 다음 명령을 사용하여 복제 인스턴스를 업그레이드합니다. aws dms modify-replication-instance \ --replication-instance-arn arn \ --engine-version n.n.n 앞의 arn을 전 단계에서 확인한 실제 복제 인스턴스 ARN으로 바꿉니다. n.n.n을 원하는 엔진 버전으로 바꿉니다. 예: 2.2.1 Note 복제 인스턴스를 업그레이드하는 데는 몇 분이 걸립니다. 다음 명령을 사용하여 복제 인스턴스 상태 를 볼 수 있습니다. aws dms describe-replication-instances \ --query "ReplicationInstances[*]. [ReplicationInstanceIdentifier,ReplicationInstanceStatus]" 복제 인스턴스가 준비되면 인스턴스의 상태가 [available]로 변경됩니다. 복제 인스턴스용으로 네트워크 설정 AWS DMS는 항상 Amazon Virtual Private Cloud(Amazon VPC)를 기반으로 VPC에서 복제 인스턴스를 생성 합니다. 복제 인스턴스의 위치할 VPC는 사용자가 지정합니다. 계정과 AWS 리전의 기본 VPC를 사용하거나, 새 VPC를 생성할 수도 있습니다. VPC는 최소 1개의 가용 영역에 서브넷이 2개 이상 있어야 합니다. VPC의 복제 인스턴스에 할당된 Elastic Network Interface(ENI)는 모든 포트의 트래픽 전체를 VPC에서 내보 내도록(송신) 허용하는 규칙을 가진 보안 그룹과 연결되어 있어야 합니다. 이 접근 방식을 통해 엔드포인트에 서 올바른 송신 규칙이 활성화되어 있는 한 통신을 복제 인스턴스에서 원본과 대상 데이터베이스 엔드포인트 로 전달할 수 있습니다. 모든 포트에서 모든 주소로의 송신을 허용할 수 있도록 엔드포인트에서 기본 설정을 사용하는 것이 좋습니다. 원본과 대상 엔드포인트는 VPC에 연결하거나 VPC 내부에 있어 VPC 내부에 있는 복제 인스턴스에 액세스 합니다. 데이터베이스 엔드포인트는 복제 인스턴스에서 수신되는 액세스를 허용하는 네트워크 ACL(액세스 제어 목록)과 보안 그룹 규칙(해당하는 경우)을 포함해야 합니다. 사용 중인 네트워크 구성에 따라 복제 인스 턴스 VPC 보안 그룹, 복제 인스턴스의 프라이빗 또는 퍼블릭 IP 주소 또는 NAT 게이트웨이의 퍼블릭 IP 주 소를 사용할 수 있습니다. 이 연결은 데이터 마이그레이션에서 사용하는 네트워크를 구성합니다. 데이터 마이그레이션을 위한 네트워크 구성 AWS Database Migration Service를 통해 여러 네트워크 구성을 사용할 수 있습니다. 다음은 데이터베이스 마이그레이션에 사용되는 네트워크의 일반적인 구성입니다. 주제 하나의 VPC에 모든 데이터베이스 마이그레이션 구성 요소가 있는 구성 (p. 67) VPC 2개를 사용한 구성 (p. 67) AWS Direct Connect 또는 VPN을 사용한 네트워크와 VPC 연결 구성 (p. 67) 인터넷을 사용한 네트워크와 VPC 연결 구성 (p. 68) ClassicLink를 사용하여 VPC에 없는 Amazon RDS DB 인스턴스를 VPC에 있는 DB 인스턴스와 연결하 여 구성 (p. 68) 66
데이터 마이그레이션을 위한 네트워크 구성 하나의 VPC에 모든 데이터베이스 마이그레이션 구성 요소가 있는 구성 데이터베이스 마이그레이션에서 가장 간단한 네트워크는 원본 엔드포인트, 복제 인스턴스, 대상 엔드포인트 가 모두 동일한 VPC에 있도록 하는 것입니다. 이 구성은 원본과 대상 엔드포인트가 Amazon RDS DB 인스 턴스 또는 Amazon EC2 인스턴스에 있는 경우에 잘 맞습니다. 다음 그림은 Amazon EC2 인스턴스의 데이터베이스가 복제 인스턴스에 연결되고 데이터가 Amazon RDS DB 인스턴스에 마이그레이션되는 경우의 구성을 보여줍니다. 이 구성에서 사용되는 VPC 보안 그룹은 복제 인스턴스의 데이터베이스 포트에서 수신을 허용해야 합니다. 이 작업을 하려면 복제 인스턴스에서 사용하는 보안 그룹이 엔드포인트에 대한 수신이 있는지 확인하고, 그 렇지 않으면 복제 인스턴스 액세스의 프라이빗 IP 주소를 명시적으로 허용해야 합니다. VPC 2개를 사용한 구성 원본 엔드포인트와 대상 엔드포인트가 다른 VPC에 있는 경우, VPC 중 하나에서 복제 인스턴스를 생성한 다 음 VPC 피어링을 사용하여 이 두 VPC를 연결할 수 있습니다. [VPC peering] 연결은 두 VPC가 동일한 네트워크에 있는 것처럼 각 VPC의 프라이빗 IP 주소를 사용하여 라 우팅을 지원하는 두 VPC 간 네트워크 연결입니다. AWS 리전 내에서 VPC를 연결하는 이 방법을 권장합니 다. 동일한 AWS 리전 내에서 자체 VPC 간 VPC 피어링 연결 또는 다른 AWS 계정에 있는 VPC와이 VPC 피 어링을 생성할 수 있습니다. VPC 피어링에 대한 자세한 내용은 Amazon VPC 사용 설명서에서 VPC 피어 링을 참조하십시오. 다음 그림에 VPC 피어링을 사용한 구성 예가 나와 있습니다. 여기서, VPC의 Amazon EC2 인스턴스에 있는 원본 데이터베이스는 VPC 피어링에 의해 VPC에 연결됩니다. 이 VPC에는 Amazon RDS DB 인스턴스의 복 제 인스턴스 및 대상 데이터베이스가 들어 있습니다. 이 구성에 사용되는 VPC 보안 그룹은 복제 인스턴스의 데이터베이스 포트에서 수신을 허용해야 합니다. AWS Direct Connect 또는 VPN을 사용한 네트워크와 VPC 연결 구성 AWS Direct Connect 또는 소프트웨어나 하드웨어 VPN 연결과 같은 여러 옵션을 사용하여 원격 네트워크를 VPC에 연결할 수 있습니다. 이 옵션은 흔히 내부 네트워크를 AWS 클라우드로 확장함으로써 모니터링, 인 증, 보안, 데이터 또는 기타 시스템과 같은 기존 현장 서비스를 통합하는 데 사용됩니다. 이러한 유형의 네트 워크 확장을 활용하여 VPC와 같이 AWS에서 호스팅하는 리소스에 완벽하게 연결할 수 있습니다. 67
데이터 마이그레이션을 위한 네트워크 구성 다음 그림은 원본 엔드포인트가 기업 데이터 센터에서 온프레미스 데이터베이스인 구성을 나타냅니다. Amazon RDS DB 인스턴스에서 복제 인스턴스와 대상 데이터베이스를 포함하는 AWS Direct Connect 또는 VPN-VPC를 사용하여 연결합니다. 이 구성에서 VPC 보안 그룹에는 특정 IP 주소나 범위로 지정된 트래픽을 호스트로 전송하는 라우팅 규칙이 포함되어 있습니다. 이 호스트는 트래픽을 VPC에서 온프레미스 VPN으로 연결할 수 있어야 합니다. 이 경우 에 NAT는 트래픽을 복제 인스턴스의 프라이빗 IP 주소나 보안 그룹에서 NAT 인스턴스로 전송하도록 허용해 야 하는 자체 보안 그룹 설정이 NAT 호스트에 적용되어 있습니다. 인터넷을 사용한 네트워크와 VPC 연결 구성 만약 VPN 또는 AWS Direct Connect를 사용하여 AWS 리소스에 연결하지 않으면, 인터넷을 사용하여 데이 터베이스를 Amazon EC2 인스턴스나 Amazon RDS DB 인스턴스로 마이그레이션할 수 있습니다. 이 구성은 대상 엔드포인트와 복제 인스턴스를 포함하는 인터넷 게이트웨이를 지원하는 VPC에 퍼블릭 복제 인스턴스 를 포함합니다. VPC에 인터넷 게이트웨이를 추가하려면, Amazon VPC 사용 설명서의 인터넷 게이트웨이 연결을 참조하십 시오. VPC 보안 그룹에는 트래픽을 VPC로 전달하지 않고 기본적으로 인터넷 게이트웨이로 전송하는 라우팅 규칙 이 적용되어 있어야 합니다. 이 구성에서 엔드포인트와의 연결이 프라이빗 IP 주소가 아닌 복제 인스턴스의 퍼블릭 IP 주소에서 오는 것으로 나타납니다. ClassicLink를 사용하여 VPC에 없는 Amazon RDS DB 인스턴스 를 VPC에 있는 DB 인스턴스와 연결하여 구성 프록시 서버와 함께 ClassicLink를 사용하여 VPC에 없는 Amazon RDS DB 인스턴스를 AWS DMS 복제 서 버와 DB 인스턴스(VPC에 있음)에 연결할 수 있습니다. ClassicLink를 사용하면 같은 AWS 리전 내에 있는 해당 계정의 VPC에 EC2-Classic DB 인스턴스를 연결할 수 있습니다. 링크를 생성하고 난 후 원본 DB 인스턴스는 프라이빗 IP 주소를 사용하여 VPC 내부에 있는 복 제 인스턴스와 통신할 수 있습니다. VPC의 복제 인스턴스는 ClassicLink를 사용하여 EC2 클래식 플랫폼의 원본 DB 인스턴스에 직접 액세스할 수 없기 때문에 프록시 서버를 사용해야 합니다. 프록시 서버는 원본 DB 인스턴스를 VPC에 연결하며, 여기 에는 복제 인스턴스와 대상 DB 인스턴스가 포함됩니다. 프록시 서버는 ClassicLink를 VPC와 연결합니다. 프 록시 서버의 포트 전달은 VPC에서 원본 DB 인스턴스와 대상 DB 인스턴스 통신을 허용합니다. 68
데이터 마이그레이션을 위한 네트워크 구성 AWS Database Migration Service에서 ClassicLink 사용 프록시 서버와 함께 사용할 때 ClassicLink를 사용하여 VPC에 없는 Amazon RDS DB 인스턴스를 AWS DMS 복제 서버와 DB 인스턴스(VPC에 있음)에 연결할 수 있습니다. 다음 절차에서는 ClassicLink를 사용하여 VPC에 없는 Amazon RDS 원본 DB 인스턴스를 AWS DMS 복제 서버와 대상 DB 인스턴스를 포함하는 VPC에 연결하는 방법을 보여줍니다. VPC에 AWS DMS 복제 인스턴스를 생성합니다. (모든 복제 인스턴스는 VPC에 생성됩니다). VPC 보안 그룹을 복제 인스턴스와 대상 DB 인스턴스에 연결합니다. 두 인스턴스가 VPC 보안 그룹을 공 유할 때에는 기본적으로 이 두 인스턴스가 서로 통신할 수 있습니다. EC2 Classic 인스턴스에서 프록시 서버를 설정합니다. ClassicLink를 사용하여 프록시 서버와 VPC를 연결합니다. 소스와 대상 데이터베이스의 AWS DMS 엔드포인트를 생성합니다. AWS DMS 작업을 생성합니다. ClassicLink를 사용하여 VPC에 없는 DB 인스턴스의 데이터베이스를 VPC에 있는 DB 인스턴스의 데이터베이스로 마이그레이션하려면 1. 1단계: AWS DMS 복제 인스턴스 생성. AWS DMS 복제 인스턴스를 생성하고 VPC 보안 그룹을 할당하려면 a. b. 2. AWS Management Console에 로그인하고 AWS Database Migration Service을 선택합니다. AWS Identity and Access Management(IAM) 사용자로서 로그인한 경우에는 AWS DMS 액세스를 위한 적절한 권한이 있어야 합니다. 데이터베이스 마이그레이션에 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 (p. 32)를 참조하십시오. [Dashboard] 페이지에서 [Replication Instance]를 선택합니다. 2단계: 복제 인스턴스 생성 (p. 19)의 지침에 따라 복제 인스턴스를 생성합니다. c. AWS DMS 복제 인스턴스를 생성했으면 EC2 서비스 콘솔을 엽니다. 탐색 창에서 [Network Interfaces]를 선택합니다. d. DMSNetworkInterface을 선택하고 나서 [Actions] 메뉴에서 [Change Security Groups]를 선택합니 다. e. 복제 인스턴스와 대상 DB 인스턴스에서 사용할 보안 그룹을 선택합니다. 2단계: 마지막 단계의 보안 그룹과 대상 DB 인스턴스를 연결합니다. 보안 그룹을 DB 인스턴스와 연결하려면 3. a. Amazon RDS 서비스 콘솔을 엽니다. 탐색 창에서 [Instances]를 선택합니다. b. 대상 DB 인스턴스를 선택합니다. [Instance Actions]에서 [Modify]를 선택합니다. c. [Security Group] 파라미터에서는 이전 단계에서 사용한 보안 그룹을 선택합니다. d. [Continue]를 선택하고 나서 [Modify DB Instance]를 선택합니다. 3단계: NGINX를 사용하여 EC2 Classic 인스턴스에서 프록시 서버를 설정합니다. 선택한 AMI를 사용하 여 EC2 Classic 인스턴스를 시작합니다. 다음 예제는 AMI Ubuntu Server 14.04 LTS(HVM)를 기반으로 합니다. 69
데이터 마이그레이션을 위한 네트워크 구성 EC2 Classic 인스턴스에서 프록시 서버를 설정하려면 a. 다음 명령을 사용하여 EC2 Classic 인스턴스에 연결하고 NGINX를 설치합니다. Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> Prompt> b. sudo apt-get update sudo wget http://nginx.org/download/nginx-1.9.12.tar.gz sudo tar -xvzf nginx-1.9.12.tar.gz cd nginx-1.9.12 sudo apt-get install build-essential sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g-dev sudo./configure --with-stream sudo make sudo make install 다음 코드를 사용하여 NGINX 데몬 파일 /etc/init/nginx.conf을 편집합니다. # /etc/init/nginx.conf Upstart file description "nginx http daemon" author "email" start on (filesystem and net-device-up IFACE=lo) stop on runlevel [!2345] env DAEMON=/usr/local/nginx/sbin/nginx env PID=/usr/local/nginx/logs/nginx.pid expect fork respawn respawn limit 10 5 pre-start script $DAEMON -t if [ $? -ne 0 ] then exit $? fi end script exec $DAEMON c. /usr/local/nginx/conf/nginx.conf에서 NGINX 구성 파일을 생성합니다. 구성 파일에서 다음을 추가합 니다. # /usr/local/nginx/conf/nginx.conf - NGINX configuration file worker_processes 1; events worker_connections 1024; stream server listen <DB instance port number>; proxy_pass <DB instance identifier>:<db instance port number>; 70
복제 서브넷 그룹 생성 d. 명령줄에서 다음 명령을 사용하여 NGINX를 시작합니다. Prompt> sudo initctl reload-configuration Prompt> sudo initctl list grep nginx Prompt> sudo initctl start nginx 4. 4단계: 대상 DB 인스턴스와 복제 인스턴스를 포함하는 대상 VPC와 프록시 서버를 ClassicLink로 연결 합니다. ClassicLink를 사용하여 프록시 서버와 대상 VPC를 연결합니다. a. EC2 콘솔을 열고 프록시 서버를 실행하는 EC2 Classic 인스턴스를 선택합니다. b. [Actions]에서 [ClassicLink]를 선택하고 나서 [Link to VPC]를 선택합니다. c. 이 절차에서 이전에 사용한 보안 그룹을 선택합니다. d. [Link to VPC]를 선택합니다. 5. 5단계: 3단계: 원본과 대상 엔드포인트 지정 (p. 23)의 절차를 사용하여 AWS DMS 엔드포인트 생성. 원 본 엔드포인트를 지정할 때에는 서버 이름으로 내부 EC2 DNS 호스트 이름을 사용해야 합니다. 6. 6단계: 4단계: 작업 생성 (p. 26)의 절차를 사용하여 AWS DMS 작업 생성. 복제 서브넷 그룹 생성 데이터베이스 마이그레이션에서 사용하는 네트워크의 일부로서 사용할 Amazon Virtual Private Cloud(Amazon VPC)에서 서브넷을 지정해야 합니다. 서브넷은 지정된 가용 영역에 있는 VPC의 IP 주소 범 위입니다. 이 서브넷은 VPC가 있는 AWS 리전의 가용 영역에서 분산될 수 있습니다. 선택한 서브넷에서 복제 인스턴스를 생성하면, AWS DMS 콘솔을 사용하여 원본 또는 대상 엔드포인트가 사 용하는 서브넷을 관리할 수 있습니다. 복제 서브넷 그룹을 생성하여 사용할 서브넷을 정의합니다. 2가지 가용 영역에서 1개 이상의 서브넷을 지정 해야 합니다. 복제 서브넷 그룹을 생성하려면 1. AWS Management 콘솔에 로그인하고 AWS Database Migration Service 선택을 수행합니다. AWS IAM(Identity and Access Management) 사용자로 로그인한 경우에는 AWS DMS에 액세스하기 위한 적절한 권한이 있어야 합니다. 데이터베이스 마이그레이션에 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 (p. 32)를 참조하십시오. 2. 탐색 창에서 [Subnet Groups]를 선택합니다. 3. [Create Subnet Group]을 선택합니다. 4. [Edit Replication Subnet Group] 페이지에서 다음과 같이 복제 서브넷 그룹 정보를 지정합니다. 다음 표 는 설정에 대한 설명입니다. 71
암호화 키 설정 5. 6. 옵션 수행할 작업 식별자 인쇄 가능한 ASCII 문자(/, " 및 @ 제외) 8-16자를 포함하 는 복제 서브넷 그룹 이름을 입력합니다. 이름은 선택한 AWS 리전의 계정에서 고유해야 합니다. 예를 들어 DMSdefault-VPC처럼 수행 중인 작업과 AWS 리전 등 일부 정 보를 이름에 추가하도록 선택할 수 있습니다. 설명 복제 인스턴스 그룹에 대한 간략한 설명을 입력합니다. VPC 데이터베이스 마이그레이션에 사용할 VPC를 선택하십시 오. VPC는 최소 2개의 가용 영역에 서브넷 1개 이상이 있어 야 합니다. 사용 가능한 서브넷 복제 서브넷 그룹에 포함할 서브넷을 선택합니다. 가용 영역 2개 이상에서 서브넷을 선택해야 합니다. [Add]를 선택하여 복제 서브넷 그룹에 서브넷을 추가합니다. Create를 선택합니다. 복제 인스턴스의 암호화 키 설정 AWS DMS는 복제 인스턴스와 엔드포인트 연결 정보에서 사용하는 스토리지를 암호화합니다. 복제 인스턴 스에서 사용하는 스토리지를 암호화하기 위해 AWS DMS는 AWS 계정에 고유한 마스터 키를 사용합니다. AWS Key Management Service(AWS KMS)에서 이 마스터 키를 보고 관리할 수 있습니다. 계정(aws/dms) 또는 생성한 사용자 지정 마스터 키에서 기본 마스터 키를 사용할 수 있습니다. 기존 AWS KMS 암호화 키가 있는 경우, 암호화에 이 키를 사용할 수도 있습니다. 자체 암호화 키를 지정하려면 KMS 키 식별자를 제공하여 AWS DMS 리소스를 암호화합니다. 자체 암호화 키를 지정할 때 데이터베이스 마이그레이션을 수행하는 데 사용되는 사용자 계정에는 키에 대한 액세스 권한 72
복제 인스턴스 생성 이 있어야 합니다. 자체 암호화 키를 생성하고 암호화 키에 사용자 액세스 권한을 부여하는 방법에 대한 자세 한 내용은 AWS KMS 개발자 안내서를 참조하십시오. KMS 키 식별자를 지정하지 않으면 AWS DMS에서 기본 암호화 키를 사용합니다. AWS DMS에서는 AWS 계 정을 위한 기본 암호화 키를 생성합니다. AWS 계정에는 AWS 리전마다 다른 기본 암호화 키가 있습니다. AWS DMS 리소스를 암호화하는 데 사용되는 키를 관리하려면, KMS를 사용합니다. AWS Management 콘 솔에서 KMS를 찾으려면 콘솔 홈 페이지에서 자격 증명 및 액세스 관리를 선택한 후 탐색 창에서 암호화 키를 선택합니다. KMS는 클라우드에 맞게 확장된 키 관리 시스템을 제공하기 위해 안전하고 가용성 높은 하드웨어 및 소프트 웨어를 결합합니다. KMS를 사용하면 암호화 키를 생성하고 이 키를 사용할 수 있는 방법을 제어하는 정책을 정의할 수 있습니다. KMS는 AWS CloudTrail를 지원하므로 키가 적절하게 사용되고 있는지 확인하기 위해 키 사용을 감사할 수 있습니다. KMS 키는 AWS DMS 및 지원되는 AWS 서비스(예: Amazon RDS, Amazon S3, Amazon Elastic Block Store(Amazon EBS) 및 Amazon Redshift)와 함께 사용할 수 있습니다. 특정 암호화 키를 사용하여 AWS DMS 리소스를 생성했으면, 이 리소스에서 암호화 키를 변경할 수 없습니 다. AWS DMS 리소스를 생성하기 전에 암호화 키 요구 사항을 결정해야 합니다. 복제 인스턴스 생성 데이터베이스를 마이그레이션할 때 첫 번째 작업은 할당한 작업을 수행하고 데이터를 원본 데이터베이스 에서 대상 데이터페이스로 마이그레이션할 수 있도록 스토리지와 프로세싱 성능이 충분한 복제 인스턴스 를 생성하는 것입니다. 이 인스턴스의 필요한 크기는 마이그레이션해야 하는 데이터 양과 인스턴스 실행에 필요한 작업에 따라 달라집니다. 복제 인스턴스에 대한 자세한 내용은 AWS DMS 복제 인스턴스 작업 사 용 (p. 58) 섹션을 참조하십시오. 다음 절차에서는 AWS DMS 콘솔 마법사를 이미 선택했다고 가정합니다. AWS DMS 콘솔의 탐색 창에서 복 제 인스턴스를 선택한 후 복제 인스턴스 생성을 선택하여 이 단계를 수행할 수도 있습니다. AWS 콘솔을 사용하여 복제 인스턴스를 생성하려면 1. [Create replication instance] 페이지에서 복제 인스턴스 정보를 지정합니다. 다음 표는 설정에 대한 설명 입니다. 73
복제 인스턴스 생성 옵션 수행할 작업 [Name] 인쇄 가능한 ASCII 문자(/, " 및 @ 제외) 8-16자를 포함하 는 복제 인스턴스의 이름을 입력합니다. 이름은 선택한 AWS 리전의 계정에서 고유해야 합니다. 예를 들어 west2mysql2mysql-instance1처럼 수행 중인 작업과 AWS 리 전 등 일부 정보를 이름에 추가하도록 선택할 수 있습니다. 설명 복제 인스턴스에 대한 간략한 설명을 입력합니다. [Instance class] 마이그레이션에 필요한 구성과 함께 인스턴스 클래스를 선 택합니다. 마이그레이션을 성공적으로 완료할 수 있도록 인 스턴스의 스토리지, 네트워크 및 처리 능력은 충분해야 합니 다. 마이그레이션에 최적인 인스턴스 클래스를 결정하는 방 법에 대한 자세한 내용은 AWS DMS 복제 인스턴스 작업 사 용 (p. 58) 섹션을 참조하십시오. 복제 엔진 버전 기본적으로 복제 인스턴스는 AWS DMS 복제 엔진 소프트 웨어의 최신 버전을 실행합니다. 이 기본값을 그대로 사용하 는 것이 좋지만, 필요할 경우 이전 엔진 버전을 선택할 수도 있습니다. 74
복제 인스턴스 생성 2. 옵션 수행할 작업 VPC 사용할 Amazon Virtual Private Cloud(Amazon VPC)를 선택 합니다. 원본 또는 대상 데이터베이스가 VPC에 있는 경우, 해당 VPC를 선택합니다. 원본 및 대상 데이터베이스가 다른 VPC에 있으면, 모두가 퍼블릭 서브넷에 있고 공개적으로 액 세스 가능한지 확인하고 나서 복제 인스턴스가 배치될 VPC 를 선택합니다. 복제 인스턴스는 원본 VPC에 있는 데이터에 액세스할 수 있어야 합니다. 원본이나 대상 데이터베이스가 VPC에 없으면, 복제 인스턴스가 배치될 위치에 있는 VPC 를 선택합니다. [Multi-AZ] 이 선택적 파라미터를 사용하여 다른 가용 영역에 복제 인스 턴스의 대기 복제본을 생성하여 장애 조치를 지원합니다. 데 이터 캡처(CDC) 또는 지속적 복제를 사용하려면, 이 옵션을 활성화해야 합니다. [Publicly accessible] 인터넷에서 복제 인스턴스에 액세스하려면 이 옵션을 선택 합니다. 다음 그림과 같이 [Advanced ] 탭을 선택하고 네트워크와 암호화 설정이 필요하면 값을 설정합니다. 다 음 표는 설정에 대한 설명입니다. 75
복제 인스턴스 생성 옵션 수행할 작업 [Allocated storage (GB)] 스토리지는 주로 로그 파일과 캐시된 트랜잭션에서 소모합 니다. 캐시 트랜잭션에서 스토리지는 캐시된 트랜잭션을 디 스크에 기록해야 할 때에만 사용됩니다. 따라서 AWS DMS 는 스토리지를 많이 사용하지 않습니다. 일부 예외 사항은 다음과 같습니다. 상당한 트랜잭션 로드를 발생하는 매우 큰 테이블. 큰 테 이블을 로드하면 다소 시간이 걸릴 수 있으므로, 캐시된 트랜잭션은 큰 테이블 로드 중에 디스크에 기록될 가능성 이 더 높습니다. 캐시된 트랜잭션을 로드하기 전에 일시 중지되도록 구성 되는 작업입니다. 이 경우에 모든 테이블에서 전체 로드가 완료될 때까지 모든 트랜잭션이 캐시됩니다. 이 구성에서 상당량의 스토리지가 캐시된 트랜잭션에서 소모될 수 있 습니다. Amazon Redshift로 로드되고 있는 테이블을 사용하여 구 성된 작업입니다. 그렇지만, 이 구성은 Amazon Aurora가 대상일 때는 문제가 아닙니다. 대다수의 경우에 스토리지의 기본 할당량은 충분합니다. 그 렇지만, 항상 스토리지 관련 지표에 유의하고 기본 할당량보 다 더 많이 소모하게 되면 스토리지를 확장하는 것이 좋습니 다. 3. [Replication Subnet Group] 복제 인스턴스를 생성할 위치에 있는 선택된 VPC에서 복제 서브넷 그룹을 선택합니다. 원본 데이터베이스가 VPC에 있 는 경우, 원본 데이터베이스가 포함된 서브넷 그룹을 복제 인스턴스 위치로 선택합니다. 복제 서브넷에 대한 자세한 내 용은 복제 서브넷 그룹 생성 (p. 71) 섹션을 참조하십시 오. [Availability zone] 원본 데이터베이스가 있는 가용 영역을 선택합니다. [VPC Security group(s)] 모든 복제 인스턴스가 VPC에 생성됩니다. 원본 데이터베이 스가 VPC에 있는 경우, 데이터베이스가 상주하는 곳에 있는 DB 인스턴스에 대한 액세스 권한을 부여하는 VPC 보안 그 룹을 선택합니다. [KMS master key] 복제 스토리지와 연결 정보를 암호화하기 위해 사용할 암 호화 키를 선택합니다. [(Default) aws/dms]를 선택하면, 계 정 및 AWS 리전과 연결된 기본 AWS Key Management Service(AWS KMS) 키가 사용됩니다. 설명 및 계정 번호가 키의 ARN과 함께 표시됩니다. 암호화 키 사용에 대한 자세 한 내용은 암호화 키 설정 및 KMS 권한 지정 (p. 45)를 참조 하십시오. [Maintenance] 설정을 지정합니다. 다음 표는 설정에 대한 설명입니다. 유지 관리 설정에 대한 자세한 내 용은 AWS DMS 유지 관리 기간 (p. 61) 섹션을 참조하십시오. 76
복제 인스턴스 수정 옵션 수행할 작업 Auto minor version upgrade 유지 관리 기간 동안 마이너 엔진 업그레이드가 복제 인스턴 스에 자동으로 적용되도록 하려면 이 옵션을 선택합니다. 유지 관리 기간 시스템 유지 관리를 실행할 수 있는 주 단위 기간(UTC, 협정 세계시)을 선택합니다. 기본값: AWS 리전마다 주중에 무작위로 8시간의 주기를 두 고 선택한 30분의 기간입니다. 4. [Create replication instance]를 선택합니다. 복제 인스턴스 수정 복제 인스턴스에 대한 설정을 수정하여 예컨대 인스턴스 클래스를 변경하거나 스토리지를 늘릴 수 있습니다. 복제 인스턴스를 수정하는 경우 변경 사항을 즉시 적용할 수 있습니다. 변경 사항을 즉시 적용하려면 AWS Management 콘솔에서 변경 사항 즉시 적용 옵션을 선택하거나, AWS CLI 호출 시 --applyimmediately 파라미터를 사용하거나, AWS DMS API 사용 시 ApplyImmediately 파라미터를 true로 설정합니다. 변경 사항을 즉시 적용하지 않기로 선택하면 변경 사항이 보류 중 수정 사항 대기열로 보내집니다. 다음 유지 관리 기간에 대기열에 있는 보류 중 변경 사항이 적용됩니다. Note 변경 사항을 즉시 적용하기로 선택하면 보류 중 수정 사항 대기열에 있는 변경 사항까지 모두 적용 됩니다. 보류 중 수정 사항이 하나라도 가동 중지를 필요로 하는 경우 [Apply changes immediately] 을 선택하면 예기치 못한 가동 중지가 발생할 수 있습니다. AWS 콘솔을 사용하여 복제 인스턴스를 수정하려면 1. AWS Management 콘솔에 로그인하고 AWS DMS 선택을 수행합니다. 2. 탐색 창에서 [Replication instances]를 선택합니다. 3. 수정할 복제 인스턴스를 선택합니다. 다음 표에서는 수행할 수 있는 수정 사항을 설명합니다. 77
복제 인스턴스 수정 옵션 수행할 작업 이름 복제 인스턴스의 이름을 변경할 수 있습니다. 인쇄 가능한 ASCII 문자(/, " 및 @ 제외) 8-16자를 포함하는 복제 인스턴 스의 이름을 입력합니다. 이름은 선택한 AWS 리전의 계정 에서 고유해야 합니다. 예를 들어 west2-mysql2mysqlinstance1처럼 수행 중인 작업과 AWS 리전 등 일부 정보 를 이름에 추가하도록 선택할 수 있습니다. 인스턴스 클래스 인스턴스 클래스를 변경할 수 있습니다. 마이그레이션에 필 요한 구성과 함께 인스턴스 클래스를 선택합니다. 인스턴스 클래스를 변경하면 복제 인스턴스가 재부팅됩니다. 이 재부 팅은 다음 유지 관리 기간 중에 발생하거나 [Apply changes immediately] 옵션을 선택하는 즉시 발생할 수 있습니다. 마이그레이션에 최적인 인스턴스 클래스를 결정하는 방법 에 대한 자세한 내용은 AWS DMS 복제 인스턴스 작업 사 용 (p. 58) 섹션을 참조하십시오. 복제 엔진 버전 복제 인스턴스에 사용되는 엔진 버전을 업그레이드할 수 있 습니다. 복제 엔진 버전을 업그레이드하면 업그레이드 중에 복제 인스턴스가 종료됩니다. [Multi-AZ] 이 옵션을 변경하여 다른 가용 영역에 장애 조치를 지원할 복제 인스턴스의 예비 복제본을 생성하거나 이 옵션을 제거 합니다. 데이터 캡처(CDC) 또는 지속적 복제를 사용하려면, 이 옵션을 활성화해야 합니다. [Allocated storage (GB)] 스토리지는 주로 로그 파일과 캐시된 트랜잭션에서 소모합 니다. 캐시 트랜잭션에서 스토리지는 캐시된 트랜잭션을 디 스크에 기록해야 할 때에만 사용됩니다. 따라서 AWS DMS 는 스토리지를 많이 사용하지 않습니다. 일부 예외 사항은 다음과 같습니다. 상당한 트랜잭션 로드를 발생하는 매우 큰 테이블. 큰 테 이블을 로드하면 다소 시간이 걸릴 수 있으므로, 캐시된 트랜잭션은 큰 테이블 로드 중에 디스크에 기록될 가능성 이 더 높습니다. 캐시된 트랜잭션을 로드하기 전에 일시 중지되도록 구성 되는 작업입니다. 이 경우에 모든 테이블에서 전체 로드가 완료될 때까지 모든 트랜잭션이 캐시됩니다. 이 구성에서 상당량의 스토리지가 캐시된 트랜잭션에서 소모될 수 있 습니다. Amazon Redshift로 로드되고 있는 테이블을 사용하여 구 성된 작업입니다. 그렇지만, 이 구성은 Amazon Aurora가 대상일 때는 문제가 아닙니다. 대다수의 경우에 스토리지의 기본 할당량은 충분합니다. 그 렇지만, 항상 스토리지 관련 지표에 유의하고 기본 할당량보 다 더 많이 소모하게 되면 스토리지를 확장하는 것이 좋습니 다. 78
복제 인스턴스 재부팅 옵션 수행할 작업 VPC Security Group(s) 모든 복제 인스턴스가 VPC에 생성됩니다. 원본 데이터베이 스가 VPC에 있는 경우, 데이터베이스가 상주하는 곳에 있는 DB 인스턴스에 대한 액세스 권한을 부여하는 VPC 보안 그 룹을 선택합니다. Auto minor version upgrade [Apply changes immediately] 옵션을 선택할 경우 즉시 또는 유지 관리 기간 중에 복제 인스턴스에 마이너 엔진 업그레이 드를 자동으로 적용되도록 하려면 이 옵션을 선택합니다. 유지 관리 기간 시스템 유지 관리를 실행할 수 있는 주 단위 기간(UTC, 협정 세계시)을 선택합니다. 기본값: AWS 리전마다 주중에 무작위로 8시간의 주기를 두 고 선택한 30분의 기간입니다. Apply changes immediately 변경 내용을 즉시 적용하려면 이 옵션을 선택합니다. 선택하 는 설정에 따라 이 옵션을 선택하면 복제 인스턴스가 즉시 재부팅될 수 있습니다. 복제 인스턴스 재부팅 AWS DMS 복제 인스턴스를 재부팅하여 복제 엔진을 다시 시작할 수 있습니다. 재부팅하면 인스턴스 상태가 재부팅 중으로 설정되면서 복제 인스턴스가 잠시 중단됩니다. AWS DMS 인스턴스가 다중 AZ로 구성되어 있는 경우에는 장애 조치로 인해 재부팅을 실행할 수 있습니다. 재부팅이 완료되면 AWS DMS 이벤트가 생 성됩니다. AWS DMS 인스턴스가 다중 AZ 배포인 경우 재부팅하면 한 AWS 가용 영역의 장애 조치를 다른 가용 영역에 강제 실행할 수 있습니다. AWS DMS 인스턴스 장애 조치를 강제 실행할 때 AWS DMS가 다른 가용 영역에 서 대기 인스턴스로 자동 전환됩니다. 테스트를 위해 AWS DMS 인스턴스의 실패를 시뮬레이션하려는 경우 장애 조치를 통한 재부팅이 유용합니다. 재부팅할 때 복제 인스턴스에서 실행 중인 마이그레이션 작업이 있는 경우 데이터가 손실되지 않으며 재부 팅이 완료된 후 작업이 다시 시작됩니다. 마이그레이션 작업의 테이블이 대량 로드 중이면(전체 로드 단계) DMS에서 처음부터 해당 테이블의 마이그레이션을 다시 시작합니다. 마이그레이션 작업의 테이블이 지속적 인 복제 단계에 있는 경우 재부팅이 완료된 후 작업이 다시 시작됩니다. AWS DMS 복제 인스턴스의 상태가 사용 가능이 아니면 이 인스턴스를 재부팅할 수 없습니다. 이전에 수정 을 요청했거나 유지 관리 기간 작업 등 여러 가지 이유로 AWS DMS 인스턴스를 사용할 수 없는 경우가 있습 니다. AWS DMS 복제 인스턴스를 재부팅하는 데 필요한 시간은 일반적으로 5분 이내의 짧은 시간입니다. AWS 콘솔을 사용하여 복제 인스턴스 재부팅 복제 인스턴스를 재부팅하려면 AWS 콘솔을 사용합니다. AWS 콘솔을 사용하여 복제 인스턴스를 재부팅하려면 1. 2. 3. 4. 5. 6. AWS Management 콘솔에 로그인하고 AWS DMS 선택을 수행합니다. 탐색 창에서 [Replication instances]를 선택합니다. 재부팅할 복제 인스턴스를 선택합니다. [Reboot]를 선택합니다. 다중 AZ 배포에 대해 복제 인스턴스를 구성한 경우 다른 AWS 가용 영역으로 장애 조치하려면 복제 인 스턴스 재부팅 대화 상자에서 장애 조치로 재부팅하시겠습니까?를 선택합니다. [Reboot]를 선택합니다. 79
복제 인스턴스 재부팅 CLI를 사용하여 복제 인스턴스 재부팅 복제 인스턴스를 재부팅하려면 AWS CLI reboot-replication-instance 명령을 다음 파라미터와 함께 사용합니다. --replication-instance-arn Example 간단한 재부팅 예제 다음 AWS CLI 예제에서는 복제 인스턴스를 재부팅합니다. aws dms reboot-replication-instance \ --replication-instance-arn arnofmyrepinstance Example 장애 조치로 간단한 재부팅 예제 다음 AWS CLI 예제에서는 장애 조치로 복제 인스턴스를 재부팅합니다. aws dms reboot-replication-instance \ --replication-instance-arn arnofmyrepinstance \ --force-failover API를 사용하여 복제 인스턴스 재부팅 복제 인스턴스를 재부팅하려면 AWS DMS API RebootReplicationInstance 작업을 다음 파라미터와 함께 사용합니다. ReplicationInstanceArn = arnofmyrepinstance Example 간단한 재부팅 예제 다음 코드 예제에서는 복제 인스턴스를 재부팅합니다. https://dms.us-west-2.amazonaws.com/?action=rebootreplicationinstance &DBInstanceArn=arnofmyrepinstance &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request &X-Amz-Date=20140425T192732Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3 Example 장애 조치로 간단한 재부팅 예제 다음 코드 에제에서는 복제 인스턴스를 재부팅하고 다른 AWS 가용 영역으로 장애 조치합니다. https://dms.us-west-2.amazonaws.com/?action=rebootreplicationinstance &DBInstanceArn=arnofmyrepinstance &ForceFailover=true &SignatureMethod=HmacSHA256 &SignatureVersion=4 80
복제 인스턴스 삭제 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request &X-Amz-Date=20140425T192732Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3 복제 인스턴스 삭제 AWS DMS 복제 인스턴스 사용을 마친 후에는 이를 삭제할 수 있습니다. 복제 인스턴스를 사용하는 마이그 레이션 작업이 있는 경우 복제 인스턴스를 삭제하기 전에 작업을 중지한 후 삭제해야 합니다. AWS 계정을 닫으면 2일 후에 계정과 연결된 모든 AWS DMS 리소스 및 구성이 삭제됩니다. 이 리소스에는 모든 복제 인스턴스, 원본 및 대상 엔드포인트 구성, 복제 작업, SSL 인증서가 포함됩니다. 2일이 지난 후에 AWS DMS를 다시 사용하기로 한 경우 필요한 리소스를 다시 생성해야 합니다. AWS 콘솔을 사용하여 복제 인스턴스 삭제 복제 인스턴스를 삭제하려면 AWS 콘솔을 사용합니다. AWS 콘솔을 사용하여 복제 인스턴스를 삭제하려면 1. 2. AWS Management 콘솔에 로그인하고 AWS DMS 선택을 수행합니다. 탐색 창에서 [Replication instances]를 선택합니다. 3. 4. 5. 삭제할 복제 인스턴스를 선택합니다. 삭제를 선택합니다. 대화 상자에서 Delete를 선택합니다. CLI를 사용하여 복제 인스턴스 삭제 복제 인스턴스를 삭제하려면 AWS CLI delete-replication-instance 명령을 다음 파라미터와 함께 사용합니다. --replication-instance-arn Example 삭제 예시 다음 AWS CLI 예시에서는 복제 인스턴스를 삭제합니다. aws dms delete-replication-instance \ --replication-instance-arn <arnofmyrepinstance> API를 사용하여 복제 인스턴스 삭제 복제 인스턴스를 삭제하려면 AWS DMS API DeleteReplicationInstance 작업을 다음 파라미터와 함 께 사용합니다. ReplicationInstanceArn = <arnofmyrepinstance> Example 삭제 예시 다음 코드 예시에서는 복제 인스턴스를 삭제합니다. 81
지원되는 DDL 문 https://dms.us-west-2.amazonaws.com/?action=deletereplicationinstance &DBInstanceArn=arnofmyrepinstance &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140425/us-east-1/dms/aws4_request &X-Amz-Date=20140425T192732Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=1dc9dd716f4855e9bdf188c70f1cf9f6251b070b68b81103b59ec70c3e7854b3 AWS DMS에 의해 지원되는 DDL 문 데이터 마이그레이션 프로세스 중에 원본 데이터베이스에서 데이터 정의 언어(DDL) 문을 실행할 수 있습니 다. 이 문은 복제 서버를 통해 대상 데이터베이스로 복제됩니다. 지원되는 DDL 문은 다음과 같습니다. 테이블 생성 테이블 삭제 테이블 이름 바꾸기 열 추가 열 삭제 열 이름 바꾸기 열 데이터 유형 변경 특정 원본에서 지원되는 DDL 문에 대한 정보는 이 원본에 대한 설명이 나오는 주제를 참조하십시오. 82
데이터 마이그레이션용 소스 AWS DMS 엔드포인트 작업 엔드포인트는 데이터 스토어에 대한 연결, 데이터 스토어 유형 및 위치 정보를 제공합니다. AWS Database Migration Service는 이 정보를 사용하여 데이터 스토어에 연결하고 데이터를 소스 엔드포인트에서 대상 엔 드포인트로 마이그레이션합니다. 추가 연결 속성을 사용하여 엔드포인트에 대한 추가 연결 속성을 지정할 수 있습니다. 이러한 속성은 로깅, 파일 크기 및 다른 파라미터를 제어할 수 있습니다. 추가 연결 속성에 대한 자 세한 내용은 데이터 스토어의 설명서 섹션을 참조하십시오. 아래에서 엔드포인트에 대한 자세한 정보를 확인할 수 있습니다. 주제 데이터 마이그레이션용 소스 (p. 83) 대상 마이그레이션에 적합한 대상 (p. 144) 원본 및 대상 엔드포인트 생성 (p. 223) 데이터 마이그레이션용 소스 AWS Database Migration Service(AWS DMS)는 데이터 복제용 소스로 가장 인기 있는 데이터 엔진을 다 수 사용할 수 있습니다. 데이터베이스 소스는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또 는 온프레미스 데이터베이스에서 실행되는 자체 관리형 엔진이 될 수 있습니다. 또는 Amazon Relational Database Service(Amazon RDS) 또는 Amazon Simple Storage Service와 같은 Amazon 관리형 서비스에 있 는 데이터 소스가 될 수도 있습니다. AWS DMS용으로 사용할 수 있는 소스는 다음과 같습니다. 온프레미스 및 Amazon EC2 인스턴스 데이터베이스 Enterprise, Standard, Standard One 및 Standard Two 버전용 Oracle 버전 10.2 이상, 11g 및 12.2 이하. Enterprise, Standard, Workgroup 및 Developer 버전용 Microsoft SQL Server 버전 2005, 2008, 2008R2, 2012, 2014 및 2016. Web 및 Express 버전은 지원되지 않습니다. MySQL 버전 5.5, 5.6 및 5.7. MariaDB(MySQL 호환 데이터 원본으로 지원됨). PostgreSQL 9.4 이상. SAP Adaptive Server Enterprise(ASE) 버전 12.5.3 이상, 15, 15.5, 15.7, 16 이상. MongoDB 버전 2.6.x 및 3.x 이상. Db2 LUW 버전: 버전 9.7, 모든 수정 팩이 지원됩니다. 버전 10.1, 모든 수정 팩이 지원됩니다. 버전 10.5, 수정 팩 5를 제외한 모든 수정 팩이 지원됩니다. Microsoft Azure AWS DMS는 Azure SQL 데이터베이스를 소스로 사용 시 전체 데이터 로드를 지원합니다. 변경 데이터 캡 처(CDC)는 지원되지 않습니다. Amazon RDS 인스턴스 데이터베이스 Enterprise, Standard, Standard One 및 Standard Two 버전용 Oracle 버전 11g(버전 11.2.0.3.v1 이상) 및 12c. 83
Oracle을 원본으로 사용 Enterprise 및 Standard 버전용 Microsoft SQL Server 버전 2008R2, 2012, 2014 및 2016. Enterprise 버전 의 경우 모든 버전에 대해 CDC가 지원됩니다. Standard 버전의 경우 2016 SP1 이상에만 CDC가 지원됩 니다. AWS DMS는 Web, Workgroup, Developer, Express 버전은 지원하지 않습니다. MySQL 버전 5.5, 5.6 및 5.7. 버전 5.6 이상에서만 변경 데이터 캡처(CDC)가 지원됩니다. PostgreSQL 9.4 이상. 버전 9.4.9 이상과 9.5.4 이상에서만 CDC가 지원됩니다. CDC에서 필요한 rds.logical_replication 파라미터는 이 버전 이상에서만 지원됩니다. MariaDB, MySQL 호환 데이터 원본으로 지원됨. MySQL과 호환되는 Amazon Aurora. PostgreSQL과 호환되는 Amazon Aurora. Amazon Simple Storage Service AWS DMS는 Amazon Simple Storage Service를 소스로 사용 시 전체 데이터 로드와 변경 데이터 캡처 (CDC)를 지원합니다. 주제 Oracle 데이터베이스를 AWS DMS에서 소스로 사용 (p. 84) Microsoft SQL Server 데이터베이스를 AWS DMS에서 소스로 사용 (p. 99) AWS DMS용 원본으로 Microsoft Azure SQL 데이터베이스 사용 (p. 108) PostgreSQL 데이터베이스를 AWS DMS에서 원본으로 사용 (p. 109) AWS DMS에서 MySQL 호환 데이터베이스를 원본으로 사용 (p. 121) AWS DMS에서 SAP ASE 데이터베이스를 원본으로 사용 (p. 128) MongoDB를 AWS DMS에서 원본으로 사용 (p. 131) Amazon Simple Storage Service을 AWS DMS용 소스로 사용 (p. 136) AWS DMS 소스로 Linux, Unix, Windows Database용 IBM Db2(Db2 LUW)를 사용 (p. 141) Oracle 데이터베이스를 AWS DMS에서 소스로 사용 AWS DMS를 사용하여 하나 이상의 Oracle 데이터베이스에서 데이터를 마이그레이션할 수 있습니다. 원본 으로서 Oracle 데이터베이스를 사용하여 데이터를 AWS DMS에서 지원하는 대상 중 하나로 마이그레이션할 수 있습니다. 자체 관리형 Oracle 데이터베이스의 경우, 소스로서의 자체 관리형 데이터베이스로 AWS DMS가 버전 10.2 이상, 11g 및 12.2 이하의 모든 Oracle 데이터베이스 버전을 지원합니다. Amazon RDS에서 제공하는 Amazon 관리형 Oracle 데이터베이스의 경우, AWS DMS가 버전 11g(버전 11.2.0.3.v1 이상) 및 12.2 이하의 모든 Oracle 데이터베이스 버전을 지원합니다. SSL을 사용하여 Oracle 엔드포인트와 복제 인스턴스 연결을 암호화할 수 있습니다. Oracle 엔드포인트에서 SSL을 사용하는 방법에 대한 자세한 내용은 AWS Database Migration Service에서 SSL 사용 (p. 47) 섹션을 참조하십시오. AWS DMS 소스의 소스로 Oracle 데이터베이스를 구성하는 단계는 다음과 같습니다. 1. CDC 전용 또는 전체 로드 및 CDC 작업을 생성하려는 경우, 데이터 변경 사항을 캡처하기 위해 Oracle LogMiner 또는 Oracle Binary Reader를 선택해야 합니다. LogMiner 또는 Binary Reader 중 어느 것을 선 택하는지에 따라 하위 권한 및 구성 작업의 일부가 결정됩니다. LogMiner와 Binary Reader를 비교해보려 면 다음 섹션을 참조하십시오. 2. AWS DMS에 대해 적절한 권한을 가진 Oracle 사용자를 생성합니다. 전체 로드 전용 작업을 생성하고 있 는 경우에는 추가 구성이 필요하지 않습니다. 84
Oracle을 원본으로 사용 3. 선택한 구성을 준수하는 DMS 엔드포인트를 생성합니다. Oracle 데이터베이스 및 AWS DMS 사용에 대한 자세한 내용은 다음 단원을 참조하십시오. 주제 변경 데이터 캡처(CDC)에서 Oracle LogMiner 또는 Oracle Binary Reader 사용 (p. 85) AWS DMS에서 소스로 자체 관리형 Oracle 데이터베이스 사용 (p. 87) AWS DMS용 소스로 Amazon 관리형 Oracle 데이터베이스 사용 (p. 89) Oracle을 AWS DMS에서 소스로 사용 시 적용되는 제한 사항 (p. 91) AWS DMS용에서 Oracle을 원본으로 사용 시 추가 연결 속성 (p. 92) Oracle용 원본 데이터 형식 (p. 96) 변경 데이터 캡처(CDC)에서 Oracle LogMiner 또는 Oracle Binary Reader 사용 Oracle은 변경 처리를 수행할 때 다시 실행 로그를 읽기 위해 Oracle LogMiner와 Oracle Binary Reader를 사 용합니다. Oracle LogMiner는 Oracle의 온라인에 SQL 인터페이스를 제공하며 다시 실행 로그 파일을 보관 합니다. Binary Reader는 원시 다시 실행 로그 파일을 직접 읽고 구분 분석하는 AWS DMS 기능입니다. 기본적으로 AWS DMS는 변경 데이터 캡처(CDC) 시 Oracle LogMiner를 사용합니다. LogMiner를 AWS DMS와 함께 사용할 때의 이점은 다음과 같습니다. LogMiner는 암호화 옵션과 압축 옵션과 같은 대다수 Oracle 옵션을 지원합니다. Binary Reader는 모든 Oracle 옵션을 지원하지 않고, 특히 암호화와 압축 옵션을 지원합니다. LogMiner는 특히 Oracle Binary Reader의 직접 액세스 설정과 비교하거나 다시 실행 로그가 Automatic Storage Management(ASM)에 있는 경우, 구성이 더 단순합니다. LogMiner는 Oracle TDE(Transparent Data Encryption)를 포함하여 대부분의 Oracle 암호화 옵션을 완전 히 지원합니다. LogMiner는 전체 로드 및 지속적인 복제(CDC) 모두에 대해 다음과 같은 HCC 압축 유형을 지원합니다. QUERY HIGH ARCHIVE HIGH ARCHIVE LOW QUERY LOW Binary Reader는 지속적인 복제(CDC)는 제외한 전체 로드 복제에 대한 QUERY LOW 압축만 지원합니다. LogMiner는 AWS DMS가 사용하기 위한 테이블 클러스터를 지원합니다. Binary Reader는 테이블 클러스 터를 지원하지 않습니다. LogMiner가 아닌 Binary Reader를 AWS DMS에서 사용 시 이점은 다음과 같습니다. 대용량 변경 사항으로 마이그레이션할 때 LogMiner의 일부 I/O 또는 CPU가 Oracle 원본 데이터베이스를 호스팅하는 컴퓨터에 영향을 줄 수도 있습니다. Binary Reader의 경우 보관 로그가 복제 인스턴스에 복사 된 후 그 곳에서 관리되므로 I/O 또는 CPU에 영향을 줄 가능성이 적습니다. 대용량 변경 사항으로 마이그레이션할 때 Binary Reader를 사용하면 Oracle LogMiner를 사용하는 경우에 비해 CDC 성능이 대개 훨씬 더 우수합니다. Binary Reader는 Oracle 버전 12c에서 LOB용 CDC를 지원합니다. 하지만 LogMiner는 그렇지 않습니다. Binary Reader는 전체 로드 및 연속 복제(CDC) 모두에 대해 다음과 같은 HCC 압축 유형을 지원합니다. QUERY HIGH ARCHIVE HIGH 85
Oracle을 원본으로 사용 ARCHIVE LOW QUERY LOW 압축 유형은 전체 로드 마이그레이션에만 지원됩니다. 일반적으로 다음 상황에 있는 경우 Oracle 데이터베이스를 마이그레이션할 때 Oracle LogMiner를 사용합니 다. 원본 Oracle 데이터베이스에서 여러 마이그레이션 작업을 실행해야 합니다. 원본 Oracle 데이터베이스의 다시 실행 로그 볼륨이나 변경 사항 볼륨이 높습니다. Oracle 12.2 이상 원본 엔드포인트로부터 LOB를 마이그레이션하는 중입니다. 워크로드에는 LOB 열만 업데이트하는 UPDATE 문이 포함되어 있습니다. 이런 경우에는 Binary Reader를 사용하십시오. 이러한 UPDATE 문은 Oracle LogMiner에서 지원하지 않습니다. 소스는 Oracle 버전 11이며, XMLTYPE 및 LOB 열에서 UPDATE 문을 수행합니다. 이 경우, Binary Reader 를 사용해야 합니다. 이러한 문은 Oracle LogMiner에서 지원하지 않습니다. Oracle 12c에서 LOB 열을 마이그레이션합니다. Oracle 12c에서는 LogMiner가 LOB 열을 지원하지 않으므 로 이 경우에는 Binary Reader를 사용하십시오. Oracle 원본 데이터베이스에서 변경 데이터 캡처(CDC)에 대한 구성 전체 로드 및 변경 데이터 캡처(CDC) 또는 CDC 전용에 대해 원본 엔드포인트로 Oracle을 사용하는 경우, 추 가 연결 속성을 설정해야 합니다. 이러한 속성은 트랜잭션 로그에 액세스하는 데 LogMiner와 Binary Reader 중 어느 것을 사용할지를 지정합니다. 추가 연결 속성은 원본 엔드포인트 생성 시 지정합니다. 연결 속성 설 정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 기본적으로 LogMiner가 사용되므로 이를 사용하는 경우 명시적으로 지정하지 않아도 됩니다. Binary Reader 가 트랜잭션 로그에 액세스할 수 있도록 하려면 다음 추가 연결 속성을 추가합니다. uselogminerreader=n;usebfile=y; Oracle 원본 데이터베이스는 Oracle Automatic Storage Management(ASM)를 사용 중인 경우 추가 연결 속 성에는 ASM 사용자 이름 및 ASM 서버 주소가 포함되어야 합니다. 원본 엔드포인트를 생성하는 경우 암호 필드에 두 암호(소스 사용자 암호와 ASM 암호)가 모두 지정되어야 합니다. 예를 들어, Oracle ASM을 사용하는 서버에 액세스하기 위해서는 다음 추가 연결 속성 형식이 사용됩니다. uselogminerreader=n;asm_user=<asm_username>;asm_server=<first_rac_server_ip_address>:<port_number>/ +ASM Oracle 원본 데이터베이스는 Oracle ASM을 사용 중인 경우 원본 엔드포인트 암호 필드에 Oracle 사용자 이 름 및 ASM 암호를 쉼표로 구분하여 지정해야 합니다. 예를 들어, 다음이 암호 필드에서 작동합니다. <oracle_user_password>,<asm_user_password> Oracle Source 데이터베이스에서의 CDC 제한 사항 Oracle 데이터베이스를 AWS DMS 변경 데이터 캡처용 소스로 사용 시 다음 제한 사항이 적용됩니다. AWS DMS는 테이블 메타데이터와 OBJECT_ID 값과 같은 Oracle DBMS_REDEFINITION 패키지에서 적 용한 변경 사항을 캡처하지 않습니다. AWS DMS는 BFILE 사용 시 CDC 모드에서 오버플로우 세그먼트가 있는 인덱스 구성된 테이블을 지원하 지 않습니다. 다음은 LogMiner를 사용하지 않고 다시 실행 로그에 액세스한 예입니다. 86
Oracle을 원본으로 사용 AWS DMS에서 소스로 자체 관리형 Oracle 데이터베이스 사용 자체 관리형 데이터베이스는 사용자가 로컬 온프레미스 데이터베이스 인스턴스나 Amazon EC2의 데이터베 이스 중 하나를 구성 및 제어하는 데이터베이스입니다. 다음에서 AWS DMS와 함께 자체 관리형 Oracle 데이 터베이스 사용 시 설정해야 하는 구성 및 권한에 대한 자세한 내용을 찾아볼 수 있습니다. AWS DMS용 자체 관리형 Oracle 원본에서 필요한 사용자 계정 권한 AWS DMS 작업에서 Oracle 데이터베이스를 소스로 사용하려면, AWS DMS Oracle 데이터베이스 정의에 지 정된 사용자에게 Oracle 데이터베이스에서 다음 권한을 부여해야 합니다. 권한을 부여할 때는 객체의 동의 어가 아닌 객체의 실제 이름을 사용하십시오. 예를 들어 밑줄 없는 V$OBJECT가 아니라 밑줄을 포함한 V_ $OBJECT를 사용하십시오. GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT 11.2.0.3) GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT GRANT SELECT ANY TRANSACTION to <dms_user> on V_$ARCHIVED_LOG to <dms_user> on V_$LOG to <dms_user> on V_$LOGFILE to <dms_user> on V_$DATABASE to <dms_user> on V_$THREAD to <dms_user> on V_$PARAMETER to <dms_user> on V_$NLS_PARAMETERS to <dms_user> on V_$TIMEZONE_NAMES to <dms_user> on V_$TRANSACTION to <dms_user> on ALL_INDEXES to <dms_user> on ALL_OBJECTS to <dms_user> on DBA_OBJECTS to <dms_user> (required if the Oracle version is earlier than on on on on on on on on on on on on on on on ALL_TABLES to <dms_user> ALL_USERS to <dms_user> ALL_CATALOG to <dms_user> ALL_CONSTRAINTS to <dms_user> ALL_CONS_COLUMNS to <dms_user> ALL_TAB_COLS to <dms_user> ALL_IND_COLUMNS to <dms_user> ALL_LOG_GROUPS to <dms_user> SYS.DBA_REGISTRY to <dms_user> SYS.OBJ$ to <dms_user> DBA_TABLESPACES to <dms_user> ALL_TAB_PARTITIONS to <dms_user> ALL_ENCRYPTED_COLUMNS to <dms_user> V_$LOGMNR_LOGS to <dms_user> V_$LOGMNR_CONTENTS to <dms_user> 지속적 복제를 사용할 때(CDC) 다음과 같은 추가 권한이 필요합니다. AWS DMS에서 11g 및 12c용 Oracle LogMiner 다시 실행 로그에 추가하기 위해 CDC를 사용할 때 다음과 같은 권한이 필요합니다. Grant EXECUTE ON dbms_logmnr TO <dms_user>; AWS DMS에서 12c 전용 Oracle LogMiner 다시 실행 로그에 추가하기 위해 CDC를 사용할 때 다음과 같은 권한이 필요합니다. Grant LOGMINING TO <dms_user>; 87
Oracle을 원본으로 사용 다음에 나열된 추가 기능을 사용하는 경우, 지정된 추가 권한이 필요합니다. 보기가 노출되면, 에<dms_user> ALL_VIEWS에 대한 SELECT 권한을 부여합니다. 패턴을 사용하여 복제 작업의 테이블 이름을 일치시키는 경우 SELECT ANY TABLE 권한을 부여합니다. 복제 작업에 테이블 이름을 지정하는 경우 목록의 각 테이블에 SELECT 권한을 부여합니다. 보충 로깅을 추가할 때에는 ANY TABLE에 대해 ALTER 권한을 부여합니다. 보충 로깅을 추가하고 특정 테이블 목록을 사용할 때에는 목록의 각 테이블에 대해 ALTER 권한을 부여합 니다. Oracle RAC에서 마이그레이션할 때에는 접두사 g_$ 및 v_$를 사용한 구체화된 보기에 SELECT 권한을 부여합니다. AWS DMS용 자체 관리형 Oracle 소스 구성 자체 관리형 Oracle 데이터베이스를 AWS DMS용 소스로 사용하기 전에 다음과 같은 여러 작업을 수행해야 합니다. Oracle 계정 액세스 권한 제공 AWS DMS용 Oracle 사용자 계정을 제공합니다. 이전 섹션에 지정된 바와 같이 사용자 계정에는 Oracle 데이터베이스에 대한 읽기/쓰기 권한이 있어야 합니다. ARCHIVELOG 모드가 켜져 있는지 확인 Oracle은 다른 2개 모드 즉, ARCHIVELOG 모드와 NOARCHIVELOG 모드에서 실행될 수 있습니다. AWS DMS에서 Oracle을 사용하려면 소스 데이터베이스 가 ARCHIVELOG 모드여야 합니다. 보충 로깅 설정 CDC 또는 전체 로드 및 CDC 작업에서 원본을 사용하려고 계획 중인 경우 보충 로깅을 설정하여 복제 변경 사항을 캡처해야 합니다. Oracle에 대해 보충 로깅을 활성화하는 데는 두 단계가 필요합니다. 먼저, 데이터베이스 수준 보충 로깅을 활 성화되어야 합니다. 이렇게 하면 클러스터된 테이블 및 색인으로 구성된 테이블과 같은 다양한 테이블 구조 를 지원하는 데 필요한 최소한의 정보를 LogMiner에서 얻을 수 있습니다. 두 번째, 마이그레이션할 테이블마 다 테이블 수준 보충 로깅을 활성화해야 합니다. 데이터베이스 수준 보충 로깅을 활성화하려면 1. 다음 쿼리를 실행하여 데이터베이스 수준 보충 로깅이 이미 활성화되어 있는지 확인합니다. 반환 결과는 GE to 9.0.0에서 와야 합니다. SELECT name, value, description FROM v$parameter WHERE name = 'compatible'; 2. 다음 쿼리를 실행합니다. 반환된 결과는 YES 또는 IMPLICIT여야 합니다. SELECT supplemental_log_data_min FROM v$database; 3. 다음 쿼리를 실행하여 데이터베이스 수준 보충 로깅을 활성화합니다. ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; 테이블 수준 보충 로깅을 활성화하는 데는 두 가지 방법이 있습니다. 첫 번째 방법의 경우, 데이터베이스 사 용자 계정에 마이그레이션하려는 모든 테이블에 대한 ALTER TABLE 권한이 있으면 다음에 설명된 대로 추 가 연결 파라미터 addsupplementallogging을 사용하면 됩니다. 그렇지 않으면, 마이그레이션할 각 테이 블에 대해 다음 단계를 완료하면 됩니다. 테이블 수준 보충 로깅을 활성화하려면 1. 테이블에 기본 키가 있는 경우, 다음 명령을 실행하여 테이블에 대해 PRIMARY KEY 보충 로깅을 추가 합니다. 88
Oracle을 원본으로 사용 ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; 2. 기본 키가 없고 테이블에 여러 고유 인덱스가 있는 경우, AWS DMS에서는 색인 이름의 알파벳 순서로 첫 번째 고유 색인을 사용합니다. 해당 색인의 열에서 앞에 그림처럼 보충 로그 그룹을 생성합니다. 3. 기본 키와 고유 인덱스가 모두 없는 경우, 모든 열에서 보충 로깅이 추가되어야 합니다. 다음 쿼리를 실 행하여 모든 열에 보충 로깅을 추가합니다. ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 일부의 경우, 대상 테이블 기본 키 또는 고유 색인이 원본 테이블 기본 키 또는 고유 색인과 다릅니다. 이러한 경우, 대상 테이블 기본 키 또는 고유 색인을 구성하는 원본 테이블 열에 보충 로깅을 추가합니다. 대상 테이 블 기본 키를 변경하는 경우, 선택한 인덱스의 열에서 보충 로깅을 추가합니다. 보충 로깅을 원본 기본 키 또 는 고유 인덱스의 열에서 추가하지 마십시오. 테이블에 대해 필터가 정의되어 있는 경우 등과 같이 필요에 따라 추가 로깅을 추가합니다. 테이블에 고유 인 덱스 또는 기본 키가 있다면 필터에 포함된 열이 기본 키 또는 고유 인덱스 열과 다른 경우에 각 열에서 보충 로깅을 추가하십시오. 그렇지만, ALL COLUMNS 보충 로깅이 테이블에 추가된 경우, 로깅을 더 추가하지 않 아도 됩니다. ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG GROUP <group_name> (<column_list>) ALWAYS; AWS DMS용 소스로 Amazon 관리형 Oracle 데이터베이스 사용 Amazon 관리형 데이터베이스는 Amazon RDS, Amazon Aurora 또는 Amazon Simple Storage Service(Amazon S3)와 같은 Amazon 서비스에 있는 데이터베이스입니다. 다음에서 AWS DMS와 함께 Amazon 관리형 Oracle 데이터베이스 사용 시 설정해야 하는 구성 및 권한을 찾아볼 수 있습니다. AWS DMS용 Amazon 관리형 Oracle 소스에서 필요한 사용자 계정 권한 Amazon RDS에서 Oracle 데이터베이스에 대한 권한을 부여하려면, 저장된 프로시저 rdsadmin.rdsadmin_util.grant_sys_object를 사용합니다. 자세한 내용은 SYS 객체에 SELECT 또 는 EXECUTE 권한 부여를 참조하십시오. 소스 Oracle 엔드포인트에 액세스하는 데 사용되는 AWS DMS 사용자 계정에 다음 권한을 부여합니다. GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT GRANT SELECT ANY TABLE to <dms_user>; SELECT on ALL_VIEWS to <dms_user>; SELECT ANY TRANSACTION to <dms_user>; SELECT on DBA_TABLESPACES to <dms_user>; SELECT on ALL_TAB_PARTITIONS to <dms_user>; SELECT on ALL_INDEXES to <dms_user>; SELECT on ALL_OBJECTS to <dms_user>; SELECT on ALL_TABLES to <dms_user>; SELECT on ALL_USERS to <dms_user>; SELECT on ALL_CATALOG to <dms_user>; SELECT on ALL_CONSTRAINTS to <dms_user>; SELECT on ALL_CONS_COLUMNS to <dms_user>; SELECT on ALL_TAB_COLS to <dms_user>; SELECT on ALL_IND_COLUMNS to <dms_user>; SELECT on ALL_LOG_GROUPS to <dms_user>; LOGMINING TO <dms_user>; 또한 다음을 실행하십시오. 89
Oracle을 원본으로 사용 exec rdsadmin.rdsadmin_util.grant_sys_object('v_$archived_log','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$log','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$logfile','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$database','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$thread','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$parameter','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$nls_parameters','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$timezone_names','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$transaction','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('dba_registry','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('obj$','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('all_encrypted_columns','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$logmnr_logs','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('v_$logmnr_contents','<dms_user>','select'); exec rdsadmin.rdsadmin_util.grant_sys_object('dbms_logmnr','<dms_user>','execute'); AWS DMS용 Amazon 관리형 Oracle 소스 구성 Amazon 관리형 Oracle 데이터베이스를 AWS DMS용 소스로 사용하기 전에 다음과 같은 여러 작업을 수행 해야 합니다. Oracle 계정 액세스 권한 제공 AWS DMS용 Oracle 사용자 계정을 제공합니다. 이전 섹션에 지정된 바와 같이 사용자 계정에는 Oracle 데이터베이스에 대한 읽기/쓰기 권한이 있어야 합니다. Amazon RDS 데이터베이스의 백업 보존 기간을 하루 이상으로 설정합니다 백업 보존 기간을 설정하면 데이터베이스가 ARCHIVELOG 모드에서 실행됩니다. 백업 보존 기간 설정에 대한 자세한 내용은 Amazon RDS 사용 설명서의 자동 백업 작업을 참조하십시오. 보관 기간 설정 다음 명령을 실행하여 Oracle 데이터베이스 인스턴스의 보관된 다시 실행 로그를 보존합 니다. 이 명령을 실행하면 AWS DMS가 LogMiner를 사용하여 로그 정보를 가져올 수 있습니다. 마이그레 이션 기간 동안 보관된 다시 실행 로그를 위한 스토리지 공간이 충분한지 확인해야 합니다. 다음 예제에서는 로그가 24시간 동안 보관됩니다. exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24); 보충 로깅 설정 CDC 또는 전체 로드 및 CDC 작업에서 소스를 사용하려는 경우, 복제 변경 사항을 캡처 하도록 보충 로깅을 설정합니다. Oracle에 대해 보충 로깅을 활성화하는 데는 두 단계가 필요합니다. 먼저, 데이터베이스 수준 보충 로깅을 활성화되어야 합니다. 이렇게 하면 클러스터된 테이블 및 색인으로 구성된 테이블과 같은 다양한 테이블 구조를 지원하는 데 필요한 최소한의 정보를 LogMiner에서 얻을 수 있습니다. 두 번째, 마이그레이션할 테 이블마다 테이블 수준 보충 로깅을 활성화해야 합니다. 데이터베이스 수준 보충 로깅을 활성화하려면 다음 쿼리를 실행하여 데이터베이스 수준 보충 로깅을 활성화합니다. exec rdsadmin.rdsadmin_util.alter_supplemental_logging('add'); 테이블 수준 보충 로깅을 활성화하려면 다음 명령을 실행하여 기본 키가 있는 테이블에 대해 PRIMARY KEY 로깅을 활성화합니다. exec rdsadmin.rdsadmin_util.alter_supplemental_logging('add','primary KEY'); 90
Oracle을 원본으로 사용 기본 키가 없는 테이블의 경우, 다음 명령을 실행하여 보충 로깅을 추가합니다. alter table <table_name> add supplemental log data (ALL) columns; 기본 키가 없는 테이블을 생성할 때에는 생성 문에서 보충 로깅 절을 포함하거나 테이블을 변경하여 보충 로깅을 추가해야 합니다. 다음은 테이블을 생성하고 보충 로깅을 추가하는 명령입니다. create table <table_name> (<column_list>, supplemental log data (ALL) columns); 테이블을 생성한 후 나중에 기본 키를 추가할 경우, 테이블에 보충 로깅을 추가해야 합니다. 다음 명령을 사용하여 테이블에 보충 로깅을 추가합니다. alter table <table_name> add supplemental log data (PRIMARY KEY) columns; AWS DMS의 Oracle 소스용 Amazon RDS에 대해 변경 데이터 캡처(CDC) 구성 Amazon RDS for Oracle 인스턴스를 CDC의 소스로 사용하도록 AWS DMS를 구성할 수 있습니다. Oracle 원본(Oracle 버전 11.2.0.4.v11 이상과 12.1.0.2.v7 이상)용 Amazon RDS에서 Oracle Binary Reader를 사용 할 수 있습니다. Amazon RDS for Oracle 소스 엔드포인트를 생성할 때 다음과 같은 추가 연결 속성을 포함합니다. uselogminerreader=n;usebfile=y;accessalternatedirectly=false; usealternatefolderforonline=true;oraclepathprefix=/rdsdbdata/db/orcl_a/; usepathprefix=/rdsdbdata/log/;replacepathprefix=true Note 여러 속성 설정의 세미콜론 구분자(;) 뒤에 공백이 오면 안 됩니다. Oracle을 AWS DMS에서 소스로 사용 시 적용되는 제한 사항 AWS DMS용 소스로 Oracle 데이터베이스 사용 시 다음 제한 사항이 적용됩니다. AWS DMS는 Oracle LogMiner를 사용 시 Oracle 투명 데이터 암호화(TDE) 테이블스페이스 암호화 및 AWS Key Management Service(AWS KMS) 암호화를 지원합니다. 그 밖의 모든 암호화 형식은 지원되지 않습니다. CDC를 사용하려면 LOB가 있는 테이블에 기본 키가 있어야 합니다. AWS DMS는 Oracle 버전 11 이상에서 rename table <table name> to <new table name> 구문 을 지원합니다. AWS DMS는 ADD, DROP, EXCHANGE, TRUNCATE과 같은 데이터 정의 언어(DDL) 다시 말해 파티 션이나 하위 파티션 작업을 통해 적용된 데이터 변경 사항을 복제하지 않습니다. 이러한 변경 사항을 복제 하려면 복제되는 테이블을 다시 로드하십시오. AWS DMS는 테이블을 다시 로드할 필요 없이 향후 데이터 변경 사항을 새로 추가된 파티션에 복제합니다. 단, 이 파티션의 이전 데이터 레코드에 대한 UPDATE 작업 은 실패하며 0 rows affected 경고가 생성됩니다. DDL 문 ALTER TABLE ADD <column> <data_type> DEFAULT <>은 대상에 기본값을 복제하지 않 습니다. 대상의 새로운 열은 NULL로 설정됩니다. 새 열의 Null이 허용된 경우, Oracle은 DDL 자체를 로깅 하기 전에 모든 테이블 행을 업데이트합니다. 그 결과 AWS DMS는 카운터에 대한 변경 사항을 캡처하지 만 대상을 업데이트하지 않습니다. 새 열은 NULL로 설정되기 때문에 대상 테이블에 기본 키나 고유 인덱 스가 없으면 후속 업데이트에서 0 rows affected 경고를 생성합니다. 91
Oracle을 원본으로 사용 CREATE TABLE AS 문을 통해 활성화된 데이터 변경 사항은 지원되지 않습니다. 하지만, 새 테이블이 대 상에서 생성됩니다. 제한적인 크기의 LOB 모드가 활성화되면, AWS DMS는 대상에서 NULL 값으로서 Oracle 소스의 빈 LOB 를 복제합니다. AWS DMS가 CDC를 시작할 때 타임스탬프를 Oracle 시스템 변경 번호(SCN)에 매핑합니다. 기본적으로 Oracle은 단 5일의 타임스탬프만을 SCN 매핑에 유지합니다. 지정된 타임스탬프가 너무 오래된 경우(5일 의 보존 기간보다 오래 유지) Oracle에서 오류를 생성합니다. 자세한 내용은 Oracle 설명서를 참조하십시 오. AWS DMS는 ASM 프록시를 사용하는 Orace 소스 연결을 지원하지 않습니다. AWS DMS는 가상 열을 지원하지 않습니다. 멀티테넌트 환경에서 AWS DMS는 컨테이너(CDB) 내의 플러그형 데이터베이스(PDB)에 연결할 수 있 습니다. 이 구성에서는 변경 데이터 캡처(CDC)를 위해 Binary Reader를 사용해야 합니다. PDB의 경우, LogMiner가 지원되지 않습니다. AWS DMS용에서 Oracle을 원본으로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 Oracle 원본을 구성할 수도 있습니다. 소스 엔드포인트 생성 시 이러한 설정을 지 정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 Oracle 데이터베이스를 AWS DMS의 소스로 구성하는 데 사용할 수 있는 추가 연결 속성이 나와 있습니다. 이름 설명 addsupplementallogging 이 속성을 설정하면 Oracle 데이터베이스의 테이블 수준 보충 로깅을 설정할 수 있습니다. 이 속성은 마이그레이션 작업을 위 해 선택된 모든 테이블에 PRIMARY KEY 보충 로깅을 활성화 합니다. 기본값: N 유효한 값: Y/N 예: addsupplementallogging=y; Note 이 옵션을 사용할 경우, 앞에서 설명한 대로 데이터베 이스 수준 보충 로깅을 계속 활성화해야 합니다. additionalarchivedlogdestid 기본/스탠바이 설정에서 이 속성을 archivedlogdestid와 함께 설정합니다. 이 속성은 장애 조치 시 유용합니다. 이 경우, AWS DMS는 변경 사항을 읽기 위해 아카이브 다시 실행 로그 를 가져올 대상 주소를 알아야 합니다. 이것이 필요한 이유는 장애 조치 후에 이전 기본 인스턴스가 이제는 대기 인스턴스이 기 때문입니다. uselogminerreader 이 속성을 Y로 설정하면 LogMiner 유틸리티를 사용하여 변경 데이터를 캡처합니다(기본값). AWS DMS가 이진 파일에서 다 시 실행 로그에 액세스하도록 하려면 이 옵션을 N으로 설정합 니다. 이 옵션을 N으로 설정할 때는 설정 usebfile=y도 추가 하십시오. 자세한 내용은 변경 데이터 캡처(CDC)에서 Oracle LogMiner 또는 Oracle Binary Reader 사용 (p. 85) 단원을 참조하십시오. 기본 값: Y 92
Oracle을 원본으로 사용 이름 설명 유효한 값: Y/N 예: uselogminerreader=n;usebfile=y; Oracle 원본 데이터베이스는 Oracle Automatic Storage Management(ASM)을 사용 중인 경우 추가 연결 파라미터에는 ASM 사용자 이름 및 ASM 서버 주소가 포함되어야 합니다. 암 호 필드에 두 암호(원본 사용자 암호와 ASM 암호)가 모두 쉼표 로 구분되어 지정되어 있어야 합니다. 예: uselogminerreader=n;asm_user=<asm_username>;asm_server=<f +ASM; Binary Reader 유틸리티를 사용하여 변경 데이터를 캡처하 려면 이 속성을 Y로 설정합니다. 이 속성을 Y로 설정하려면 uselogminerreader를 N으로 설정합니다. Amazon RDS for Oracle을 소스로 하여 Binary Reader를 사용하려면 추가 속 성을 설정합니다. 자세한 내용은 변경 데이터 캡처(CDC)에서 Oracle LogMiner 또는 Oracle Binary Reader 사용 (p. 85) 단원을 참조하십시오. usebfile 기본값: N 유효한 값: Y/N 예: uselogminerreader=n;usebfile=y; accessalternatedirectly Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 false로 설정하 십시오. 그러면 DMS 인스턴스가 직접 파일 액세스를 사용하여 지정된 경로 접두사 교체를 통해 다시 실행 로그에 액세스하지 않습니다. 자세한 내용은 AWS DMS의 Oracle 소스용 Amazon RDS에 대해 변경 데이터 캡처(CDC) 구성 (p. 91) 단원을 참조하십시오. 기본값: true 유효한 값: true/false 예: uselogminerreader=n;usebfile=y;accessalternatedirectly=fa usealternatefolderforonline Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 true로 설정하 십시오. 그러면 DMS 인스턴스가 지정된 접두사 교체를 사용해 모든 온라인 다시 실행 로그에 액세스합니다. 자세한 내용은 AWS DMS의 Oracle 소스용 Amazon RDS에 대해 변경 데이터 캡처(CDC) 구성 (p. 91) 단원을 참조하십시오. 기본값: false 유효한 값: true/false 예: uselogminerreader=n;usebfile=y;accessalternatedirectly=fa usealternatefolderforonline=true; 93
Oracle을 원본으로 사용 이름 설명 oraclepathprefix Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하려면 이 문자열 속성을 필수 값으로 설 정하십시오. 이 값은 다시 실행 로그에 액세스하는 데 사용되는 기본 Oracle 루트를 지정합니다. 자세한 내용은 AWS DMS의 Oracle 소스용 Amazon RDS에 대해 변경 데이터 캡처(CDC) 구성 (p. 91) 단원을 참조하십시오. 기본값: none 유효한 값: /rdsdbdata/db/orcl_a/ 예: uselogminerreader=n;usebfile=y;accessalternatedirectly=fa usealternatefolderforonline=true;oraclepathprefix=/ rdsdbdata/db/orcl_a/; usepathprefix Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하려면 이 문자열 속성을 필수 값으로 설 정하십시오. 이 값은 다시 실행 로그에 액세스하기 위해 기본 Oracle 루트를 대체하는 데 사용되는 경로 접두사를 지정합니 다. 자세한 내용은 AWS DMS의 Oracle 소스용 Amazon RDS 에 대해 변경 데이터 캡처(CDC) 구성 (p. 91) 단원을 참조하 십시오. 기본값: none 유효한 값: /rdsdbdata/log/ 예: uselogminerreader=n;usebfile=y;accessalternatedirectly=fa usealternatefolderforonline=true;oraclepathprefix=/ rdsdbdata/db/orcl_a/; usepathprefix=/ rdsdbdata/log/; replacepathprefix Amazon RDS for Oracle을 소스로 하여 변경 데이터 캡처에 Binary Reader를 사용하기 위해서는 이 속성을 true로 설정 하십시오. 이렇게 설정하면 DMS 인스턴스가 다시 실행 로 그에 액세스하기 위해 지정된 usepathprefix 설정을 기 본 Oracle 루트로 대체합니다. 자세한 내용은 AWS DMS의 Oracle 소스용 Amazon RDS에 대해 변경 데이터 캡처(CDC) 구성 (p. 91) 단원을 참조하십시오. 기본값: false 유효한 값: true/false 예: uselogminerreader=n;usebfile=y;accessalternatedirectly=fa usealternatefolderforonline=true;oraclepathprefix=/ rdsdbdata/db/orcl_a/; usepathprefix=/ rdsdbdata/log/;replacepathprefix=true; 94
Oracle을 원본으로 사용 이름 설명 retryinterval 시스템이 쿼리를 다시 전송하기까지 대기하는 시간(초)을 지정 합니다. 기본값: 5 유효한 값: 1부터 시작하는 숫자 예: retryinterval=6; archivedlogdestid 보관된 다시 실행 로그의 대상을 지정합니다. 이 값은 $archived_log 테이블의 DEST_ID 숫자와 같아야 합니다. 여러 로그 대상(DEST_ID)을 사용할 때에는 보관된 다시 실행 로그 위치 식별자를 지정하는 것이 좋습니다. 그러면 시작 단계부터 올바른 로그에 액세스하도록 보장하여 성능이 개선됩니다. 기본값: 0 유효한 값: 숫자 예: archivedlogdestid=1; archivedlogsonly 이 필드를 Y로 설정하면 AWS DMS가 보관된 다시 실행 로그 에만 액세스합니다. 보관된 다시 실행 로그가 Oracle ASM에만 보관되면, AWS DMS 사용자 계정에는 ASM 권한만을 부여하 면 됩니다. 기본값: N 유효한 값: Y/N 예: archivedlogsonly=y; numberdatatypescale 숫자 크기를 지정합니다. 크기를 최대 38로 선택하거나 FLOAT 를 선택할 수 있습니다. 기본적으로 NUMBER 데이터 형식은 정밀도 38, 크기 10으로 변환됩니다. 기본값: 10 유효한 값: -1~38(FLOAT의 경우 -1) 예: numberdatatypescale=12 afterconnectscript AWS DMS가 엔드포인트에 연결된 즉시 실행할 스크립트를 지 정합니다. 유효한 값: 세미 콜론으로 끝나는 SQL 문. 모든 SQL 문이 지원 되는 것은 아닙니다. 예: afterconnectscript=alter SESSION SET CURRENT_SCHEMA = system; 95
Oracle을 원본으로 사용 이름 설명 failtasksonlobtruncation true로 설정할 경우 LOB 열의 실제 크기가 지정된 LobMaxSize보다 큰 경우 작업이 실패합니다. 작업이 제한된 LOB 모드로 설정되어 있고 이 옵션이 true로 설정된 경우, LOB 데이터가 잘리지 않는 대신에 작업이 실패합 니다. 기본값: false 유효 값: 부울 예: failtasksonlobtruncation=true; true로 설정할 경우, 이 속성에서 테이블스페이스 복제를 지원 합니다. readtablespacename 기본값: false 유효 값: 부울 예: readtablespacename=true; 사용 이 속성을 사용하여 스탠바이 동기화에 대한 시간(분)을 지정합니다. standbydelaytime AWS DMS 버전 2.3.0 이후 버전에서는 지속적인 변경 복제 를 위한 소스로 활성 데이터 보호 예비 인스턴스를 사용하는 Oracle CDC 작업을 생성할 수 있습니다. 이렇게 하면 프로덕션 단계에 있을 수 있는 활성 데이터베이스에 연결할 필요가 없습 니다. 기본값: 0 유효한 값: 숫자 예: standbydelaytime=1; Oracle용 원본 데이터 형식 AWS DMS용 Oracle 엔드포인트는 대다수 Oracle 데이터 형식을 지원합니다. 다음 표에는 AWS DMS를 사 용하고 기본적으로 AWS DMS 데이터 형식에 매핑할 때 지원되는 Oracle 소스 데이터 형식이 나와 있습니다. 대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참 조하십시오. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. Oracle 데이터 형식 AWS DMS 데이터 형식 BINARY_FLOAT REAL4 BINARY_DOUBLE REAL8 BINARY BYTES 96
Oracle을 원본으로 사용 Oracle 데이터 형식 AWS DMS 데이터 형식 FLOAT (P) 정밀도가 24 이하인 경우, REAL4를 사용합니다. 정밀도가 24보다 큰 경우, REAL8을 사용합니다. NUMBER (P,S) 크기가 0 미만이면, REAL8을 사용합니다. Oracle 원본 데이터베이스 설 정의 [Expose number as] 속 성에 따라 NUMBER. 크기가 0인 경우: 그리고 정밀도가 0이면, REAL8을 사용합니다. 그리고 정밀도가 2 이상인 경우, INT1을 사용합니다. 그리고 정밀도가 2보다 크고 4 이하인 경우, INT2를 사용합니다. 그리고 정밀도가 4보다 크고 9 이하인 경우, INT4를 사용합니다. 그리고 정밀도가 9보다 큰 경우, NUMERIC을 사용합니다. 그리고 정밀도가 크기 이상인 경우, NUMERIC을 사용합니다. 다른 모든 경우에서는 REAL8을 사용합니다. 날짜 DATETIME INTERVAL_YEAR TO MONTH STRING(간격 year_to_month 표시 포함) INTERVAL_DAY TO SECOND STRING(간격 day_to_second 표시 포함) TIME DATETIME TIMESTAMP DATETIME TIMESTAMP(시간대 사용) STRING(timestamp_with_timezone 표시 포함) TIMESTAMP WITH LOCAL TIME ZONE STRING(timestamp_with_local_ timezone 표시 포함) CHAR STRING VARCHAR2 STRING NCHAR WSTRING NVARCHAR2 WSTRING RAW BYTES REAL REAL8 BLOB BLOB AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 BLOB 데이 터 형식 사용을 활성화해야 합니다. AWS DMS는 기본 키를 포함하는 테 이블에서만 BLOB 데이터 형식을 지원합니다. 97
Oracle을 원본으로 사용 Oracle 데이터 형식 AWS DMS 데이터 형식 CLOB CLOB AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 CLOB 데 이터 형식 사용을 활성화해야 합니다. 변경 데이터 캡처(CDC) 중에 AWS DMS는 기본 키를 포함하는 데이터에서만 CLOB 데이터 형식을 지원합니 다. NCLOB NCLOB AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 NCLOB 데 이터 형식 사용을 활성화해야 합니다. CDC 중에 AWS DMS는 기본 키를 포함하는 테이블에서만 NCLOB 데이터 형식을 지원합니다. LONG CLOB LONG 데이터 형식은 배치 최적화된 적용 모드(TurboStream CDC 모드) 에서 지원되지 않습니다. AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 LOB 사용을 활성화해야 합니다. CDC 중에 AWS DMS는 기본 키가 있는 테이블에서만 LOB 데이터 형식을 지원합니다. LONG RAW BLOB LONG RAW 데이터 형식은 배치 최적화된 적용 모드(TurboStream CDC 모드)에서 지원되지 않습니다. AWS DMS에서 이 데이터 형식을 사용하려 면, 특정 작업에서 LOB 사용을 활성화해야 합니다. CDC 중에 AWS DMS 는 기본 키가 있는 테이블에서만 LOB 데이터 형식을 지원합니다. XMLTYPE CLOB Support for the XMLTYPE 데이터 형식을 지원하려면 Oracle Instant Client가 아닌 전체 Oracle Client가 필요합니다. 대상 열이 CLOB이면, 전 체 LOB 모드와 제한적인 LOB 모드 모두가 지원됩니다(대상에 따라 다 름). 다음 데이터 형식의 열과 함께 소스로 사용되는 Oracle 테이블은 지원되지 않으며 복제될 수도 없습니다. 이 데이터 형식을 사용하는 열을 복제하면 null 열이 됩니다. BFILE ROWID REF UROWID 중첩 테이블 사용자 정의 데이터 형식 ANYDATA Note 가상 열은 지원되지 않습니다. 98
SQL Server를 원본으로 사용 Microsoft SQL Server 데이터베이스를 AWS DMS에서 소스로 사용 AWS DMS(AWS DMS)를 사용하여 하나 또는 다수의 Microsoft SQL Server 데이터베이스에서 데이터를 마 이그레이션할 수 있습니다. SQL Server 데이터베이스를 원본으로 사용하면, 데이터를 다른 SQL Server 데 이터베이스 또는 지원되는 다른 데이터베이스 중 하나로 마이그레이션할 수 있습니다. AWS DMS는 소스로 Microsoft SQL Server 버전 2005, 2008, 2008R2, 2012, 2014, 2016 및 2017용 온프레 미스 및 Amazon EC2 인스턴스 데이터베이스를 지원합니다. Enterprise, Standard, Workgroup 및 Developer 버전이 지원됩니다. Web 및 Express 버전은 지원되지 않습니다. AWS DMS는 소스로 SQL Server 버전 2008R2, 2012, 2014, 2016 및 2017용 Amazon RDS DB 인스턴스 데 이터베이스를 지원합니다. Enterprise 및 Standard 버전이 지원됩니다. Enterprise 버전의 경우 모든 버전에 대해 CDC가 지원됩니다. Standard 버전의 경우 2016 SP1 이상에만 CDC가 지원됩니다. Web, Workgroup, Developer, Express 버전은 지원되지 않습니다. 네트워크상의 어느 컴퓨터에든 원본 SQL Server 데이터베이스를 설치할 수 있습니다. 소스 데이터베이스에 대해 사용자가 선택한 유형과 작업에 적합한 액세스 권한이 있는 SQL Server 계정이 있어야만 AWS DMS에 서 사용할 수 있습니다. AWS DMS는 SQL Server의 이름이 지정된 인스턴스로부터의 데이터 마이그레이션을 지원합니다. 원본 엔 드포인트를 생성하는 경우 서버 이름에 다음 표기법을 사용할 수 있습니다. IPAddress\InstanceName 예를 들어 올바른 원본 엔드포인트 서버 이름은 다음과 같습니다. 여기서, 이름의 첫 번째 부분은 서버의 IP 주소이며, 두 번째 부분은 SQL Server 인스턴스 이름(이 예에서는 SQLTest)입니다. 10.0.0.25\SQLTest SSL을 사용하여 SQL Server 엔드포인트와 복제 인스턴스 사이의 연결을 암호화할 수 있습니다. SQL Server 엔드포인트에서 SSL을 사용하는 방법에 대한 자세한 내용은 AWS Database Migration Service에서 SSL 사용 (p. 47) 섹션을 참조하십시오. 원본 SQL Server 데이터베이스에서 변경 사항을 캡처하려면, 데이터베이스가 전체 백업에 맞게 구성되어야 하고 Enterprise, Developer, Standard Edition 중 하나여야 합니다. SQL Server 소스 데이터베이스 및 AWS DMS 사용에 대한 세부 정보는 다음 내용을 참조하십시오. 주제 AWS DMS용 소스로 SQL Server 사용 시 적용되는 제한 사항 (p. 99) SQL Server 원본에서 지속적 복제(CDC) 사용 (p. 100) 지원되는 압축 방법 (p. 104) SQL Server AlwaysOn 가용성 그룹 사용 (p. 104) SQL Server 데이터베이스를 AWS DMS용 복제 소스로 구성 (p. 104) SQL Server를 AWS DMS용 소스로 사용 시 추가 연결 속성 (p. 105) SQL Server용 원본 데이터 형식 (p. 106) AWS DMS용 소스로 SQL Server 사용 시 적용되는 제한 사항 다음 제한 사항은 SQL Server 데이터베이스를 AWS DMS용 소스로 사용 시 적용됩니다. 열의 자격 증명 속성은 대상 데이터베이스 열로 마이그레이션되지 않습니다. 99
SQL Server를 원본으로 사용 AWS DMS 엔진 버전 2.4.x 이하에서는 헤더 및 매핑 정보를 포함하여 8,000바이트 이상의 정보가 포함된 행의 변경 사항은 올바르게 처리되지 않습니다. 이 문제는 SQL Server TLOG 버퍼 크기의 제한 때문에 나 타납니다. 이 문제를 방지하려면 최신 AWS DMS 버전을 사용하십시오. SQL Server 엔드포인트는 희소 테이블 사용을 지원하지 않습니다. Windows 인증은 지원되지 않습니다. SQL Server에서 컴퓨팅된 필드의 변경 사항은 복제되지 않습니다. 임시 테이블은 지원되지 않습니다. SQL Server 파티션 전환은 지원되지 않습니다. 원본에서 클러스터링된 인덱스는 대상에서 클러스터링되지 않은 인덱스로 생성됩니다. WRITETEXT 및 UPDATETEXT 유틸리티를 사용하는 경우, AWS DMS는 소스 데이터베이스에서 적용된 이벤트를 캡처하지 않습니다. 다음 데이터 조작 언어(DML) 패턴은 지원되지 않습니다. SELECT <*> INTO <new_table> FROM <existing_table> SQL Server를 소스로 사용할 경우, 열 수준 암호화는 지원되지 않습니다. SQL Server 2008과 2008 R2의 알려진 문제로 인해 AWS DMS는 소스인 SQL Server 2008 또는 SQL Server 2008 R2에서 서버 수준 감사를 지원하지 않습니다. 예를 들어 다음 명령을 실행하면 AWS DMS에 서 오류가 발생합니다. USE [master] GO ALTER SERVER AUDIT [my_audit_test-20140710] WITH (STATE=on) GO SQL Server 원본에서 지속적 복제(CDC) 사용 온프레미스 또는 Amazon EC2의 자체 관리형 SQL Server 데이터베이스 또는 Amazon RDS의 Amazon 관리 형 데이터베이스에 지속적 복제(변경 데이터 캡처, CDC)를 사용할 수 있습니다. AWS DMS는 다음과 같은 SQL Server 구성에 대해 지속적 복제를 지원합니다. 온프레미스 또는 Amazon EC2에 있는 소스 SQL Server 인스턴스의 경우, AWS DMS는 SQL Server Enterprise, Standard 및 Developer 버전에 대해 지속적 복제를 지원합니다. Amazon RDS를 실행하는 소스 SQL Server 인스턴스의 경우, AWS DMS는 SQL Server Enterprise ~ SQL Server 2016 SP1에 대해 지속적 복제를 지원합니다. 이러한 버전을 벗어나는 버전의 경우 AWS DMS는 SQL Server Enterprise 및 Standard 버전 모두에 대해 CDC를 지원합니다. AWS DMS에서 지속적 복제를 자동으로 설정하게 하려면 소스 데이터베이스에 연결하는 데 사용하는 AWS DMS 사용자 계정에 sysadmin 고정 서버 역할이 있어야 합니다. 사용하는 사용자 계정에 sysadmin 역할을 할당하지 않으려는 경우, 지속적 복제를 계속 사용할 수 있습니다. 그러려면 다음에 설명하는 일련의 수동 단 계에 따릅니다. 특히 SQL Server 데이터베이스를 AWS DMS의 소스로 이용하는 지속적 복제를 사용할 때 다음 요구 사항이 적용됩니다. SQL Server는 전체 백업에 맞게 구성되어야 하며, 사용자는 데이터 복제를 시작하기 전에 백업을 수행해 야 합니다. 복구 모델은 [Bulk logged] 또는 [Full]로 설정되어야 합니다. 100
SQL Server를 원본으로 사용 여러 디스크로의 SQL Server 백업은 지원되지 않습니다. 다양한 디스크에서 데이터베이스 백업을 여러 파 일로 기록하도록 백업이 정의된 경우, AWS DMS가 데이터를 읽을 수 없어 AWS DMS 작업에 실패합니다. 자체 관리형 SQL Server 원본의 경우, 작업을 제거할 때 DMS CDC 작업에서 사용되는 원본 데이터베이스 의 SQL Server Replication Publisher 정의는 제거되지 않음에 유의하십시오. SQL Server 시스템 관리자는 자체 관리형 원본을 위해 SQL Server에서 이 정의를 삭제해야 합니다. CDC 중에 AWS DMS는 변경 사항을 읽기 위해 SQL Server 트랜잭션 로그 백업을 검색해야 합니다. AWS DMS는 타사 백업 소프트웨어를 사용하여 생성된 SQL Server 트랜잭션 로그 백업 사용을 지원하지 않습 니다. 자체 관리형 SQL Server 원본의 경우, SQL Server는 변경 사항이 게시될 때까지 새로 생성된 테이블에서 변경 사항을 캡처하지 않음에 유의하십시오. 테이블이 SQL Server 소스에 추가되면, AWS DMS는 게시 생 성을 관리합니다. 그렇지만, 이 프로세스에는 몇 분이 걸릴 수 있습니다. 이 지연 시간 동안 새로 생성된 테 이블에 적용된 작업은 대상에 캡처되거나 복제되지 않습니다. AWS DMS 변경 데이터 캡처를 사용하려면 SQL Server에 FULLOGGING이 켜져 있어야 합니다. SQL Server에서 FULLOGGING을 켜려면 MS-REPLICATION 또는 CHANGE DATA CAPTURE(CDC)를 활성 화하십시오. SQL Server tlog는 변경 사항이 처리될 때까지 다시 사용할 수 없습니다. CDC 작업은 메모리 최적화된 테이블에서 지원되지 않습니다. 이 제한 사항은 SQL Server 2014(이 기능이 처음 출시된 시기임) 이상에 적용됩니다. SQL Server의 데이터 변경 캡처 자체 관리형 SQL Server 소스일 경우 AWS DMS에 다음 항목이 사용됩니다. MS-Replication, 기본 키가 있는 테이블의 변경 사항을 캡처합니다. AWS DMS 엔드포인트 사용자에게 소 스 SQL Server 인스턴스에 대한 sysadmin 권한을 제공하여 자동으로 이 내용을 구성할 수 있습니다. 또는 이 단원에 제공된 단계에 따라 소스를 준비하고 sysadmin이 아닌 사용자를 AWS DMS 엔드포인트에 사용 할 수 있습니다. MS-CDC, 기본 키가 없는 테이블의 변경 사항을 캡처합니다. 데이터베이스 수준에서 모든 테이블에 대해 개별적으로 MS-CDC를 활성화해야 합니다. Amazon RDS에서 실행되는 SQL Server 소스의 경우 AWS DMS는 MS-CDC를 사용하여 기본 키가 있거나 없는 테이블의 변경 사항을 캡처합니다. 이 단원에서 설명한 Amazon RDS 관련 저장 절차를 사용해 데이터 베이스 수준에서 모든 테이블에 대해 개별적으로 MS-CDC를 활성화해야 합니다. 지속적 복제(CDC)에 SQL Server 데이터베이스를 사용할 수 있는 여러 가지 방법이 있습니다. sysadmin 역할을 사용하여 지속적 복제를 설정합니다. 이 사항은 자체 관리형 SQL Server 원본에만 적용 됩니다. sysadmin 역할을 사용하지 않도록 지속적 복제를 설정합니다. 이 사항은 자체 관리형 SQL Server 원본에 만 적용됩니다. SQL Server DB 인스턴스용 Amazon RDS에 대해 지속적 복제를 설정합니다. sysadmin 역할을 사용하여 지속적 복제 설정 기본 키가 있는 테이블의 경우 AWS DMS는 소스에 필요한 아티팩트를 구성할 수 있습니다. 기본 키가 없는 테이블에는 MS-CDC를 설정해야 합니다. 먼저, 다음 명령을 실행하여 데이터베이스에서 MS-CDC를 활성화합니다. sysadmin 역할이 할당된 계정을 사용합니다. use [DBname] EXEC sys.sp_cdc_enable_db 101
SQL Server를 원본으로 사용 그 다음, 다음 명령을 실행하여 각 원본 테이블별로 MS-CDC를 활성화해야 합니다. EXECUTE sys.sp_cdc_enable_table @source_schema = N'MySchema', @source_name = N'MyTable', @role_name = NULL; 특정 테이블에서 MS-CDC를 설정하는 방법에 대한 자세한 내용은 SQL Server 설명서를 참조하십시오. sysadmin 역할을 할당하지 않고 지속적 복제 설정 사용자 계정에 sysadmin 권한이 필요 없는 SQL Server 데이터베이스 원본에 대해 지속적 복제를 설정할 수 있습니다. Note DMS 작업을 실행하는 동안 이 절차를 수행할 수 있습니다. DMS 작업이 중지된 경우 진행 중인 트 랜잭션 로그 또는 데이터베이스 백업이 없는 경우에만 이 절차를 수행할 수 있습니다. 이는 LSN 위 치에 대한 백업을 쿼리하기 위해서는 SQL Server에 SYSADMIN 권한이 필요하기 때문입니다. sysadmin 역할을 사용하지 않고 지속적 복제에 SQL Server 데이터베이스 원본을 설정하려면 1. 2. SQL Server Management Studio(SSMS)를 사용하여 암호 인증이 있는 새 SQL Server 계정을 만듭니 다. 이 예제에서는 dmstest라는 계정이 사용됩니다. SSMS의 [User Mappings] 섹션에서 MSDB 및 MASTER 데이터베이스(공용 권한 제공)를 선택하고 지속 적 복제를 사용할 데이터베이스에 DB_OWNER 역할을 할당합니다. 3. 새 계정의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고, [Security]를 선택한 후 명시적으로 SQL 연 결 권한을 부여합니다. 4. 다음의 GRANT 명령을 실행합니다. GRANT SELECT ON FN_DBLOG TO dmstest; GRANT VIEW SERVER STATE TO dmstest; use msdb; GRANT EXECUTE ON MSDB.DBO.SP_STOP_JOB TO dmstest; GRANT EXECUTE ON MSDB.DBO.SP_START_JOB TO dmstest; GRANT SELECT ON MSDB.DBO.BACKUPSET TO dmstest; GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO dmstest; GRANT SELECT ON MSDB.DBO.BACKUPFILE TO dmstest; 5. SSMS에서 복제 폴더의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)을 열고 배포 구성을 선택합니다. 모든 기본 단계에 따라 이 SQL Server 인스턴스의 배포를 구성합니다. 데이터베이스 아래에 배포 데이터베이 스가 생성됩니다. 6. 7. 다음 절차를 따라 발행물을 생성합니다. 생성된 사용자 계정을 사용하여 SQL Server가 소스 엔드포인트인 새 AWS DMS 작업을 만듭니다. Note 이 절차의 단계는 기본 키가 있는 테이블에만 적용됩니다. 기본 키가 없는 테이블에는 MS-CDC를 활성화해야 합니다. 복제를 계속 진행하기 위한 SQL 서버 발행물을 생성합니다. SQL 서버와 함께 CDC를 사용하여 복제를 계속 진행하도록 참여하는 각 테이블을 위한 발행물을 생성해야 합니다. SQL 서버 복제를 계속 진행하기 위한 발행물을 생성합니다 1. 2. SYSADMIN 사용자 계정을 사용하여 SSMS에 로그인합니다. 복제를 확장합니다. 102
SQL Server를 원본으로 사용 3. Local Publications(로컬 게시)를 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 엽니다. 4. New Publication Wizard(새 게시 마법사)에서 다음을 선택합니다. 5. 게시를 생성하려는 데이터베이스를 선택합니다. 6. Transactional publication(트랜잭션 게시)를 선택한 후 다음을 선택합니다. 7. 테이블을 확장하고 PK가 있는 테이블을 선택합니다(게시하려는 테이블도 선택). 다음을 선택합니다. 8. 필터 또는 스냅샷 에이전트를 생성할 필요가 없으므로 다음을 선택한 후 다음을 선택합니다. 9. 보안 설정을 선택하고 Run under the SQL Server Agent service account(sql Server 에이전트 서비스 계정에서 실행)를 선택합니다. 게시자 연결에 대해 By impersonating the process account(프로세스 계 정을 가장)를 선택해야 합니다. 확인을 선택합니다. 10. 다음을 선택합니다. 11. Create the publication(게시 생성)을 선택합니다. 12. AR_PUBLICATION_000<DBID> 형식으로 게시의 이름을 제공합니다. 예를 들어 게시의 이름을 AR_PUBLICATION_00018로 지정할 수 있습니다. 또한 SQL Server에서 DB_ID 함수를 사용할 수도 있습니다. DB_ID 함수에 대한 자세한 내용은 SQL Server 설명서를 참조하십 시오. SQL Server DB 인스턴스용 Amazon RDS에 지속적 복제 설정 SQL Server용 Amazon RDS는 SQL Server 2016 SP1까지 SQL Server Enterprise용 Amazon RDS의 모든 버전에서 MS-CDC를 지원합니다. SQL Server 2016 SP1 Standard Edition과 이후 버전에서는 SQL Server 용 Amazon RDS에서 MS-CDC를 지원합니다. 자체 관리형 SQL Server 원본과 달리 SQL Server용 Amazon RDS에서는 MS-Replication을 지원하지 않습 니다. 따라서 AWS DMS는 기본 키가 있거나 없는 테이블에 MS-CDC를 사용해야 합니다. Amazon RDS에서는 AWS DMS가 소스 SQL Server 인스턴스의 지속적 변경에 사용하는 복제 아티팩트 를 설정하기 위해 sysadmin 권한을 부여하지 않습니다. 다음 절차에서는 마스터 사용자 권한을 사용하여 Amazon RDS 인스턴스에 MS-CDC를 활성화해야 합니다. SQL Server DB 인스턴스용 RDS에 MS-CDC를 활성화하려면 1. 데이터베이스 수준에서 다음 쿼리를 실행합니다. exec msdb.dbo.rds_cdc_enable_db '<DB instance name>' 2. 기본 키와 함께 각 테이블을 위해 MS-CDC를 활성화하도록 다음 쿼리를 실행합니다. exec sys.sp_cdc_enable_table @source_schema = N'db_name', @source_name = N'table_name', @role_name = NULL, @supports_net_changes = 1 GO 기본 키가 아닌 특별한 키와 함께 각 테이블을 위해 MS-CDC를 활성화하도록 다음 쿼리를 실행합니다. exec sys.sp_cdc_enable_table @source_schema = N'db_name', @source_name = N'table_name', @index_name = N'unique_index_name' @role_name = NULL, @supports_net_changes = 1 103
SQL Server를 원본으로 사용 GO 기본 키도 아니고 특별한 키도 아닌 것과 함께 각 테이블을 위해 MS-CDC를 활성화하도록 다음 쿼리를 실행합니다. exec sys.sp_cdc_enable_table @source_schema = N'db_name', @source_name = N'table_name', @role_name = NULL GO 3. 다음 명령을 사용하여 원본에서 사용할 수 있도록 변경 사항 보존 기간을 설정합니다. EXEC sys.sp_cdc_change_job @job_type = 'capture',@pollinginterval = 86400 @pollinginterval 파라미터는 초 단위로 측정됩니다. 위의 명령은 하루 동안 변경 사항을 보존합니 다. AWS에서는 AWS DMS에 MS-CDC를 사용할 때 보존 기간을 하루로 설정하도록 권장합니다. 지원되는 압축 방법 다음 표에는 각 SQL Server 버전에 대해 AWS DMS가 지원하는 압축 방법이 나옵니다. SQL Server 버전 행/페이지 압축(파티션 수준에서) Vardecimal 스토리지 형식 2005 아니요 아니요 2008 예 아니요 2012 예 아니요 2014 예 아니요 Note 스파스 열과 컬럼 방식 구조 압축은 지원되지 않습니다. SQL Server AlwaysOn 가용성 그룹 사용 SQL Server AlwaysOn 가용성 그룹은 데이터베이스 미러링에 대한 엔터프라이즈 수준의 대안이 되는 고가 용성 재해 복구 솔루션입니다. AlwaysOn 가용성 그룹을 AWS DMS에서 소스로 사용하려면, 다음 작업을 수행합니다. 가용성 복제본의 모든 SQL Server 인스턴스에서 배포 옵션을 활성화합니다. AWS DMS 콘솔에서 SQL Server 소스 데이터베이스 설정을 엽니다. [Server Name]에서 가용성 그룹 리스 너에 맞게 구성된 DNS(Domain Name Service) 이름이나 IP 주소를 지정합니다. AWS DMS 작업을 처음 시작하면 평소보다 시작하는 데 시간이 더 걸릴 수 있습니다. 이렇게 느려지는 이유 는 가용성 그룹 서버에서 테이블 항목 생성을 복제하고 있기 때문입니다. SQL Server 데이터베이스를 AWS DMS용 복제 소스로 구성 SQL Server 데이터베이스를 AWS DMS(AWS DMS)용 복제 소스로 구성할 수 있습니다. 변경 사항을 가장 완벽하게 복제하기 위해서는 SQL Server Enterprise, Standard, Developer 버전 중 하나를 사용하는 것이 104
SQL Server를 원본으로 사용 좋습니다. 이들 버전이 MS-Replication(EE,SE)과 MS-CDC(EE,DEV)를 포함하는 유일한 버전이기 때문에 이 버전 중 하나가 필요합니다. 원본 SQL Server도 전체 백업에 적합하도록 구성되어야 합니다. 또한, AWS DMS는 사용자가 연결될 Microsoft SQL Server 데이터베이스에 sysadmin 고정 서버 역할이 있는 사용자 (SQL Server 인스턴스 로그인)와 연결되어야 합니다. 다음은 SQL Server를 AWS DMS용 복제 소스로 구성하는 방법에 대한 정보입니다. SQL Server를 AWS DMS용 소스로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 SQL Server 원본을 구성할 수도 있습니다. 소스 엔드포인트 생성 시 이러한 설정 을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 SQL Server를 소스로 하여 사용할 수 있는 추가 연결 속성이 나와 있습니다. 이름 설명 safeguardpolicy 성능을 최적화하기 위해 AWS DMS는 활성 트랜잭션 로그 (TLOG)에서 읽지 않은 모든 변경 사항을 캡처하려고 시도합니 다. 그렇지만, 때때로 잘라버림으로 인해 활성 TLOG는 읽지 않 은 변경 사항 전체를 포함하지 않을 수도 있습니다. 이런 상황 이 발생하면, AWS DMS는 백업 로그에 액세스하여 누락된 변 경 사항을 캡처합니다. 백업 로그 액세스 횟수를 최소화하기 위 해 AWS DMS는 잘라버림을 방지할 수 있도록 다음 방법 중 한 가지를 사용합니다. 1. 데이터베이스에서 트랜잭션 시작: 기본 방법입니다. 이 방법 을 사용하면, AWS DMS는 데이터베이스에 동일한 트랜잭션을 표시하여 TLOG 잘라버림을 방지합니다. 그러한 트랜잭션이 열려 있는 한 트랜잭션이 시작된 후 나타나는 변경 사항은 잘리 지 않습니다. 데이터베이스에서 Microsoft Replication을 활성 화해야 하는 경우, 이 방법을 선택해야 합니다. 2. 단일 작업 내에서 sp_repldone을 단독으로 사용: 이 방법을 사용하면, AWS DMS는 변경 사항을 읽고 나서 sp_repldone 을 사용하여 잘라버림 준비가 된 TLOG 트랜잭션을 표시합 니다. 이 방법은 트랜잭션 작업을 포함하지 않지만 Microsoft Replication이 실행되지 않을 때에만 사용할 수 있습니다. 또한, 이 방법을 사용할 때에는 하나의 AWS DMS 작업만이 지정된 시간에 데이터베이스에 액세스할 수 있습니다. 따라서 동일한 데이터베이스에서 병렬 AWS DMS 작업을 실행해야 하는 경우 에 이 기본 방법을 사용합니다. 기본값: RELY_ON_SQL_SERVER_REPLICATION_AGENT 유효한 값: EXCLUSIVE_AUTOMATIC_TRUNCATION, RELY_ON_SQL_SERVER_REPLICATION_AGENT 예: safeguardpolicy=rely_on_sql_server_replication_agent; readbackuponly 이 파라미터가 Y로 설정되면 AWS DMS는 지속적 복제 중에 변 경 사항을 트랜잭션 로그 백업에서만 읽고 활성 트랜잭션 로그 파일에서는 읽지 않습니다. 이 파라미터를 Y로 설정하면 전체 로드 및 지속적 복제 작업 중에 활성 트랜잭션 로그 파일 증가 를 제어할 수 있습니다. 하지만 약간의 소스 지연 시간이 지속 적 복제에 추가될 수 있습니다 유효한 값: N 또는 Y 기본값은 N입니다. 105
SQL Server를 원본으로 사용 이름 설명 예: readbackuponly=y; SQL Server용 원본 데이터 형식 AWS DMS에서 원본으로서 SQL Server를 사용하는 데이터 마이그레이션은 대다수 SQL Server 데이터 형 식을 지원합니다. 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에서 매핑할 때 지원되는 SQL Server 원본 데이터 형식이 나와 있습니다. 대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참 조하십시오. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. SQL Server 데이터 형식 AWS DMS 데이터 형식 BIGINT INT8 BIT BOOLEAN DECIMAL NUMERIC INT INT4 MONEY NUMERIC NUMERIC (p,s) NUMERIC SMALLINT INT2 SMALLMONEY NUMERIC TINYINT UINT1 REAL REAL4 FLOAT REAL8 DATETIME DATETIME DATETIME2(SQL Server 2008 이상) DATETIME SMALLDATETIME DATETIME DATE DATE TIME TIME DATETIMEOFFSET WSTRING CHAR STRING VARCHAR STRING VARCHAR(최대) CLOB TEXT 106
SQL Server를 원본으로 사용 SQL Server 데이터 형식 AWS DMS 데이터 형식 AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 CLOB 데이터 형식 사용을 활성화해야 합 니다. SQL Server 테이블에서 AWS DMS는 SQL Server 에서 LOB 열의 값을 변경하지 않는 UPDATE 문에 대해서도 대상의 LOB 열을 업데이트합니다. CDC 중에 AWS DMS는 기본 키를 포함하는 테이블 에서만 CLOB 데이터 형식을 지원합니다. NCHAR WSTRING NVARCHAR(길이) WSTRING NVARCHAR(최대) NCLOB NTEXT AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 NCLOB 데이터 형식 사용을 활성화해야 합니다. SQL Server 테이블에서 AWS DMS는 SQL Server 에서 LOB 열의 값을 변경하지 않는 UPDATE 문에 대해서도 대상의 LOB 열을 업데이트합니다. CDC 중에 AWS DMS는 기본 키를 포함하는 테이블 에서만 CLOB 데이터 형식을 지원합니다. BINARY BYTES VARBINARY BYTES VARBINARY(최대) BLOB IMAGE SQL Server 테이블에서 AWS DMS는 SQL Server 에서 LOB 열의 값을 변경하지 않는 UPDATE 문에 대해서도 대상의 LOB 열을 업데이트합니다. AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 BLOB 데이터 형식 사용을 활성화해야 합 니다. AWS DMS는 기본 키를 포함하는 테이블에서만 BLOB 데이터 형식을 지원합니다. TIMESTAMP BYTES UNIQUEIDENTIFIER STRING HIERARCHYID SQL Server 대상 엔드포인트에 복제할 때 HIERARCHYID를 사용합니다. 다른 모든 대상 엔드포인트에 복제할 때에는 WSTRING(250)을 사용합니다. 107
Azure SQL 데이터베이스를 원본으로 사용 SQL Server 데이터 형식 AWS DMS 데이터 형식 XML NCLOB SQL Server 테이블에서 AWS DMS는 SQL Server 에서 LOB 열의 값을 변경하지 않는 UPDATE 문에 대해서도 대상의 LOB 열을 업데이트합니다. AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 NCLOB 데이터 형식 사용을 활성화해야 합니다. CDC 중에 AWS DMS는 기본 키를 포함하는 테이블 에서만 NCLOB 데이터 형식을 지원합니다. GEOMETRY 이 데이터 형식을 지원하는 대상 엔드포인트에 복제 할 때에는 GEOMETRY를 사용합니다. 이 데이터 형식을 지원하지 않는 대상 엔드포인트에 복제할 때에는 CLOB를 사용합니다. GEOGRAPHY 이 데이터 형식을 지원하는 대상 엔드포인트에 복제 할 때에는 GEOGRAPHY를 사용합니다. 이 데이터 형식을 지원하지 않는 대상 엔드포인트에 복제할 때에는 CLOB를 사용합니다. AWS DMS는 다음 데이터 형식의 필드가 포함된 테이블을 지원하지 않습니다. CURSOR SQL_VARIANT TABLE Note 사용자 정의 데이터 형식은 그 기반 유형에 따라 지원됩니다. 예를 들어, DATETIME을 기반으로 한 사용자 정의 데이터는 DATETIME 데이터 형식으로 처리됩니다. AWS DMS용 원본으로 Microsoft Azure SQL 데이터베 이스 사용 AWS DMS에서는 SQL Server에서와 거의 동일한 방식으로 Microsoft Azure SQL 데이터베이스를 원본으로 사용할 수 있습니다. AWS DMS에서는 온프레미스 또는 Amazon EC2 인스턴스에서 실행 중인 SQL Server 에 대해 지원되는 동일한 데이터베이스 버전 목록을 원본으로 지원합니다. 자세한 내용은 Microsoft SQL Server 데이터베이스를 AWS DMS에서 소스로 사용 (p. 99) 단원을 참조하 십시오. Note AWS DMS에서는 Azure SQL 데이터베이스를 이용한 변경 데이터 캡처 작업(CDC)을 지원하지 않 습니다. 108
PostgreSQL을 원본으로 사용 PostgreSQL 데이터베이스를 AWS DMS에서 원본으로 사용 AWS DMS를 사용하여 하나 이상의 PostgreSQL 데이터베이스에서 데이터를 마이그레이션할 수 있습니다. PostgreSQL 데이터베이스를 원본으로 사용하면, 데이터를 다른 PostgreSQL 데이터베이스 또는 지원되는 다른 데이터베이스 중 하나로 마이그레이션할 수 있습니다. AWS DMS는 온프레미스 데이터베이스, EC2 인스턴스의 데이터베이스, Amazon RDS DB 인스턴스의 데이터베이스, PostgreSQL과 호환되는 Amazon Aurora DB 인스턴스의 데이터베이스에서 원본으로서 PostgreSQL 버전 9.4 이상 데이터베이스를 지원합니 다. Note PostgreSQL 버전 10.x 이상에서는 함수 이름과 폴더 이름이 이전 버전과 많이 다릅니다. PostgreSQL 버전 10.x 이상을 AWS DMS 소스로 사용하는 경우, AWS DMS 소스로 사용할 데 이터베이스 준비에 대한 자세한 내용은 AWS DMS용 원본으로 PostgreSQL 버전 10.x 이상 사 용 (p. 116)를 참조하십시오. SSL을 사용하여 PostgreSQL 엔드포인트와 복제 인스턴스 간의 연결을 암호화할 수 있습니다. PostgreSQL 엔드포인트에서 SSL을 사용하는 방법에 대한 자세한 내용은 AWS Database Migration Service에서 SSL 사 용 (p. 47) 섹션을 참조하십시오. AWS에서 PostgreSQL 데이터베이스에서 PostgreSQL 데이터베이스로 이루어지는 동종 마이그레이션의 경 우, 다음 사항이 참입니다. 원본의 JSONB 열이 대상의 JSONB 열로 마이그레이션됩니다. JSON 열이 대상의 JSON 열로 마이그레이션됩니다. HSTORE 열이 대상의 HSTORE 열로 마이그레이션됩니다. 원본으로 PostgreSQL을 사용하고 대상으로 다른 데이터베이스 엔진을 사용하는 이종 마이그레이션의 경우, 상황이 다릅니다. 이 경우, JSONB, JSON 및 HSTORE가 NCLOB의 AWS DMS 중간 유형으로 변환된 후 대 상에서 해당 NCLOB 열 유형으로 변환됩니다. 이 경우, AWS DMS가 JSONB 데이터를 LOB 열이었던 것처 럼 처리합니다. 마이그레이션의 전체 로드 단계 동안, 대상 열에서 null이 허용되어야 합니다. AWS DMS는 기본 키가 있는 PostgreSQL 테이블에 대해 변경 데이터 캡처(CDC)를 지원합니다. 테이블에 기본 키가 없는 경우, write-ahead 로그(WAL)에 데이터베이스 행의 이전 이미지가 포함되지 않으며, AWS DMS가 테이블을 업데이트할 수 없습니다. DB 인스턴스가 논리적 복제를 사용하도록 구성된 경우 AWS DMS는 Amazon RDS PostgreSQL 데이터베이 스에서 CDC를 지원합니다. Amazon RDS는 PostgreSQL DB 인스턴스 9.4.9 이상 버전과 9.5.4 이상 버전에 대한 논리적 복제를 지원합니다. 또한 Amazon RDS는 버전 2.2.0 및 2.2.1을 사용하고 PostgreSQL 10.6과 호환되는 Amazon Aurora DB 인스턴스에 대해 논리적 복제를 지원합니다. PostgreSQL 데이터베이스 및 AWS DMS 사용에 대한 자세한 내용은 다음 단원을 참조하십시오. 주제 PostgreSQL에서 AWS DMS를 사용하는 PostgreSQL로 마이그레이션 (p. 110) PostgreSQL 데이터베이스를 AWS DMS에서 원본으로 사용하기 위한 사전 요구 사항 (p. 112) AWS DMS에서 PostgreSQL 데이터베이스를 원본으로 사용 시 보안 요구 사항 (p. 112) AWS DMS에서 PostgreSQL 데이터베이스를 원본으로 사용 시 적용되는 제한 사항 (p. 112) Amazon RDS PostgreSQL DB 인스턴스를 원본으로 설정 (p. 114) PostgreSQL 원본 데이터베이스에서 AWS DMS 아티팩트 제거 (p. 116) AWS DMS에서 PostgreSQL 데이터베이스를 원본으로 사용 시 추가 구성 설정 (p. 116) AWS DMS용 원본으로 PostgreSQL 버전 10.x 이상 사용 (p. 116) PostgreSQL을 AWS DMS에서 원본으로 사용 시 추가 연결 속성 (p. 117) PostgreSQL용 원본 데이터 형식 (p. 118) 109
PostgreSQL을 원본으로 사용 PostgreSQL에서 AWS DMS를 사용하는 PostgreSQL로 마이그레 이션 PostgreSQL이 아닌 데이터베이스 엔진에서 PostgreSQL 데이터베이스로 마이그레이션하는 이종 마이그 레이션의 경우, 사용할 수 있는 최고의 마이그레이션 도구는 거의 언제나 AWS DMS입니다. PostgreSQL서 PostgreSQL 데이터베이스로 마이그레이션하는 같은 유형의 마이그레이션을 진행하려면 기본 도구가 더 효 과적입니다. 다음과 같은 경우에는 pg_dump와 같은 기본 PostgreSQL 데이터베이스 마이그레이션 도구를 사용하는 것 이 좋습니다. 같은 유형의 마이그레이션을 수행합니다. 이 경우 PostgreSQL 데이터베이스에서 대상 PostgreSQL 데이 터베이스로 마이그레이션합니다. 전체 데이터베이스를 마이그레이션합니다. 기본 도구를 사용하여 최소한의 가동 중지로 데이터를 마이그레이션할 수 있습니다. pg_dump 유틸리티는 COPY 명령을 사용하여 PostgreSQL 데이터베이스의 스키마와 데이터 덤프를 만듭니 다. pg_dump에 의해 생성되는 덤프 스크립트는 같은 이름을 가진 데이터베이스로 데이터를 로드하고 테이 블, 인덱스 및 외래 키를 다시 만듭니다. pg_restore 명령과 -d 파라미터를 사용하여 데이터를 다른 이름 의 데이터베이스로 복원할 수 있습니다. PostgreSQL 데이터베이스를 Amazon RDS for PostgreSQL 또는 Amazon Aurora (PostgreSQL)로 가져오기에 대한 더 자세한 내용은 https://docs.aws.amazon.com/amazonrds/latest/userguide// PostgreSQL.Procedural.Importing.html을 참조하십시오. DMS를 사용하여 PostgreSQL에서 PostgreSQL로 데이터 마이그레이션 AWS DMS는 예를 들어 온프레미스의 소스 PostgreSQL 데이터베이스에서 대상 Amazon RDS for PostgreSQL 또는 Amazon Aurora(PostgreSQL) 인스턴스로 데이터를 마이그레이션할 수 있습니다. 코어 또 는 베이직 PostgreSQL 데이터 유형은 대부분은 성공적으로 마이그레이션됩니다. 소스 데이터베이스에서는 지원되지만 대상에서는 지원되지 않는 데이터 형식은 성공적으로 마이그레이션되 지 않을 수 있습니다. AWS DMS는 데이터 형식이 알려지지 않은 일부 데이터를 문자열로 스트리밍합니다. XML 또는 JSON과 같은 어떤 데이터 유형은 작업 파일을 성공적으로 마이그레이션할 수 있지만 대형 문서의 경우 실패할 수 있습니다. 다음 표는 소스 PostgreSQL 데이터 유형과 이 유형들이 성공적으로 마이그레이션되었는지 나타냅니다. 데이터 형식 마이그레이션 성공 INTEGER X SMALLINT X BIGINT X 부분 마이그레 이션 진행 예정 마이그레이션 진행하지 않을 예정 설명 NUMERIC/DECIMAL(p,s) X 0<p<39 및 0<s 일때 NUMERIC/DECIMAL X p>38 or p=s=0 REAL X DOUBLE X SMALLSERIAL X 110
PostgreSQL을 원본으로 사용 데이터 형식 마이그레이션 성공 SERIAL X BIGSERIAL X MONEY X CHAR CHAR (n) 부분 마이그레 이션 진행 예정 VARCHAR (n) X TEXT X BYTEA X TIMESTAMP X TIMESTAMP(Z) X 지정한 정밀도 없이 X 지정한 정밀도 없이 X 날짜 X TIME X TIME (z) X INTERVAL X X ENUM X CIDR X INET X MACADDR X TSVECTOR X TSQUERY X XML 설명 X VARCHAR BOOLEAN 마이그레이션 진행하지 않을 예정 X POINT X LINE X LSEG X BOX X PATH X POLYGON X 111
PostgreSQL을 원본으로 사용 데이터 형식 마이그레이션 성공 부분 마이그레 이션 진행 예정 마이그레이션 진행하지 않을 예정 CIRCLE 설명 X JSON X ARRAY X COMPOSITE X RANGE X PostgreSQL 데이터베이스를 AWS DMS에서 원본으로 사용하기 위한 사전 요구 사항 PostgreSQL 데이터베이스가 AWS DMS에서 원본이 되도록 다음 작업을 수행합니다. 버전 9.4.x 이상인 PostgreSQL 데이터베이스를 사용합니다. 수퍼유저에게 PostgreSQL 원본 데이터베이스에 지정된 사용자 계정에 적합한 권한을 부여합니다. pg_hba.conf 구성 파일에 AWS DMS 복제 서버의 IP 주소를 추가합니다. postgresql.conf 구성 파일에서 다음 파라미터와 값을 설정합니다. Set wal_level = logical max_replication_slots를 1보다 큰 값으로 지정합니다. max_replication_slots 값은 실행할 작업 개수에 따라 설정되어야 합니다. 예를 들어, 5개 작업을 실행하려면 최소 5개 슬롯을 설정해야 합니다. 작업이 시작된 즉시 슬롯이 자동으로 열리고 작업이 더 이상 실행되지 않더라도 계속 열려 있습니다. 열린 슬롯을 수동으로 삭제해야 합니다. max_wal_senders를 1보다 큰 값으로 지정합니다. max_wal_senders 파라미터는 실행 가능한 동시 작업 개수를 설정합니다. Set wal_sender_timeout =0 wal_sender_timeout 파라미터는 지정된 밀리초보다 오래 사용되지 않는 복제 연결을 끊습니다. 기 본값은 60초이지만, 이 파라미터를 0으로 설정하여 시간 초과 메커니즘을 비활성화하는 것이 좋습니다. PostgreSQL 버전 9.6 이상에서 idle_in_transaction_session_timeout 파라미터를 사용해 유휴 트랜잭션이 시간 초과되어 실패하도록 할 수 있습니다. 일부 AWS DMS 트랜잭션은 AWS DMS 엔진에서 다시 사용하기 전까지 얼마 동안 유휴 상태입니다. AWS DMS를 사용할 때는 유휴 트랜잭션을 종료하지 마십시오. AWS DMS에서 PostgreSQL 데이터베이스를 원본으로 사용 시 보 안 요구 사항 PostgreSQL을 원본으로서 사용할 때 유일한 보안 요구 사항은 지정된 사용자 계정이 PostgreSQL 데이터베 이스에서 등록된 사용자여야 한다는 점입니다. AWS DMS에서 PostgreSQL 데이터베이스를 원본으로 사용 시 적 용되는 제한 사항 PostgreSQL을 AWS DMS에서 원본으로 사용하는 경우 다음 제한 사항이 적용됩니다. 112
PostgreSQL을 원본으로 사용 캡처된 테이블에는 기본 키가 있어야 합니다. 테이블에 기본 키가 없는 경우, AWS DMS는 해당 테이블의 DELETE 및 UPDATE 레코드 작업을 무시합니다. 시간대 형식 열이 있는 타임스탬프는 지원되지 않습니다. AWS DMS는 기본 키 세그먼트 업데이트 시도를 무시합니다. 이 경우, 대상에서 아무 행도 업데이트하지 않는 것으로 업데이트를 식별합니다. 그러나, PostgreSQL의 기본 키 업데이트 결과는 예측할 수 없기 때문 에 예외 테이블에 레코드가 기록되지 않습니다. AWS DMS는 타임스탬프에서 프로세스 변경 시작 실행 옵션을 지원하지 않습니다. AWS DMS는 PostgreSQL의 Amazon RDS에서 전체 로드와 변경 처리를 지원합니다. PostgreSQL DB 인 스턴스를 준비하고 CDC를 사용하도록 설정하는 방법에 대한 정보는 Amazon RDS PostgreSQL DB 인스 턴스를 원본으로 설정 (p. 114)을 참조하십시오. 이름이 같지만 각 이름의 대소문자가 다른 여러 테이블(예: table1, TABLE1, Table1)을 복제하면 예측할 수 없는 동작이 발생할 수 있습니다. 이 문제 때문에 AWS DMS는 이런 유형의 복제를 지원하지 않습니다. 대부분의 경우, AWS DMS는 테이블의 CREATE, ALTER, DROP DDL 문 변경 처리를 지원하지만 테이블 이 내부 함수 또는 프로시저 본문 블록이나 중첩된 구성체에 있는 경우에는 AWS DMS가 이런 변경 처리 를 지원하지 않습니다. 예를 들어 다음 변경은 캡처되지 않습니다. CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void LANGUAGE plpgsql AS $$ BEGIN create table attu.distributors1(did serial PRIMARY KEY,name varchar(40) NOT NULL); END; $$; AWS DMS는 TRUNCATE 작업의 변경 처리를 지원하지 않습니다. OID LOB 데이터 형식은 대상으로 마이그레이션되지 않습니다. 소스가 온프레미스 또는 Amazon EC2 인스턴스에 있는 PostgreSQL 데이터베이스인 경우, 소스 엔드포인 트에 test_decoding 출력 플러그인이 설치되어 있는지 확인하십시오. 이 플러그인은 Postgres contrib 패키지에서 찾을 수 있습니다. test-decoding 플러그인에 대한 자세한 내용은 PostgreSQL 설명서를 참조 하십시오. AWS DMS는 (ALTER TABLE 문에서 ALTER COLUMN SET DEFAULT 절을 사용하여) 열 기본값을 설정 하기 위한 변경 처리를 지원하지 않습니다. AWS DMS는 (ALTER TABLE 문에서 ALTER COLUMN [SET DROP] NOT NULL 절을 사용하여) 열 null 가능 여부를 설정하기 위한 변경 처리를 지원하지 않습니다. AWS DMS는 분할된 테이블 복제를 지원하지 않습니다. 분할된 테이블이 감지되면, 다음 작업이 진행됩니 다. 엔드포인트는 상위 및 하위 테이블 목록을 보고합니다. AWS DMS는 대상에서 선택한 테이블과 동일한 속성을 지닌 일반 테이블로서 테이블을 생성합니다. 원본 데이터베이스의 상위 테이블에 하위 테이블과 동일한 기본 키 값이 있으면, "중복 키" 오류가 발생 합니다. Note 분할된 테이블을 PostgreSQL 원본에서 PostgreSQL 대상으로 복제하려면, 먼저 대상에 상위 및 하 위 테이블을 직접 생성해야 합니다. 그런 다음 이 테이블에 복제할 별도 작업을 정의합니다. 이 경우 에 작업 구성을 [Truncate before loading]으로 설정합니다. Note PostgreSQL NUMERIC 데이터 형식의 크기는 고정되어 있지 않습니다. NUMERIC 데이터 형식이 지만 정밀도 및 배율이 없는 데이터를 전송하는 경우, DMS는 기본적으로 NUMERIC(28,6)(정밀 113
PostgreSQL을 원본으로 사용 도 28, 배율 6)을 사용합니다. 예를 들어 소스의 0.611111104488373 값은 PostgreSQL 대상에서 0.611111로 변환됩니다. Amazon RDS PostgreSQL DB 인스턴스를 원본으로 설정 PostgreSQL DB 인스턴스 또는 읽기 전용 복제본용 Amazon RDS을 AWS DMS용 원본으로 사용할 수 있습 니다. DB 인스턴스는 전체 로드와 CDC(지속적인 복제) 모두에 사용할 수 있습니다. 읽기 전용 복제본은 전 체 로드 작업에만 사용할 수 있으며 CDC에는 사용할 수 없습니다. AWS DMS에서 PostgreSQL DB 인스턴스의 AWS 마스터 사용자 계정을 PostgreSQL 소스 엔드포인트의 사 용자 계정으로 사용할 수 있습니다. 마스터 사용자 계정에는 변경 데이터 캡처(CDC) 설정을 허용하는 데 필 요한 역할이 있습니다. 마스터 사용자 계정 이외의 계정을 사용하는 경우, 계정에는 rds_superuser 역할과 rds_replication 역할이 있어야 합니다. rds_replication 역할은 논리적 슬롯을 관리하고 논리적 슬롯을 사용하 여 데이터를 스트리밍할 수 있는 권한을 부여합니다. DB 인스턴스에서 마스터 사용자 계정을 사용하지 않는 경우, 사용하는 계정의 마스터 사용자 계정에서 여러 객체를 생성해야 합니다. 필요한 객체 생성에 대한 정보는 마스터 사용자 계정을 사용하지 않고 PostgreSQL 데이터베이스용 Amazon RDS 마이그레이션 (p. 114) 섹션을 참조하십시오. PostgreSQL DB 인스턴스의 RDS에서 CDC 사용 PostgreSQL의 기본 논리적 복제 기능을 사용하여 Amazon RDS PostgreSQL DB 인스턴스의 데이터베이스 마이그레이션 중에 CDC를 활성화할 수 있습니다. 이 접근 방식은 가동 중지를 줄이고 대상 데이터베이스가 원본 PostgreSQL 데이터베이스와 동기화되도록 해줍니다. Amazon RDS에서는 PostgreSQL DB 인스턴스 9.4.9 이상 버전과 9.5.4 이상 버전에 대한 논리적 복제를 지원합니다. Note PostgreSQL 읽기 전용 복제본용 Amazon RDS는 CDC(지속적인 복제)에 사용할 수 없습니다. RDS PostgreSQL DB에서 논리적 복제를 활성화하려면, 다음 작업을 수행해야 합니다. 일반적으로, PostgreSQL DB 인스턴스의 AWS 마스터 사용자 계정을 PostgreSQL 원본 엔드포인트의 사 용자 계정으로 사용할 수 있습니다. 마스터 사용자 계정에는 CDC 설정을 허용하는 데 필요한 역할이 있습 니다. 마스터 사용자 계정 이외의 계정을 사용하는 경우, 사용하는 계정의 마스터 사용자 계정에서 여러 객 체를 생성해야 합니다. 자세한 내용은 마스터 사용자 계정을 사용하지 않고 PostgreSQL 데이터베이스용 Amazon RDS 마이그레이션 (p. 114) 단원을 참조하십시오. DB 파라미터 그룹의 rds.logical_replication 파라미터를 1로 설정합니다. 이것은 파라미터가 적용될 수 있도록 DB 인스턴스를 재부팅해야 하는 고정 파라미터입니다. 이 파라미터를 적용하는 중에 AWS DMS에서는 wal_level, max_wal_senders, max_replication_slots, max_connections 파라미터를 설정합니다. 이러한 파라미터 변경은 WAL 생성을 강화하므로 논리적 슬롯을 사용할 때 rds.logical_replication 파라미터만 설정하면 됩니다. 이제 살펴볼 모범 사례는 wal_sender_timeout 파라미터 0으로 설정입니다. 파라미터를 0으로 설정하 면 PostgreSQL로 하여금 지정된 제한 시간을 초과하면 비활성화되는 복제 연결을 끊지 않도록 합니다. AWS DMS가 데이터를 마이그레이션할 때 복제 연결은 지정된 제한 시간보다 오래 지속되어야 합니다. 마스터 사용자 계정을 사용하지 않고 PostgreSQL 데이터베이스용 Amazon RDS 마이그레이션 경우에 따라 소스로 사용 중인 Amazon RDS PostgreSQL DB 인스턴스에 마스터 사용자 계정을 사용하지 못 할 수 있습니다. 이러한 경우, 데이터 정의 언어(DDL) 이벤트를 캡처하기 위해 몇 개의 객체를 생성해야 합니 다. 마스터 계정 이외의 계정에서 이 객체를 생성하고 나서 마스터 사용자 계정에서 트리거를 생성합니다. Note 소스 엔드포인트에서 captureddl 파라미터를 N으로 설정하는 경우, 원본 데이터베이스에 다음 테이블 및 트리거를 생성할 필요가 없습니다. 114
PostgreSQL을 원본으로 사용 다음 절차에 따라 이 객체를 생성합니다. 마스터 계정 이외의 사용자 계정을 이 절차에서 NoPriv 계정이라 고 합니다. 객체를 생성하려면 1. 객체가 생성되는 위치에 있는 스키마를 선택합니다. 기본 스키마는 public입니다. 스키마가 있는지와 이 스키마를 NoPriv 계정으로 액세스할 수 있는지 확인합니다. 2. NoPriv 계정을 사용하여 PostgreSQL DB 인스턴스에 로그인합니다. 3. 다음 명령을 실행하여 테이블 awsdms_ddl_audit를 생성하고, 다음 코드의 <objects_schema>objects_schema>를 사용할 스키마 이름으로 대체합니다. create table <objects_schema>.awsdms_ddl_audit ( c_key bigserial primary key, c_time timestamp, -- Informational c_user varchar(64), -- Informational: current_user c_txn varchar(16), -- Informational: current transaction c_tag varchar(24), -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE' c_oid integer, -- For future use - TG_OBJECTID c_name varchar(64), -- For future use - TG_OBJECTNAME c_schema varchar(64), -- For future use - TG_SCHEMANAME. For now - holds current_schema c_ddlqry text -- The DDL query associated with the current DDL event ) 4. 다음 코드의 <objects_schema>를 사용할 스키마의 이름으로 바꿔어서 다음 명령을 실행하여 awsdms_intercept_ddl 함수를 생성합니다. CREATE OR REPLACE FUNCTION <objects_schema>.awsdms_intercept_ddl() RETURNS event_trigger LANGUAGE plpgsql SECURITY DEFINER AS $$ declare _qry text; BEGIN if (tg_tag='create TABLE' or tg_tag='alter TABLE' or tg_tag='drop TABLE') then SELECT current_query() into _qry; insert into <objects_schema>.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(txid_current()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete from <objects_schema>.awsdms_ddl_audit; end if; END; $$; 5. NoPriv 계정에서 로그아웃하고 rds_superuser 역할이 할당된 계정으로 로그인합니다. 6. 다음 명령을 실행하여 이벤트 트리거 awsdms_intercept_ddl을 생성합니다. CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE <objects_schema>.awsdms_intercept_ddl(); 115
PostgreSQL을 원본으로 사용 이전 절차를 완료하면, NoPriv 계정을 사용하여 AWS DMS 소스 엔드포인트를 생성할 수 있습니다. PostgreSQL 원본 데이터베이스에서 AWS DMS 아티팩트 제거 DDL 이벤트를 캡처하기 위해 마이그레이션 작업이 시작되면 AWS DMS는 PostgreSQL 데이터베이스에서 다양한 아티팩트를 생성합니다. 작업이 완료되면 이 아티팩트를 제거해야 할 수도 있습니다. 아티팩트를 제 거하려면 다음 문을 (표시되는 순서대로) 발행합니다. 여기서 AmazonRDSMigration은 아티팩트가 생성 되는 스키마입니다. drop event trigger awsdms_intercept_ddl; 이벤트 트리거는 특정 스키마에 속하지 않습니다. drop function AmazonRDSMigration.awsdms_intercept_ddl() drop table AmazonRDSMigration.awsdms_ddl_audit drop schema AmazonRDSMigration Note 스키마 삭제를 수행해야 하는 경우에는 매우 주의해야 합니다. 절대로 연산 스키마(특히 퍼블릭 스 키마)를 삭제해서는 안 됩니다. AWS DMS에서 PostgreSQL 데이터베이스를 원본으로 사용 시 추 가 구성 설정 다음 두 가지 방법으로 PostgreSQL 데이터베이스에서 데이터를 마이그레이션할 때 구성 설정을 추가할 수 있습니다. 연결 속성을 추가하여 DDL 이벤트를 캡처하고 연산 DDL 데이터베이스 아티팩트가 생성된 스키마를 지정 할 수 있습니다. 자세한 내용은 PostgreSQL을 AWS DMS에서 원본으로 사용 시 추가 연결 속성 (p. 117) 단원을 참조하십시오. 연결 문자열 파라미터를 재정의할 수 있습니다. 다음 작업 중 하나를 수행해야 하는 경우 이 옵션을 선택합 니다. 내부 AWS DMS 파라미터를 지정합니다. 그러한 파라미터는 거의 필요하지 않으므로 사용자 인터페이 스에 표시되지 않습니다. 특정 데이터베이스 클라이언트에서 통과(패스스루) 값을 지정합니다. AWS DMS는 데이터베이스 클라 이언트에 전달되는 연결 문자열에 통과 파라미터를 포함합니다. AWS DMS용 원본으로 PostgreSQL 버전 10.x 이상 사용 PostgreSQL 버전 10.x 이상의 데이터베이스에는 함수 이름 및 폴더 이름이 이전 PostgreSQL 버전과 많이 다릅니다. 이 변경으로 인해 특정 마이그레이션 작업이 이전 버전과 호환되지 않습니다. 대부분의 이름 변경은 피상적이기 때문에 AWS DMS는 AWS DMS를 PostgreSQL 버전 10.x 이상에 사용할 수 있도록 해 주는 래퍼 함수를 생성했습니다. 래퍼 함수는 pg_catalog의 함수보다 우선 순위가 높습니다. 또한 기존 스키마의 스키마 가시성이 변경되지 않으므로 사용자 정의 함수와 같은 다른 시스템 카탈로그 함 수를 재정의하지 않습니다. 마이그레이션 작업 전에 이 래퍼 함수를 사용하려면 원본 PostgreSQL 데이터베이스에 대해 다음 SQL 코드 를 실행하십시오. 대상 데이터베이스에 사용하고 있는 것과 동일한 AWS DMS 사용자 계정을 사용하십시오. BEGIN; CREATE SCHEMA IF NOT EXISTS fnrenames; CREATE OR REPLACE FUNCTION fnrenames.pg_switch_xlog() RETURNS pg_lsn AS $$ SELECT pg_switch_wal(); $$ LANGUAGE SQL; 116
PostgreSQL을 원본으로 사용 CREATE OR REPLACE FUNCTION fnrenames.pg_xlog_replay_pause() RETURNS VOID AS $$ SELECT pg_wal_replay_pause(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlog_replay_resume() RETURNS VOID AS $$ SELECT pg_wal_replay_resume(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_current_xlog_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_is_xlog_replay_paused() RETURNS boolean AS $$ SELECT pg_is_wal_replay_paused(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlogfile_name(lsn pg_lsn) RETURNS TEXT AS $$ SELECT pg_walfile_name(lsn); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_last_xlog_replay_location() RETURNS pg_lsn AS $$ SELECT pg_last_wal_replay_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_last_xlog_receive_location() RETURNS pg_lsn AS $$ SELECT pg_last_wal_receive_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_current_xlog_flush_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_flush_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_current_xlog_insert_location() RETURNS pg_lsn AS $ $ SELECT pg_current_wal_insert_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlog_location_diff(lsn1 pg_lsn, lsn2 pg_lsn) RETURNS NUMERIC AS $$ SELECT pg_wal_lsn_diff(lsn1, lsn2); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_xlogfile_name_offset(lsn pg_lsn, OUT TEXT, OUT INTEGER) AS $$ SELECT pg_walfile_name_offset(lsn); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnrenames.pg_create_logical_replication_slot(slot_name name, plugin name, temporary BOOLEAN DEFAULT FALSE, OUT slot_name name, OUT xlog_position pg_lsn) RETURNS RECORD AS $$ SELECT slot_name::name, lsn::pg_lsn FROM pg_catalog.pg_create_logical_replication_slot(slot_name, plugin, temporary); $$ LANGUAGE SQL; ALTER USER <user name> SET search_path = fnrenames, pg_catalog, "$user", public; -- DROP SCHEMA fnrenames CASCADE; -- ALTER USER PG_User SET search_path TO DEFAULT; COMMIT; Note 원본 PostgreSQL 10.x 데이터베이스에서 이 준비 명령 코드를 호출하지 않으면 이와 같이 오류가 발생합니다. 2018-10-29T02:57:50 [SOURCE_CAPTURE ]E: RetCode: SQL_ERROR SqlState: 42703 NativeError: 1 Message: ERROR: column "xlog_position" does not exist;, No query has been executed with that handle [1022502] (ar_odbc_stmt.c:3647) PostgreSQL을 AWS DMS에서 원본으로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 PostgreSQL 원본을 구성할 수도 있습니다. 소스 엔드포인트 생성 시 이러한 설정 을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 PostgreSQL을 AWS DMS의 소스로 사용할 때 사용할 수 있는 추가 연결 속성이 나와 있습니다. 이름 설명 captureddl DDL 이벤트를 캡처하기 위해 AWS DMS에서는 작업을 시작할 때 PostgreSQL 데이터베이스에 다양한 아티팩트를 생성합니 다. PostgreSQL 원본 데이터베이스에서 AWS DMS 아티팩트 117
PostgreSQL을 원본으로 사용 이름 설명 제거 (p. 116)의 설명에 따라 이 아티팩트를 제거할 수 있습니 다. 이 값을 N으로 설정하면 원본 데이터베이스에 테이블이나 트 리거를 생성할 필요가 없습니다. 자세한 내용은 마스터 사용자 계정을 사용하지 않고 PostgreSQL 데이터베이스용 Amazon RDS 마이그레이션 (p. 114) 단원을 참조하십시오. 스트리밍된 DDL 이벤트가 캡처됩니다. 기본 값: Y 유효한 값: Y/N 예: captureddls=y; 운영 DDL 데이터베이스 아티팩트가 생성되는 스키마입니다. ddlartifactsschema 기본값: 퍼블릭 유효한 값: 문자열 예: ddlartifactsschema=xyzddlschema; failtasksonlobtruncation 이 값을 true로 설정하면 LOB 열의 실제 크기가 지정된 LobMaxSize보다 클 경우 작업이 실패합니다. 작업이 제한된 LOB 모드로 설정되어 있고 이 옵션이 true로 설 정된 경우, LOB 데이터가 잘리지 않는 대신에 작업이 실패합니 다. 기본값: false 유효 값: 부울 예: failtasksonlobtruncation=true; executetimeout PostgreSQL 인스턴스의 클라이언트 문 제한 시간을 초 단위로 설정합니다. 기본 값은 60초입니다. 예: executetimeout=100; PostgreSQL용 원본 데이터 형식 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에 매핑할 때 지원되는 PostgreSQL 원본 데이터 형식이 나와 있습니다. 대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참 조하십시오. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. PostgreSQL 데이터 형식 AWS DMS 데이터 형식 INTEGER INT4 118
PostgreSQL을 원본으로 사용 PostgreSQL 데이터 형식 AWS DMS 데이터 형식 SMALLINT INT2 BIGINT INT8 NUMERIC (p,s) 정밀도 범위가 0~38인 경우, NUMERIC을 사용합니 다. 정밀도가 39 이상인 경우, STRING을 사용합니다. DECIMAL(P,S) 정밀도 범위가 0~38인 경우, NUMERIC을 사용합니 다. 정밀도가 39 이상인 경우, STRING을 사용합니다. REAL REAL4 DOUBLE REAL8 SMALLSERIAL INT2 SERIAL INT4 BIGSERIAL INT8 MONEY NUMERIC(38,4) MONEY 데이터 형식은 SQL Server에서 FLOAT에 매핑됩니다. CHAR WSTRING (1) CHAR(N) WSTRING (n) VARCHAR(N) WSTRING (n) TEXT NCLOB BYTEA BLOB TIMESTAMP TIMESTAMP TIMESTAMP (z) TIMESTAMP TIMESTAMP(시간대 사용) 지원되지 않음 DATE DATE TIME TIME TIME (z) TIME INTERVAL STRING (128) 1 YEAR, 2 MONTHS, 3 DAYS, 4 HOURS, 5 MINUTES, 6 SECONDS BOOLEAN CHAR (5) 거짓 혹은 참 ENUM STRING (64) CIDR STRING (50) INET STRING (50) 119
PostgreSQL을 원본으로 사용 PostgreSQL 데이터 형식 AWS DMS 데이터 형식 MACADDR STRING (18) BIT (n) STRING (n) BIT VARYING (n) STRING (n) UUID STRING TSVECTOR CLOB TSQUERY CLOB XML CLOB POINT STRING (255) "(x,y)" LINE STRING (255) "(x,y,z)" LSEG STRING (255) "((x1,y1),(x2,y2))" BOX STRING (255) "((x1,y1),(x2,y2))" PATH CLOB "((x1,y1),(xn,yn))" POLYGON CLOB "((x1,y1),(xn,yn))" CIRCLE STRING (255) "(x,y),r" JSON NCLOB JSONB NCLOB ARRAY NCLOB COMPOSITE NCLOB HSTORE NCLOB INT4RANGE STRING (255) INT8RANGE STRING (255) NUMRANGE STRING (255) STRRANGE STRING (255) PostgreSQL 열 크기는 PostgreSQL LOB 데이터 형식의 AWS DMS 데이터 형식으로의 변환에 영향을 미칩 니다. 이를 위해 다음 AWS DMS 데이터 형식의 경우, 다음 단계에 따르십시오. BLOB Limit LOB size to(lob 크기를 다음으로 제한)를 작업 생성 시 Max LOB Size(최대 LOB 크기) 값 으로 설정합니다. CLOB 복제는 각 문자를 UTF8 문자로 취급합니다. 따라서 열에서 가장 긴 문자 텍스트의 길이를 찾아 (max_num_chars_text) Limit LOB size to(lob 크기를 다음으로 제한)의 값을 지정하는 데 사용합니다. 데이터에 4바이트 문자가 포함된 경우, 2를 곱해 Limit LOB size to(lob 크기를 다음으로 제한) 값(바이트 단위)을 지정합니다. 이 경우, Limit LOB size to(lob 크기를 다음으로 제한)는 max_num_chars_text 곱 하기 2와 같습니다. NCLOB 복제는 각 문자를 2바이트 문자로 취급합니다. 따라서 열에서 가장 긴 문자 텍스트의 길이를 찾 고(max_num_chars_text) 2를 곱해 Limit LOB size to(lob 크기를 다음으로 제한)의 값을 지정합니다. 120
MySQL을 원본으로 사용 이 경우, Limit LOB size to(lob 크기를 다음으로 제한)는 max_num_chars_text * 2와 같습니다. 데이터 에 4바이트 문자가 포함된 경우에는 다시 2를 곱합니다. 이 경우, Limit LOB size to(lob 크기를 다음으로 제한)는 max_num_chars_text 곱하기 4와 같습니다. AWS DMS에서 MySQL 호환 데이터베이스를 원본으로 사용 AWS Database Migration Service를 사용하여 어느 MySQL 호환 데이터베이스(MySQL, MariaDB 또는 Amazon Aurora MySQL)의 데이터라도 마이그레이션할 수 있습니다. MySQL 버전 5.5, 5.6 및 5.7뿐 아니라 MariaDB 및 Amazon Aurora MySQL도 온프레미스를 지원합니다. 또한 모든 AWS 관리형 MySQL 데이터베 이스(MySQL용 Amazon RDS, MariaDB용 Amazon RDS, Amazon Aurora MySQL)가 AWS DMS의 원본으로 지원됩니다. SSL을 사용하여 MySQL 호환 엔드포인트와 복제 인스턴스 간의 연결을 암호화할 수 있습니다. MySQL 호환 엔드포인트에서 SSL을 사용에 대한 자세한 내용은 AWS Database Migration Service에서 SSL 사용 (p. 47) 섹션을 참조하십시오. 다음 단원에서는 "자체 관리형"이라는 용어가 온프레미스나 Amazon EC2 중 하나에 설치되어 있는 데이터 베이스에 적용됩니다. "Amazon 관리형"이라는 용어는 Amazon RDS, Amazon Aurora 또는 Amazon Simple Storage Service의 모든 데이터베이스에 적용됩니다. PostgreSQL 호환 데이터베이스 및 AWS DMS 사용에 대한 세부 정보는 다음 섹션을 참조하십시오. 주제 MySQL에서 AWS DMS를 사용하는 MySQL로 마이그레이션. (p. 121) AWS DMS용 원본으로 MySQL 호환 데이터베이스 사용 (p. 123) AWS DMS용 원본으로 자체 관리형 MySQL 호환 데이터베이스 사용 (p. 123) AWS DMS의 소스로 Amazon 관리형 MySQL 호환 데이터베이스 사용 (p. 124) AWS DMS에서 MySQL 데이터베이스를 원본으로 사용 시 적용되는 제한 사항 (p. 125) MySQL을 AWS DMS에서 원본으로 사용 시 추가 연결 속성 (p. 126) MySQL용 원본 데이터 형식 (p. 127) MySQL에서 AWS DMS를 사용하는 MySQL로 마이그레이션. MySQL이 아닌 데이터베이스 엔진에서 MySQL 데이터베이스로 마이그레이션하는 이종 마이그레이션의 경 우, 사용할 수 있는 최고의 마이그레이션 도구는 거의 언제나 AWS DMS입니다. MySQL서 MySQL 데이터베 이스로 마이그레이션하는 같은 유형의 마이그레이션을 진행하려면 기본 도구가 더 효과적입니다. 다음과 같은 경우에는 mysqldump와 같은 기본 MySQL 데이터베이스 마이그레이션 도구를 사용하는 것이 좋습니다. 같은 유형의 마이그레이션을 수행합니다. 이 경우 MySQL 데이터베이스에서 대상 MySQL 데이터베이스 로 마이그레이션합니다. 전체 데이터베이스를 마이그레이션합니다. 기본 도구를 사용하여 최소한의 가동 중지로 데이터를 마이그레이션할 수 있습니다. 기존 MySQL 또는 MariaDB 데이터베이스에서 Amazon RDS MySQL 또는 MariaDB DB 인스턴스로 데이터 를 가져올 수 있습니다. mysqldump로 데이터베이스를 복제하고 Amazon RDS MySQL 또는 MariaDB DB 인 스턴스에 바로 파이프하면 됩니다. mysqldump 명령줄 유틸리티는 한 MySQL 또는 MariaDB 서버에서 다 른 MySQL 또는 MariaDB 서버로 데이터를 전송하고 백업본을 만드는 데 흔히 사용됩니다. 이 유틸리티는 MySQL 및 MariaDB 클라이언트 소프트웨어와 함께 포함되어 있습니다. 121
MySQL을 원본으로 사용 MySQL 데이터베이스를 Amazon RDS for MySQL 또는 Amazon Aurora(MySQL)로 가져오기에 대한 자세한 내용은 데이터를 MySQL DB 인스턴스로 가져오기 및 MySQL 또는 MariaDB DB에서 Amazon RDS MySQL 또는 MariaDB DB 인스턴스로 데이터 가져오기를 참조하십시오. AWS DMS를 사용하여 MySQL에서 MySQL로 데이터 마이그레이션 AWS DMS는 예를 들어 온프레미스의 소스 MySQL 데이터베이스에서 대상 Amazon RDS for MySQL 또는 Amazon Aurora(MySQL) 인스턴스로 데이터를 마이그레이션할 수 있습니다. 코어 또는 베이직 MySQL 데이 터 유형은 대부분은 성공적으로 마이그레이션됩니다. 소스 데이터베이스에서는 지원되지만 대상에서는 지원되지 않는 데이터 형식은 성공적으로 마이그레이션되 지 않을 수 있습니다. AWS DMS는 데이터 형식이 알려지지 않은 일부 데이터를 문자열로 스트리밍합니다. XML 또는 JSON과 같은 어떤 데이터 유형은 작업 파일을 성공적으로 마이그레이션할 수 있지만 대형 문서의 경우 실패할 수 있습니다. 다음 표는 소스 MySQL 데이터 유형과 이 유형들이 성공적으로 마이그레이션되었는지 나타냅니다. 데이터 형식 마이그레이션 성공 INT X BIGINT X MEDIUMINT X TINYINT X DECIMAL (p,s) X BINARY X BIT (M) X BLOB X LONGBLOB X MEDIUMBLOB X TINYBLOB X 날짜 X DATETIME X TIME 부분 마이그레 이션 진행 예정 X TIMESTAMP X YEAR X DOUBLE X FLOAT X VARCHAR(N) X VARBINARY(N) X CHAR(N) X 122 마이그레이션 진행하지 않을 예정 설명
MySQL을 원본으로 사용 데이터 형식 마이그레이션 성공 TEXT X LONGTEXT X MEDIUMTEXT X TINYTEXT X 부분 마이그레 이션 진행 예정 마이그레이션 진행하지 않을 예정 GEOMETRY X POINT X LINESTRING X POLYGON X MULTILINESTRING X MULTIPOLYGON X GEOMETRYCOLLECTION X ENUM X SET X 설명 AWS DMS용 원본으로 MySQL 호환 데이터베이스 사용 AWS DMS용 원본으로 MySQL 데이터베이스를 사용하기 전에 다음 사전 요구 사항이 있는지 확인해야 합니 다. 이러한 사전 요구 사항은 자체 관리형 또는 Amazon 관리형 원본 중 하나에 적용됩니다. Replication Admin 역할이 할당된 AWS DMS용 계정이 있어야 합니다. 역할에는 다음 권한이 있어야 합니다. REPLICATION CLIENT 이 권한은 변경 데이터 캡처(CDC) 작업에만 필요합니다. 즉, 전체 로드 전용 작 업에서는 이 권한이 필요하지 않습니다. REPLICATION SLAVE 이 권한은 변경 데이터 캡처(CDC) 작업에만 필요합니다. 즉, 전체 로드 전용 작 업에서는 이 권한이 필요하지 않습니다. SUPER 이 권한은 MySQL 버전 5.6.6 이전에서만 필요합니다. 또한, AWS DMS 사용자에게는 복제를 위해 지정된 원본 테이블에 대해 SELECT 권한이 있어야 합니다. AWS DMS용 원본으로 자체 관리형 MySQL 호환 데이터베이스 사 용 AWS DMS용 원본으로 다음 자체 관리형 MySQL 호환 데이터베이스를 사용할 수 있습니다. MySQL Community Edition MySQL Standard Edition MySQL Enterprise Edition MySQL Cluster Carrier Grade Edition MariaDB Community Edition MariaDB Enterprise Edition 123
MySQL을 원본으로 사용 MariaDB Column Store 변경 데이터 캡처(CDC)를 사용할 계획인 경우, 이진 로깅을 활성화해야 합니다. 이진 로깅을 활성화하려면, MySQL의 my.ini(windows) 또는 my.cnf(unix) 파일에서 다음 파라미터를 구성해야 합니다. 파라미터 값 server_id 이 파라미터 값을 1 이상의 값으로 설정합니다. log-bin log-bin=e:\mysql_logs\binlog과 같은 이진 로그 파일로 이 경로를 설정 합니다. 파일 확장자를 포함해서는 안 됩니다. binlog_format 이 파라미터를 ROW로 설정합니다. expire_logs_days 이 파라미터 값을 1 이상의 값으로 설정합니다. 디스크 공간의 과사용을 방지하 려면, 기본값 0을 사용하지 않는 것이 좋습니다. binlog_checksum 이 파라미터를 NONE로 설정합니다. binlog_row_image 이 파라미터를 FULL로 설정합니다. log_slave_updates 원본으로 MySQL 또는 MariaDB 읽기 전용 복제본을 사용하고 있는 경우 이 파 라미터를 TRUE로 설정합니다. 원본에서 NDB(클러스터 방식) 데이터베이스 엔진을 사용하는 경우, 해당 스토리지 엔진을 사용하는 테 이블에 대해 CDC를 활성화하도록 다음 파라미터를 구성해야 합니다. 이러한 변경 사항을 MySQL의 my.ini(windows) 또는 my.cnf(unix) 파일에 추가합니다. 파라미터 값 ndb_log_bin 이 파라미터를 ON로 설정합니다. 이 값은 클러스터링된 테이블의 변경 사항이 이진 로그에 로깅되도록 보장해 줍니다. ndb_log_update_as_write 이 파라미터를 OFF로 설정합니다. 이 값은 이진 로그에서 UPDATE 문을 INSERT 문으로 쓰지 않도록 해줍니다. ndb_log_updated_only이 파라미터를 OFF로 설정합니다. 이 값은 이진 로그가 변경된 열뿐만 아니라 전체 행을 포함하도록 해줍니다. AWS DMS의 소스로 Amazon 관리형 MySQL 호환 데이터베이스 사용 AWS DMS용 원본으로 다음 Amazon 관리형 MySQL 호환 데이터베이스를 사용할 수 있습니다. MySQL Community Edition MariaDB Community Edition MySQL과 호환되는 Amazon Aurora Amazon 관리형 MySQL 호환 데이터베이스를 AWS DMS용 원본으로 사용하는 경우, 다음 사전 요구 사항이 만족하는지 확인하십시오. 자동 백업을 활성화합니다. 자동 백업 설정에 대한 자세한 내용은 Amazon RDS 사용 설명서의 자동 백업 작업 단원을 참조하십시오. 124
MySQL을 원본으로 사용 변경 데이터 캡처(CDC)를 사용하려는 경우, 이진 로깅을 활성화합니다. Amazon RDS MySQL 데이터베이 스에 대한 이진 로깅 설정에 대한 자세한 내용은 Amazon RDS 사용 설명서의 자동 백업 작업 단원을 참조 하십시오. AWS DMS에 이진 로깅을 사용할 수 있어야 합니다. Amazon 관리형 MySQL 호환 데이터베이스는 가능한 빨리 이진 로그를 삭제하므로, 로그가 사용 가능한 상태로 유지되는 시간을 늘려야 합니다. 예를 들어, 로 그 보존을 24시간으로 늘리려면 다음 명령을 실행합니다. call mysql.rds_set_configuration('binlog retention hours', 24); binlog_format 파라미터를 "ROW"로 설정합니다. binlog_checksum 파라미터를 "NONE"로 설정합니다. Amazon RDS MySQL의 파라미터 설정에 대한 자세한 내용은 Amazon RDS 사용 설명서의 자동 백업 작업 단원을 참조하십시오. Amazon RDS MySQL 또는 Amazon RDS MariaDB 읽기 전용 복제본을 소스로 사용하고 있는 경우, 읽기 전용 복제본에서 백업을 활성화합니다. AWS DMS에서 MySQL 데이터베이스를 원본으로 사용 시 적용되 는 제한 사항 MySQL 데이터베이스를 원본으로 사용 시 AWS DMS는 다음을 지원하지 않습니다. Amazon RDS MySQL 5.5 이하의 경우, 변경 데이터 캡처(CDC)가 지원되지 않습니다. Amazon RDS MySQL의 경우, 버전 5.6 이상을 사용하여 CDC를 활성화해야 합니다. 데이터 정의 언어(DDL) 문 DROP TABLE 및 RENAME TABLE은 지원되지 않습니다. 또한 분할된 테이블 에 대한 모든 DDL 문은 지원되지 않습니다. 소스에서 분할된 테이블의 경우, 대상 테이블 준비 모드를 대상에서 테이블 삭제로 지정하면 AWS DMS가 파티션 없이 MySQL 대상에 심플 테이블을 생성합니다. 파티션으로 나눈 테이블을 대상에서 파티션으로 나눈 테이블로 마이그레이션하려면, 대상 MySQL 데이터베이스에서 파티션으로 나눈 테이블을 미리 생성 합니다. ALTER TABLE<table_name> ADD COLUMN <column_name> 문을 사용하여 열을 테이블의 시작(FIRST) 또는 중간(AFTER)에 추가하는 것은 지원되지 않습니다. 열은 항상 테이블 끝에 추가됩니다. 테이블 이름에 대/소문자가 포함되어 있고, 대/소문자를 구분하지 않는 파일 이름이 있는 운영 체제에서 소 스 엔진이 호스팅되는 경우, CDC가 지원되지 않습니다. 예로는 HFS+를 사용하는 Windows 또는 OS X가 있습니다. AR_H_USER 헤더 열은 지원되지 않습니다. 열의 AUTO_INCREMENT 속성은 대상 데이터베이스 열로 마이그레이션되지 않습니다. 표준 블록 스토리지에 이진 로그가 저장되지 않으면 변경 사항 캡처가 지원되지 않습니다. 예를 들어, 이진 로그가 Amazon Simple Storage Service에 저장되면 CDC가 작동하지 않습니다. 기본적으로 AWS DMS에서는 InnoDB 스토리지 엔진이 있는 대상 테이블을 생성합니다. InnoDB가 아닌 스토리지 엔진을 사용해야 하는 경우, 테이블을 수동으로 생성하고 이를 do nothing 모드를 사용하여 마 이그레이션해야 합니다. AWS DMS용 원본으로 Aurora MySQL 읽기 전용 복제본을 사용할 수 없습니다. MySQL 호환 소스가 전체 로드 도중 중지되는 경우, AWS DMS 작업은 오류로 중지되지 않습니다. 작업은 성공적으로 종료되지만 대상과 원본이 동기화되지 않았을 수 있습니다. 그러한 경우, 작업을 다시 시작하 거나 영향을 받은 테이블을 다시 로드하십시오. 열의 일부에 생성된 색인 값은 마이그레이션되지 않습니다. 예를 들어 CREATE INDEX first_ten_chars ON 색인 고객(이름(10))은 대상에서 생성되지 않습니다. 일부 경우, LOB를 복제하지 않도록 작업이 구성됩니다(작업 설정에서 "SupportLobs"가 false이거나 작업 콘솔에서 Don't include LOB columns 이 선택되지 않음). 이 경우, AWS DMS가 MEDIUMBLOB, LONGBLOB, MEDIUMTEXT 및 LONGTEXT 열을 대상으로 마이그레이션하지 않습니다. 125
MySQL을 원본으로 사용 BLOB, TINYBLOB, TEXT 및 TINYTEXT 열은 영향을 받지 않으며 대상으로 마이그레이션됩니다. MySQL을 AWS DMS에서 원본으로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 MySQL 원본을 구성할 수 있습니다. 소스 엔드포인트 생성 시 이러한 설정을 지 정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 Amazon RDS MySQL을 AWS DMS에 대한 원본으로 사용 시 사용할 수 있는 추가 연결 속성이 나와 있습니다. 이름 설명 eventspollinterval 데이터베이스가 유휴 상태일 때 이진 로그에서 새 변경 사항/이 벤트를 확인하는 빈도를 지정합니다. 기본값: 5 유효한 값: 1 60 예: eventspollinterval=5; 이 예에서 AWS DMS는 이전 로그에 변경 사항이 있는지 5초마 다 확인합니다. 원본 MySQL 데이터베이스의 시간대를 지정합니다. 타임스탬 프는 지정된 시간대로 변환됩니다. initstmt=set time_zone 기본값: UTC 유효한 값: 사용할 시간대에 해당하는 3자 약어(예: UTC, EST 또는 GMT). 유효한 값은 원본 MySQL 데이터베이스를 호스팅 하는 운영 체제의 표준 시간대 약어입니다. 예: initstmt=set time_zone=utc; AWS DMS가 엔드포인트에 연결된 즉시 실행할 스크립트를 지 정합니다. SQL 문의 성공 여부에 상관없이 마이그레이션 작업 이 계속 실행됩니다. afterconnectscript 유효한 값: 하나 이상의 유효한 SQL 문(세미콜론으로 끝남). 예: afterconnectscript=alter SESSION SET CURRENT_SCHEMA = system; CleanSrcMetadataOnMismatch 불일치 발생 시 복제 인스턴스에서 테이블 메타데이터 정보를 지운 후 다시 생성합니다. 예컨대 테이블에서 alter DDL을 실행 하면 복제 인스턴스에 캐시된 테이블에 관해 다른 정보가 생길 수 있는 경우를 들 수 있습니다. 부울. 기본값: false 예: CleanSrcMetadataOnMismatch=false; 126
MySQL을 원본으로 사용 MySQL용 원본 데이터 형식 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에 매핑할 때 지원되는 MySQL 데이터베이스 원본 데이터 형식이 나와 있습니다. 대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참 조하십시오. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. MySQL 데이터 형식 AWS DMS 데이터 형식 INT INT4 MEDIUMINT INT4 BIGINT INT8 TINYINT INT1 DECIMAL(10) NUMERIC (10,0) BINARY BYTES(1) BIT 부울 BIT(64) BYTES(8) BLOB BYTES(66535) LONGBLOB BLOB MEDIUMBLOB BLOB TINYBLOB BYTES(255) 날짜 날짜 DATETIME DATETIME TIME STRING TIMESTAMP DATETIME YEAR INT2 DOUBLE REAL8 FLOAT REAL(DOUBLE) 지원되는 FLOAT 범위는 -1.79E+308~-2.23E-308, 0, 그리고 2.23E-308~1.79E+308입니다. FLOAT 값이 이 범위를 벗어나는 경우, FLOAT 데이 터 형식을 STRING 데이터 형식에 매핑합니다. VARCHAR (45) WSTRING (45) VARCHAR (2000) WSTRING (2000) VARCHAR (4000) WSTRING (4000) 127
SAP ASE를 원본으로 사용 MySQL 데이터 형식 AWS DMS 데이터 형식 VARBINARY (4000) BYTES (4000) VARBINARY (2000) BYTES (2000) CHAR WSTRING TEXT WSTRING (65535) LONGTEXT NCLOB MEDIUMTEXT NCLOB TINYTEXT WSTRING (255) GEOMETRY BLOB POINT BLOB LINESTRING BLOB POLYGON BLOB MULTIPOINT BLOB MULTILINESTRING BLOB MULTIPOLYGON BLOB GEOMETRYCOLLECTION BLOB Note DATETIME 및 TIMESTAMP 데이터 형식이 "0" 값으로 지정된 경우(예: 0000-00-00), 복제 작업의 대상 데이터베이스가 DATETIME 및 TIMESTAMP 데이터 형식의 "0" 값을 지원하는지 확인해야 합 니다. 그렇지 않으면, 이 값이 대상에서 null로 기록됩니다. 다음 MySQL 데이터 형식은 다음 전체 로드에서만 지원됩니다. MySQL 데이터 형식 AWS DMS 데이터 형식 ENUM STRING SET STRING AWS DMS에서 SAP ASE 데이터베이스를 원본으로 사 용 AWS DMS를 사용하여 SAP Adaptive Server Enterprise(ASE) 데이터베이스( 구 Sybase )의 데이터를 마 이그레이션할 수 있습니다. SAP ASE 데이터베이스를 원본으로 사용하면 지원되는 다른 AWS DMS 대상 데이터베이스로 데이터를 마이그레이션할 수 있습니다. AWS DMS의 경우 SAP ASE 버전 12.5.3 이상, 15, 15.5, 15.7, 16 이상을 원본으로 지원합니다. SAP ASE 데이터베이스 및 AWS DMS 사용에 대한 자세한 내용은 다음 섹션을 참조하십시오. 주제 128
SAP ASE를 원본으로 사용 SAP ASE 데이터베이스를 AWS DMS에서 원본으로 사용하기 위한 사전 요구 사항 (p. 129) SAP ASE를 AWS DMS에서 원본으로 사용 시 적용되는 제한 사항 (p. 129) AWS DMS에서 SAP ASE를 원본으로 사용하는 데 필요한 권한 (p. 129) 잘림 지점 제거 (p. 130) SAP ASE용 원본 데이터 형식 (p. 130) SAP ASE 데이터베이스를 AWS DMS에서 원본으로 사용하기 위 한 사전 요구 사항 SAP ASE 데이터베이스가 AWS DMS에서 원본으로 사용되려면 다음 작업을 수행해야 합니다. sp_setreptable 명령을 사용하여 테이블에서 SAP ASE 복제를 활성화합니다. SAP ASE 데이터베이스에서 RepAgent를 비활성화합니다. 비라틴 문자(예: 중국어)에 대해 구성된 Microsoft Windows 기반 Amazon EC2 인스턴스에 SAP ASE 버전 15.7을 복제하려면 대상 컴퓨터에 SAP ASE 15.7 SP121을 설치해야 합니다. SAP ASE를 AWS DMS에서 원본으로 사용 시 적용되는 제한 사항 SAP ASE 데이터베이스를 AWS DMS에서 원본으로 사용 시 다음 제한 사항이 적용됩니다. SAP ASE 데이터베이스 각각에 AWS DMS 작업을 한 번만 실행할 수 있습니다. 테이블의 이름을 바꿀 수 없습니다. 예를 들어 다음 명령은 실패합니다. sp_rename 'Sales.SalesRegion', 'SalesReg; 열의 이름을 바꿀 수 없습니다. 예를 들어 다음 명령은 실패합니다. sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN'; 이진 데이터 형식 문자열 끝에 있는 0 값은 대상 데이터베이스에 복제될 때 잘립니다. 예를 들 어, 원본 테이블의 0x0000000000000000000000000100000100000000은 대상 테이블에서 0x00000000000000000000000001000001이 됩니다. 데이터베이스 기본값이 NULL 값을 허용하지 않도록 설정된 경우 AWS DMS에서는 NULL 값을 허용하지 않는 열이 포함된 대상 테이블을 생성합니다. 결과적으로 전체 로드 또는 변경 데이터 캡처(CDC) 복제 작 업에 빈 값이 포함되어 있으면 AWS DMS에서 오류가 발생합니다. 다음 명령을 사용하여 원본 데이터베이 스에서 NULL 값을 허용함으로써 이러한 오류를 방지할 수 있습니다. sp_dboption <database name>, 'allow nulls by default', 'true' go use <database name> CHECKPOINT go reorg rebuild 인덱스 명령은 지원되지 않습니다. 클러스터는 지원되지 않습니다. AWS DMS에서 SAP ASE를 원본으로 사용하는 데 필요한 권한 AWS DMS 작업에서 SAP ASE 데이터베이스를 소스로 사용하려면 AWS DMS 데이터베이스 정의에 지정된 사용자 계정에 SAP ASE 데이터베이스에서 사용할 수 있는 다음 권한을 부여하십시오. sa_role 129
SAP ASE를 원본으로 사용 replication_role sybase_ts_role SAP ASE 소스 엔드포인트 생성 시 Automatically enable Sybase replication(sybase 복제를 자동으로 활 성화) 옵션(고급 탭에 있음)을 활성화하는 경우에는 저장된 프로시저인 sp_setreptable을 실행할 수 있 는 권한도 AWS DMS에 부여해야 합니다. 잘림 지점 제거 작업이 시작되면, AWS DMS는 syslogshold 시스템 보기에 $replication_truncation_point 항목 을 설정하여 복제가 진행되고 있음을 나타냅니다. AWS DMS가 작동하는 동안 대상에 이미 복사된 데이터 양에 따라 정기적으로 복제 잘림 지점을 진행합니다. $replication_truncation_point 항목이 설정되고 나면 AWS DMS 작업을 항상 실행 상태로 유지하 여 데이터베이스 로그가 과도하게 커지지 않게 해야 합니다. AWS DMS 작업을 영구적으로 중지하고 싶을 경우 다음 명령을 발행하여 복제 잘림 지점을 제거하십시오. dbcc settrunc('ltm','ignore') 잘림 지점이 제거되고 나면 AWS DMS 작업을 다시 시작할 수 있습니다. 로그는 체크포인트에서 계속 자동 으로 잘립니다(자동 잘림이 설정된 경우). SAP ASE용 원본 데이터 형식 AWS DMS 및 AWS DMS 데이터 형식으로부터의 기본 매핑을 사용하는 경우 지원되는 SAP ASE 원본 데 이터 형식의 목록은 다음 표를 참조하십시오. AWS DMS는 사용자 정의 형식(UDT) 데이터 형식 열이 있는 SAP ASE 원본 테이블은 지원하지 않습니다. 이 데이터 형식을 사용하는 복제된 열은 NULL로 생성됩니다. 대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 대상 엔드포인트의 대상 마이그레이션에 적합 한 대상 (p. 144) 섹션을 참조하십시오. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. SAP ASE 데이터 형식 AWS DMS 데이터 형식 BIGINT INT8 BINARY BYTES BIT BOOLEAN CHAR STRING 날짜 날짜 DATETIME DATETIME DECIMAL NUMERIC DOUBLE REAL8 FLOAT REAL8 IMAGE BLOB INT INT4 130
MongoDB를 원본으로 사용 SAP ASE 데이터 형식 AWS DMS 데이터 형식 MONEY NUMERIC NCHAR WSTRING NUMERIC NUMERIC NVARCHAR WSTRING REAL REAL4 SMALLDATETIME DATETIME SMALLINT INT2 SMALLMONEY NUMERIC TEXT CLOB TIME TIME TINYINT UINT1 UNICHAR UNICODE CHARACTER UNITEXT NCLOB UNIVARCHAR UNICODE VARBINARY BYTES VARCHAR STRING MongoDB를 AWS DMS에서 원본으로 사용 AWS DMS는 데이터베이스 원본으로서 MongoDB 버전 2.6.x와 3.x를 지원합니다. MongoDB가 생소하다면 다음과 같은 MongoDB 데이터베이스의 중요 개념을 잘 이해하시기 바랍니다. MongoDB의 레코드는 필드와 값으로 구성된 데이터 구조인 문서입니다. 필드의 값에는 다른 문서, 배열 및 문서의 배열이 포함될 수 있습니다. 문서는 대체로 관계형 데이터베이스 테이블의 행에 상응합니다. MongoDB의 모음은 문서 그룹이며 대략 관계형 데이터베이스 테이블에 상응합니다. 내부적으로 MongoDB 문서는 이진 JSON(BSON) 파일에 문서의 각 필드별로 형식을 포함하는 압축 형식 으로 저장됩니다. 각 문서에는 고유 ID가 있습니다. AWS DMS는 MongoDB를 원본으로 사용 시 두 가지 마이그레이션 모드를 지원합니다. MongoDB 엔드포인 트 생성 시 AWS Management Console이나 추가 연결 속성 nestinglevel을 사용하는 Metadata mode(메 타데이터 모드) 파라미터를 사용해 마이그레이션 모드를 지정하십시오. 선택한 마이그레이션 모드는 아래 설명된 대로 결과로 얻는 대상 데이터의 형식에 영향을 미칩니다. 문서 모드 문서 모드에서 MongoDB 문서는 있는 그대로 마이그레이션됩니다. 즉 해당 문서 데이터는 대상 테이블 에서 _doc라는 단일 열로 통합됩니다. 문서 모드는 MongoDB를 소스 엔드포인트로 사용할 때의 기본 설정입니다. 예를 들어, mycollection이라는 MongoDB 모음의 문서를 가정해 보십시오. 131
MongoDB를 원본으로 사용 > db.mycollection.find() "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 데이터를 문서 모드를 사용하는 관계형 데이터베이스 테이블로 마이그레이션 하면, 데이터의 구조는 다 음과 같습니다. MongoDB 문서의 데이터 필드는 _doc 열로 통합됩니다. oid_id _doc 5a94815f40bd44d1b02bdfe0 "a" : 1, "b" : 2, "c" : 3 5a94815f40bd44d1b02bdfe1 "a" : 4, "b" : 5, "c" : 6 선택적으로 추가 연결 속성 extractdocid를 true로 설정하여 기본 키 역할을 하는 "_id"라는 두 번째 열을 생성할 수 있습니다. 변경 데이터 캡처(CDC)를 사용할 경우 이 파라미터를 true로 설정합니다. 문서 모드에서 AWS DMS는 다음과 같이 모음 생성 및 이름 바꾸기를 관리합니다. 소스 데이터베이스에 새 모음을 추가하면 AWS DMS가 모음의 새 대상 테이블을 생성하고 모든 문서 를 복제합니다. 원본 데이터베이스에서 기존 모음의 이름을 바꾸면 AWS DMS는 대상 테이블의 이름을 바꾸지 않습 니다. 테이블 모드 테이블 모드에서 AWS DMS는 MongoDB 문서의 각 상위 수준 필드를 대상 테이블의 열로 변환합니다. 필드가 중첩된 경우, AWS DMS는 중첩된 값을 단일 열로 평면화합니다. 그런 다음 AWS DMS는 대상 테이블의 열 집합에 키 필드와 데이터 형식을 추가합니다. 각 MongoDB 문서별로 AWS DMS는 각 키와 유형을 대상 테이블의 열 집합에 추가합니다. 예를 들어 AWS DMS는 테이블 모드를 사용해 앞의 예제를 다음 테이블로 마이그레이션합니다. oid_id a b c 5a94815f40bd44d1b02bdfe0 1 2 3 5a94815f40bd44d1b02bdfe1 4 5 6 중첩된 값은 점으로 분리된 키 이름을 포함하는 열에 평면화됩니다. 열은 마침표로 각각 분리된 연속된 평면화된 필드 이름으로 이름이 지정됩니다. 예를 들어 AWS DMS는 a.b.c.라는 이름이 지정된 열로 "a" : "b" : "c": 1 같은 중첩된 값 필드를 가진 JSON 문서를 마이그레이션합니다. AWS DMS는 대상 열을 생성하기 위해 지정된 수의 MongoDB 문서를 스캔하고 모든 필드와 유형 의 집합을 생성합니다. 그런 다음 AWS DMS는 이 집합을 사용해 대상 테이블의 열을 생성합니다. 콘솔을 사용해 MongoDB 소스 엔드포인트를 생성하거나 수정한다면, 스캔(검사)할 문서의 수를 지 정할 수 있습니다. 기본 값은 1000 개 문서입니다. AWS DMS CLI를 사용하는 경우 추가 연결 속성 docstoinvestigate를 사용할 수 있습니다. 테이블 모드에서 AWS DMS는 문서와 모음을 다음과 같이 관리합니다. 기존 모음에 문서를 추가할 때 문서가 복제됩니다. 대상에 없는 필드가 있으면 이 필드는 복제되지 않 습니다. 문서를 업데이트하면 업데이트된 문서가 복제됩니다. 대상에 없는 필드가 있으면 이 필드는 복제되지 않습니다. 문서 삭제는 완벽하게 지원됩니다. 새 모음을 CDC 작업 중에 추가해도 대상에 테이블이 새로 생성되지 않습니다. 132
MongoDB를 원본으로 사용 모음 이름 바꾸기는 지원되지 않습니다. MongoDB를 AWS DMS 소스로 사용할 때 필요한 권한 MongoDB 소스를 이용한 AWS DMS 마이그레이션의 경우에는 루트 권한을 가진 사용자 계정을 생성하거나 마이그레이션할 데이터베이스에서만 권한이 있는 사용자를 생성할 수 있습니다. 다음 코드는 루트 계정이 되도록 사용자를 생성합니다. use admin db.createuser( user: "root", pwd: "<password>", roles: [ role: "root", db: "admin" ] ) 다음 코드는 마이그레이션할 데이터베이스에 대한 최소한의 권한이 있는 사용자를 생성합니다. use <database_to_migrate> db.createuser( user: "<dms-user>", pwd: "<password>", roles: [ role: "read", db: "local" "read"] ) 변경 데이터 캡처(CDC)에 대한 MongoDB 복제 세트 구성 MongoDB에서 지속적인 복제 또는 변경 데이터 캡처(CDC)를 사용하려면 AWS DMS가 MongoDB 작업 로 그(oplog)에 액세스할 수 있어야 합니다. oplog를 생성하려면 복제 세트를 배포하여 합니다(복제 세트가 없는 경우). 자세한 내용은 MongoDB 설명서를 참조하십시오. CDC는 소스 엔드포인트로 설정된 MongoDB 복제본 세트의 기본 또는 보조 노드와 함께 사용할 수 있습니 다. 독립형 인스턴스를 복제본 집합으로 변환하려면 1. 명령줄을 사용하여 mongo에 연결합니다. mongo localhost 2. mongod 서비스를 중단합니다. service mongod stop 3. 다음 명령을 사용하여 mongod를 다시 시작합니다. mongod --replset "rs0" --auth -port <port_number> 4. 다음 명령을 사용하여 복제본 집합에 대한 연결을 테스트합니다. mongo -u root -p <password> --host rs0/localhost:<port_number> --authenticationdatabase "admin" 133
MongoDB를 원본으로 사용 문서 모드 마이그레이션을 계획하고 있다면 MongoDB 엔드포인트 생성 시 _id as a separate column 옵션을 선택하십시오. 이 옵션을 선택하면 기본 키로 작동하는 두 번째 열인 _id 가 생성됩니다. 이 두 번째 열은 AWS DMS가 데이터 조작 언어(DML) 작업을 지원하는 데 필요합니다. AWS DMS에서 MongoDB를 원본으로 사용하기 위한 보안 요구 사 항 AWS DMS는 MongoDB에 적합한 두 가지 인증 메서드를 지원합니다. 이 두 가지 인증 메서드는 암호를 암호 화하는 데 사용되므로 authtype 파라미터를 PASSWORD로 설정할 때만 사용됩니다. MongoDB 인증 메서드는 다음과 같습니다. MONOGODB-CR MongoDB 2.x 인증을 사용할 때의 기본값. SCRAM-SHA-1 MongoDB 버전 3.x 인증을 사용할 때의 기본값. 인증 메서드가 지정되어 있지 않으면 AWS DMS는 MongoDB 소스 버전의 기본 메서드를 사용합니다. AWS DMS에서 MongoDB를 원본으로 사용 시 적용되는 제한 사항 다음은 MongoDB를 AWS DMS에서 원본으로 사용 시 제한 사항입니다. _id 옵션이 별도의 열로 설정된 경우 ID 문자열이 200자를 초과할 수 없습니다. 객체 ID와 배열 형식 키는 테이블 모드에서 oid 및 array 접두사가 붙은 열로 변환됩니다. 내부적으로 이러한 열은 접두사 이름으로 참조됩니다. AWS DMS에서 이러한 열을 참조하는 변환 규칙을 사용하는 경우, 접두사가 붙은 열을 지정해야 합니다. 예를 들면 $oid id를 지정하고 $_id를 지정 하지 않거나 $array addresses를 지정하고 $_addresses는 지정하지 않습니다. 모음 이름에는 달러 기호($)를 포함할 수 없습니다. 테이블 모드와 문서 모드에는 앞서 설명한 제한이 있습니다. MongoDB를 AWS DMS에서 소스로 사용 시 추가 연결 속성 MongoDB 소스 엔드포인트를 설정 시, 추가 연결 속성을 지정할 수 있습니다. 추가 연결 속성은 키-값 페어에 의해 지정됩니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 테이블에서는 MongoDB 데이터베이스를 AWS DMS 원본으로 사용하는 경우 제공되는 추가 연결 속성 에 관해 설명합니다. 속성 이름 유효한 값 기본값과 설명 authtype 아니요 PASSWORD NO를 선택하면 사용자 이름 및 암호 파라미 터가 사용되지 않으며 이 파라미터를 비워둘 수 있습니다. PASSWORD authmechanism DEFAULT MONGODB_CR SCRAM_SHA_1 nestinglevel NONE ONE [DEFAULT] MongoDB 버전 2.x에서는 MONGODB_CR을 사용합니다. MongoDB 버전 3.x에서는 SCRAM_SHA_1을 사 용합니다. authtype=no일 경우 이 속성이 사용되지 않습니 다. [NONE] 문서 모드를 사용하려면 [NONE]을 지정합니다. 테 이블 모드를 사용하려면 [ONE]을 지정합니다. 134
MongoDB를 원본으로 사용 속성 이름 유효한 값 기본값과 설명 extractdocid true [false] 이 속성은 nestinglevel이 [NONE]으로 설정된 경 우에 사용합니다. false docstoinvestigate 0보다 큰 양의 정수입니 다. authsource 유효한 MongoDB 데이 터베이스 이름입니다. [1000] 이 속성은 nestinglevel이 [ONE]으로 설정된 경 우에 사용합니다. admin authtype=no일 경우 이 속성이 사용되지 않습니 다. Note 대상 엔드포인트가 DocumentDB인 경우 MongoDB 소스에 대한 다음 추가 연결 속성이 다음과 같 이 설정되어 있는지 확인하십시오. nestinglevel=none extractdocid=false 자세한 내용은 AWS Database Migration Service 대상으로 Amazon DocumentDB 사용 (p. 211) 단원을 참조하십시오. MongoDB용 원본 데이터 형식 AWS DMS에서 원본으로서 MongoDB를 사용하는 데이터 마이그레이션은 대다수 MongoDB 데이터 형식 을 지원합니다. 다음 테이블에서 AWS DMS 및 AWS DMS 데이터 형식으로부터의 기본 매핑을 사용하는 경 우 지원되는 MongoDB 원본 데이터 형식을 찾을 수 있습니다. MongoDB 데이터 형식에 대한 자세한 내용은 MongoDB 설명서의 BSON Types(BSON 형식)를 참조하십시오. 대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참 조하십시오. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. MongoDB 데이터 형식 AWS DMS 데이터 형식 Boolean Bool Binary BLOB Date Date Timestamp Date 정수 INT4 Long INT8 Double REAL8 String(UTF-8) CLOB 배열 CLOB OID String 135
원본으로 Amazon Simple Storage Service 사용 MongoDB 데이터 형식 AWS DMS 데이터 형식 REGEX CLOB CODE CLOB Amazon Simple Storage Service을 AWS DMS용 소스 로 사용 AWS DMS를 사용하여 Amazon Simple Storage Service 버킷에서 데이터를 마이그레이션할 수 있습니다. 이렇게 하려면 하나 이상의 데이터 파일을 포함하는 Amazon S3 버킷에 액세스합니다. 해당 S3 버킷에서, 데 이터와 데이터의 데이터베이스 테이블 간 매핑을 설명하는 JSON 파일을 이러한 파일 안에 포함합니다. 전체 로드가 시작되기 전에 Amazon S3 버킷에 원본 데이터 파일이 있어야 합니다. bucketname 파라미터 를 사용하여 버킷 이름을 지정합니다. 소스 데이터 파일은 쉼표로 구분된 값(.csv) 형식이어야 합니다. 다음과 같이 표시되는 명명 규칙을 사용하여 이름을 지정합니다. 이 규칙에서 schemaname은 원본 스키마이고 tablename은 해당 스키마 내 테이블 이 름입니다. /schemaname/tablename/load001.csv /schemaname/tablename/load002.csv /schemaname/tablename/load003.csv... 예를 들면, 다음 Amazon S3 경로에서 mybucket에 데이터 파일이 있다고 가정합니다. s3://mybucket/hr/employee 로드 시, AWS DMS는 원본 스키마 이름이 hr이고 원본 테이블 이름이 employee라고 가정합니다. bucketname(필수) 외에도, 원할 경우 bucketfolder 파라미터를 제공하여 AWS DMS가 Amazon S3 버킷 에서 데이터 파일을 찾을 위치를 지정합니다. 이전 예에 이어서, bucketfolder를 sourcedata를 설정하는 경우 AWS DMS는 다음 경로에서 데이터 파일을 읽습니다. s3://mybucket/sourcedata/hr/employee 추가 연결 속성을 사용하여 열 구분 기호, 행 구분 기호, null 값 지표 등 여러 파라미터를 지정할 수 있습니다. 자세한 내용은 Amazon S3을 AWS DMS에서 소스로 사용 시 추가 연결 속성 (p. 139) 단원을 참조하십시 오. AWS DMS에서 원본으로 사용되는 Amazon S3에 대한 외부 테이 블 정의 데이터 파일 외에, 외부 테이블 정의도 제공해야 합니다. 외부 테이블 정의는 AWS DMS가 Amazon S3에서 데이터를 해석하는 방식을 설명하는 JSON 문서입니다. 이 문서의 최대 크기는 2 MB입니다. AWS DMS 관 리 콘솔을 사용하여 소스 엔드포인트를 생성할 경우, JSON을 테이블 매핑 상자에 직접 입력할 수 있습니 다. AWS Command Line Interface(AWS CLI) 또는 AWS DMS API를 사용하여 마이그레이션을 수행할 경우 JSON 파일을 생성하여 외부 테이블 정의할 수 있습니다. 다음을 포함하는 데이터 파일이 있다고 가정해 보겠습니다. 101,Smith,Bob,4-Jun-14,New York 102,Smith,Bob,8-Oct-15,Los Angeles 103,Smith,Bob,13-Mar-17,Dallas 136
원본으로 Amazon Simple Storage Service 사용 104,Smith,Bob,13-Mar-17,Dallas 다음은 이 데이터에 대한 외부 테이블 정의 예제입니다. "TableCount": "1", "Tables": [ "TableName": "employee", "TablePath": "hr/employee/", "TableOwner": "hr", "TableColumns": [ "ColumnName": "Id", "ColumnType": "INT8", "ColumnNullable": "false", "ColumnIsPk": "true" "ColumnName": "LastName", "ColumnType": "STRING", "ColumnLength": "20" "ColumnName": "FirstName", "ColumnType": "STRING", "ColumnLength": "30" "ColumnName": "HireDate", "ColumnType": "DATETIME" "ColumnName": "OfficeLocation", "ColumnType": "STRING", "ColumnLength": "20" ], "TableColumnsTotal": "5" ] 이 JSON 문서의 요소는 다음과 같습니다. TableCount 원본 테이블 수. 이 예제에는 테이블이 하나뿐입니다. Tables 원본 테이블당 JSON 맵 하나로 이루어진 배열. 이 예제에는 맵이 하나뿐입니다. 각 맵은 다음 요 소로 구성됩니다. TableName 원본 테이블의 이름. TablePath AWS DMS에서 전체 데이터 로드 파일을 찾을 수 있는 Amazon S3 버킷의 경로. bucketfolder 값이 지정된 경우 이 값이 경로에 추가됩니다. TableOwner 이 테이블의 스키마 이름. TableColumns 하나 이상의 맵으로 이루어진 배열. 각 맵은 원본 테이블의 열을 설명합니다. ColumnName 소스 테이블의 열 이름입니다. ColumnType 열의 데이터 형식. 유효한 데이터 형식은 Amazon Simple Storage Service용 소스 데이 터 형식 (p. 140) 섹션을 참조하십시오. ColumnLength 이 열의 바이트 수. ColumnNullable (선택 사항) 이 열에 NULL 값을 포함할 수 있는 경우 true인 부울 값. 137
원본으로 Amazon Simple Storage Service 사용 ColumnIsPk (선택 사항) 이 열이 기본 키의 일부인 경우 true인 부울 값. TableColumnsTotal 총 열 수. 이 숫자는 TableColumns 배열의 요소 수와 일치해야 합니다. 앞의 예제에서 일부 열은 STRING 형식입니다. 이 경우 ColumnLength 요소를 사용하여 최대 문자 수를 지 정합니다. 다음 데이터 형식에는 ColumnLength가 적용됩니다. BYTE STRING 별도로 지정하지 않는 경우 AWS DMS에서는 ColumnLength가 0이라고 가정합니다. NUMERIC 유형 열의 경우, 정밀도와 배율을 지정해야 합니다. 정밀도는 숫자의 총 자릿수이며, 배율은 소수 점 오른쪽의 자릿수입니다. 다음과 같이, 이를 위해 ColumnPrecision 및 ColumnScale 요소를 사용할 수 있습니다....... "ColumnName": "HourlyRate", "ColumnType": "NUMERIC", "ColumnPrecision": "5" "ColumnScale": "2" Amazon S3와 함께 CDC를 AWS DMS에서 소스로 사용 AWS DMS에서 전체 데이터 로드를 수행한 후에는 선택적으로 데이터 변경 내용을 대상 엔드포인트로 복제 할 수 있습니다. 이 작업을 수행하려면 변경 데이터 캡처 파일(CDC 파일)을 Amazon S3 버킷에 업로드할 수 있습니다. CDC 파일을 업로드할 경우 AWS DMS에서는 이러한 CDC 파일을 읽고 나서 대상 엔드포인트에 서 변경 내용을 적용합니다. CDC 파일은 다음과 같이 지정됩니다. CDC00001.csv CDC00002.csv CDC00003.csv... AWS DMS에서 파일을 찾을 수 있는 위치를 지정하려면 cdcpath 파라미터를 지정해야 합니다. 이전 예에 이어서, cdcpath를 changedata를 설정하는 경우 AWS DMS는 다음 경로에서 CDC 파일을 읽습니다. s3://mybucket/changedata 다음과 같이 CDC 파일의 레코드에는 형식 지정되어 있습니다. 작업 수행할 변경 작업: INSERT, UPDATE 또는 DELETE. 이러한 키워드는 대/소문자를 구분하지 않습니 다. 테이블 이름 소스 테이블의 이름. 스키마 이름 소스 스키마의 이름. 데이터 변경할 데이터를 나타내는 하나 이상의 열. 다음은 employee 이름의 테이블에 대한 예제 CDC 파일입니다. 138
원본으로 Amazon Simple Storage Service 사용 INSERT,employee,hr,101,Smith,Bob,4-Jun-14,New York UPDATE,employee,hr,101,Smith,Bob,8-Oct-15,Los Angeles UPDATE,employee,hr,101,Smith,Bob,13-Mar-17,Dallas DELETE,employee,hr,101,Smith,Bob,13-Mar-17,Dallas Amazon S3을 AWS DMS에서 소스로 사용 시 사전 조건 Amazon S3를 AWS DMS 소스로 사용하려면 데이터를 마이그레이션하는 DMS 복제 인스턴스와 동일한 AWS 리전에 소스 S3 버킷이 있어야 합니다. 또한, 마이그레이션에 사용하는 AWS 계정에 원본 버킷에 대한 읽기 액세스 권한이 있어야 합니다. 마이그레이션 작업을 생성하는 데 사용되는 사용자 계정에 할당된 AWS Identity and Access Management(IAM) 역할에는 다음 권한 집합이 있어야 합니다. "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": [ "s3:getobject" ], "Resource": [ "arn:aws:s3:::mybucket*" ] "Effect": "Allow", "Action": [ "s3:listbucket" ], "Resource": [ "arn:aws:s3:::mybucket*" ] ] Amazon S3을 AWS DMS에서 소스로 사용 시 추가 연결 속성 추가 연결 속성으로서 다음 옵션을 지정할 수 있습니다. 옵션 설명 bucketfolder (선택 사항) S3 버킷의 폴더 이름. 이 속성이 지정된 경우 원본 데이터 파 일과 CDC 파일이 경로 bucketfolder/schemaname/tablename/에 서 읽어올 수 있습니다. 이 속성이 지정되지 않은 경우, 사용되는 경로는 schemaname/tablename/입니다. 예를 들면 다음과 같습니다. bucketfolder=testfolder; bucketname S3 버킷의 이름. 예를 들면 다음과 같습니다. bucketname=buckettest; cdcpath 변경 데이터 캡처(CDC) 파일의 위치. 작업네서 변경 데이터를 캡처하는 경우 에는 이 속성이 필수이며, 그렇지 않은 경우에는 선택 사항입니다. cdcpath가 139
원본으로 Amazon Simple Storage Service 사용 옵션 설명 있는 경우, AWS DMS는 이 경로에서 CDC 파일을 읽고 데이터 변경 사항을 대 상 엔드포인트로 복제합니다. 자세한 내용은 Amazon S3와 함께 CDC를 AWS DMS에서 소스로 사용 (p. 138) 단원을 참조하십시오. 예를 들면 다음과 같습 니다. cdcpath=datachanges; csvdelimiter 원본 파일에서 열을 구분하는 데 사용되는 구분 기호입니다. 기본값은 쉼표입니 다. 예를 들면 다음과 같습니다. csvdelimiter=,; csvrowdelimiter 원본 파일에서 행을 구분하는 데 사용되는 구분 기호입니다. 기본값은 줄 바꿈 (\n)입니다. 예를 들면 다음과 같습니다. csvrowdelimiter=\n; externaltabledefinition 마이그레이션하는 동안 AWS DMS에서 Amazon S3 버킷에 있는 데이터를 어 떻게 해석할지를 설명하는 JSON 객체. 자세한 내용은 AWS DMS에서 원본으 로 사용되는 Amazon S3에 대한 외부 테이블 정의 (p. 136) 단원을 참조하십 시오. 예를 들면 다음과 같습니다. externaltabledefinition=<json_object>; ignoreheaderrows 1로 설정하면 AWS DMS는.csv 파일의 첫 행 헤더를 무시합니다. 1 값은 이 기 능을 활성화하고, 0 값은 비활성화합니다. 기본값은 0입니다. ignoreheaderrows=1; rfc4180 true 또는 y로 설정하면 여는 큰 따옴표 뒤에 닫는 큰 따옴표가 와야 합니다. (이 는 RFC 4180를 준수합니다.) false로 설정하면 문자열 리터럴이 그대로 대상에 복사됩니다. 이 경우 구분 기호(행 또는 열)는 필드의 끝을 알립니다. 따라서 구 분 기호는 값의 끝을 알리기 때문에 문자열의 일부로 사용할 수 없습니다. 기본값은 true입니다. 유효한 값: true, false, y, n 예: rfc4180=false; Amazon Simple Storage Service용 소스 데이터 형식 Amazon Simple Storage Service를 AWS DMS에서 소스로 사용하는 데이터 마이그레이션에서 Amazon S3 의 데이터를 AWS DMS 데이터 형식으로 매핑해야 합니다. 자세한 내용은 AWS DMS에서 원본으로 사용되 는 Amazon S3에 대한 외부 테이블 정의 (p. 136) 단원을 참조하십시오. 대상에서 매핑된 데이터 형식을 확인하는 방법에 대한 정보는 사용 중인 대상 엔드포인트에 대한 섹션을 참 조하십시오. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. AWS DMS 데이터 형식 Amazon Simple Storage Service 소스 BYTE 140
IBM Db2 LUW를 소스로 사용 AWS DMS 데이터 형식 Amazon Simple Storage Service 소스 ColumnLength가 필요합니다. 자세한 내용은 AWS DMS에서 원본으로 사용되는 Amazon S3에 대한 외 부 테이블 정의 (p. 136) 단원을 참조하십시오. DATE TIME DATETIME TIMESTAMP INT1 INT2 INT4 INT8 NUMERIC ColumnPrecision 및 ColumnScale 필요 자세한 내용은 AWS DMS에서 원본으로 사용되는 Amazon S3에 대한 외부 테이블 정의 (p. 136) 단원을 참조하십시오. REAL4 REAL8 STRING ColumnLength가 필요합니다. 자세한 내용은 AWS DMS에서 원본으로 사용되는 Amazon S3에 대한 외 부 테이블 정의 (p. 136) 단원을 참조하십시오. UINT1 UINT2 UINT4 UINT8 BLOB CLOB BOOLEAN AWS DMS 소스로 Linux, Unix, Windows Database용 IBM Db2(Db2 LUW)를 사용 AWS Database Migration Service(AWS DMS)를 사용하여 지원되는 대상 데이터베이스로 Linux, Unix, Windows용 IBM Db2(Db2 LUW) 데이터베이스에서 데이터를 마이그레이션할 수 있습니다. AWS DMS는 마 이그레이션 소스로 다음 Db2 LUW 버전을 지원합니다. 버전 9.7(지원되는 모든 수정 팩 포함) 버전 10.1(지원되는 모든 수정 팩 포함) 버전 10.5(수정 팩 5를 제외하고 지원되는 모든 수정 팩 포함) 141
IBM Db2 LUW를 소스로 사용 버전 11.1(지원되는 모든 수정 팩 포함) Secure Sockets Layer(SSL)를 사용하여 Db2 LUW 엔드포인트와 복제 인스턴스 간 연결을 암호화할 수 있습 니다. SSL을 사용하려면 AWS DMS 엔진 버전 2.4.2 이상을 사용하십시오. Db2 LUW 엔드포인트에서 SSL 을 사용하는 방법에 대한 자세한 내용은 AWS Database Migration Service에서 SSL 사용 (p. 47) 섹션을 참 조하십시오. Db2 LUW를 AWS DMS에서 소스로 사용 시 사전 조건 Db2 LUW 데이터베이스를 소스로 사용하기 전에 다음 사전 조건이 요구됩니다. 변경 데이터 캡처(CDC)라고도 하는 지속적 복제를 활성화하기 위해서는 다음을 수행하십시오. AWS DMS가 변경 사항을 캡처하려면 데이터베이스를 복구 가능하도록 설정해야 합니다. 데이터베이스 구성 파라미터인 LOGARCHMETH1과 LOGARCHMETH2 중 하나, 또는 둘 모두가 ON으로 설정되어 있어 야 데이터베이스를 복구할 수 있습니다. 사용자 계정에 다음 권한을 부여합니다. SYSADM이나 DBADM DATAACCESS Db2 LUW를 AWS DMS의 소스로 사용 시 적용되는 제한 사항 AWS DMS는 클러스터링된 데이터베이스를 지원하지 않습니다. 하지만 클러스터의 각 엔드포인트에 별도의 Db2 LUW를 정의할 수 있습니다. 자세한 내용은 Db2 LUW 설명서를 참조하십시오. 지속적 복제(CDC)를 사용할 때 다음 제한 사항이 적용됩니다. 여러 파티션이 있는 테이블이 잘리는 경우, AWS DMS 콘솔에 표시되는 DDL 이벤트 수는 파티션의 수와 같습니다. Db2 LUW가 각 파티션에 별개의 DDL을 기록하기 때문입니다. 분할된 테이블에서는 다음 DDL 작업이 지원되지 않습니다. ALTER TABLE ADD PARTITION ALTER TABLE DETACH PARTITION ALTER TABLE ATTACH PARTITION DECFLOAT 데이터 형식은 지원되지 않습니다. 따라서 지속적 복제 진행 중 DECFLOAT 열들의 변경 내용 이 무시됩니다. RENAME COLUMN 문은 지원되지 않습니다. MDC(Multi-Dimensional Clustering) 테이블의 업데이트를 수행하면 각 업데이트가 AWS DMS 콘솔에 INSERT + DELETE로 표시됩니다. 작업 설정 복제에 LOB 열 포함이 활성화되지 않은 경우, LOB 열이 있는 테이블은 지속적 복제 도중 일시 중지됩니다. 감사 테이블 옵션이 활성화되면 감사 테이블의 첫 번째 타임스탬프 레코드는 NULL입니다. 변경 테이블 옵션이 활성화되면 테이블의 첫 번째 타임스탬프 레코드는 0(1970-01-01 00:00:00.000000)입 니다. Db2 LUW 버전 10.5 이상의 경우, 데이터가 행 외부에 저장된 가변 길이 문자열 열은 무시됩니다. 이 제한 은 확장된 행 크기로 생성된 테이블에만 적용됩니다. Db2 LUW를 AWS DMS용 소스로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 Db2 LUW 소스를 구성할 수도 있습니다. 소스 엔드포인트 생성 시 이러한 설정을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 142
IBM Db2 LUW를 소스로 사용 다음 표에는 Db2 LUW를 소스로 하여 사용할 수 있는 추가 연결 속성이 나와 있습니다. 이름 설명 CurrentLSN 지속적 복제(CDC)의 경우, CurrentLSN을 사용하여 복제가 시작될 로그 시퀀스 번호(LSN)를 지정합니다. MaxKBytesPerRead 읽기 당 바이트의 최대 수(NUMBER 값) 기본값은 64KB입니 다. SetDataCaptureChanges 부울 값으로 지속적 복제(CDC)를 활성화합니다. 기본값은 true 입니다. IBM Db2 LUW용 소스 데이터 유형 AWS DMS에서 소스로 Db2 LUW를 사용하는 데이터 마이그레이션은 대다수 Db2 LUW 데이터 유형을 지원 합니다. 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에서 매핑할 때 지원되 는 Db2 LUW 소스 데이터 형식이 나와 있습니다. Db2 LUW 데이터 형식에 대한 자세한 내용은 Db2 LUW 설 명서를 참조하십시오. 대상에서 매핑된 데이터 형식을 보는 방법에 대한 자세한 내용은 사용 중인 대상 엔드포인트 단원을 참조하 십시오. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. Db2 LUW 데이터 유형 AWS DMS 데이터 형식 INTEGER INT4 SMALLINT INT2 BIGINT INT8 DECIMAL (p,s) NUMERIC (p,s) FLOAT REAL8 DOUBLE REAL8 REAL REAL4 DECFLOAT (p) 정밀도가 16이면 REAL8, 정밀도가 34이면 STRING GRAPHIC (n) 길이가 0보다 크고 127 이하인 2바이트 문자 고정 길이 그래픽 문자열의 경우, WSTRING VARGRAPHIC (n) 길이가 0보다 크고 16,352 이하인 2바이트 문자 가 변 길이 그래픽 문자열의 경우, WSTRING LONG VARGRAPHIC (n) 길이가 0보다 크고 16,352 이하인 2바이트 문자 가 변 길이 그래픽 문자열의 경우, CLOB CHARACTER (n) 길이가 0보다 크고 255 이하인 2바이트 문자 고정 길이 문자열의 경우, STRING VARCHAR (n) 길이가 0보다 크고 32,704 이하인 2바이트 문자 가 변 길이 문자열의 경우, STRING 143
대상 마이그레이션에 적합한 대상 Db2 LUW 데이터 유형 AWS DMS 데이터 형식 LONG VARCHAR (n) 길이가 0보다 크고 32,704 이하인 2바이트 문자 가 변 길이 문자열의 경우, CLOB CHAR (n) FOR BIT DATA BYTES VARCHAR (n) FOR BIT DATA BYTES LONG VARCHAR FOR BIT DATA BYTES DATE DATE TIME TIME TIMESTAMP DATETIME BLOB (n) BLOB 최대 길이는 2,147,483,647바이트 CLOB (n) CLOB 최대 길이는 2,147,483,647바이트 DBCLOB (n) CLOB 최대 길이는 1,073,741,824 2바이트 문자 XML CLOB 대상 마이그레이션에 적합한 대상 AWS Database Migration Service(AWS DMS)는 데이터 복제에서 대상으로서 가장 인기 있는 데이터베이 스를 다수 사용할 수 있습니다. 대상은 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스, Amazon Relational Database Service(Amazon RDS) 인스턴스 또는 온프레미스 데이터베이스에 있습니다. 데이터베이스에는 다음이 포함됩니다. 온프레미스 및 EC2 인스턴스 데이터베이스 Enterprise, Standard, Standard One 및 Standard Two 버전용 Oracle 버전 10g, 11g, 12c Enterprise, Standard, Workgroup, 및 Developer 버전용 Microsoft SQL Server 버전 2005, 2008, 2008R2, 2012, 2014 및 2016. Web 및 Express 버전은 지원되지 않습니다. MySQL 버전 5.5, 5.6 및 5.7 MariaDB(MySQL 호환 데이터 대상으로 지원됨) PostgreSQL 버전 9.4 이상 SAP Adaptive Server Enterprise(ASE) 버전 15, 15.5, 15.7, 16 이상 Amazon RDS 인스턴스 데이터베이스, Amazon Redshift, Amazon Simple Storage Service(Amazon S3), Amazon DynamoDB, Amazon Elasticsearch Service, Amazon Kinesis Data Streams, Amazon DocumentDB Enterprise, Standard, Standard One, Standard Two 버전용 Amazon RDS for Oracle 버전 11g(버전 11.2.0.3.v1 이상) 및 12c 144
Oracle을 대상으로 사용 Enterprise, Standard, Workgroup 및 Developer 버전용 Amazon RDS for Microsoft SQL Server 버전 2008R2, 2012, 2014. Web 및 Express 버전은 지원되지 않습니다. Amazon RDS for MySQL 버전 5.5, 5.6, 5.7 Amazon RDS for MariaDB(MySQL 호환 데이터 대상으로 지원됨) Amazon RDS for PostgreSQL 버전 9.4 이상 MySQL과 호환되는 Amazon Aurora Amazon Aurora의 PostgreSQL 호환성 Amazon Redshift Amazon S3 Amazon DynamoDB Amazon Elasticsearch Service Amazon Kinesis Data Streams Amazon DocumentDB(MongoDB와 호환) Note AWS DMS는 다음 대상 엔드포인트 유형에 대해 교차 리전 마이그레이션을 지원하지 않습니다. Amazon DynamoDB Amazon Elasticsearch Service Amazon Kinesis Data Streams 주제 AWS Database Migration Service에서 Oracle 데이터베이스를 대상으로 사용 (p. 145) AWS Database Migration Service에서 Microsoft SQL Server를 대상으로 사용 (p. 150) AWS Database Migration Service에서 PostgreSQL 데이터베이스를 대상으로 사용 (p. 154) AWS Database Migration Service에서 MySQL 호환 데이터베이스를 대상으로 사용 (p. 156) AWS Database Migration Service에서 Amazon Redshift 데이터베이스를 대상으로 사용 (p. 161) AWS Database Migration Service에서 SAP ASE 데이터베이스를 대상으로 사용 (p. 172) AWS Database Migration Service 대상으로 Amazon S3 사용 (p. 174) AWS Database Migration Service에서 Amazon DynamoDB 데이터베이스를 대상으로 사용 (p. 190) AWS Database Migration Service 대상으로 Amazon Kinesis Data Streams 사용 (p. 203) Amazon Elasticsearch Service 클러스터를 AWS Database Migration Service의 대상으로 사 용 (p. 208) AWS Database Migration Service 대상으로 Amazon DocumentDB 사용 (p. 211) AWS Database Migration Service에서 Oracle 데이터베 이스를 대상으로 사용 AWS DMS를 사용하여 다른 Oracle 데이터베이스에서나 지원되는 다른 데이터베이스 중 하나에서 Oracle 데이터베이스로 데이터를 마이그레이션할 수 있습니다. Secure Sockets Layer(SSL)을 사용하여 Oracle 엔 드포인트와 복제 인스턴스 연결을 암호화할 수 있습니다. Oracle 엔드포인트에서 SSL을 사용하는 방법에 대 한 자세한 내용은 AWS Database Migration Service에서 SSL 사용 (p. 47) 섹션을 참조하십시오. AWS DMS는 대상으로서 Enterprise, Standard, Standard One 및 Standard Two 버전 온프레미스와 EC2 인 스턴스용 Oracle 버전 10g, 11g, 12c를 지원합니다. AWS DMS는 Enterprise, Standard, Standard One 및 145
Oracle을 대상으로 사용 Standard Two 버전에서 Amazon RDS 인스턴스 데이터베이스용 Oracle 버전 11g (버전 11.2.0.3.v1 이상) 및 12c를 지원합니다. Oracle을 대상으로 사용할 때에는 데이터가 대상에서 사용되는 스키마 또는 사용자로 마이그레이션되어야 한다고 가정합니다. 데이터를 다른 스키마로 마이그레이션할 경우, 이를 위해서는 스키마 변환을 사용해야 합니다. 예를 들어 대상 엔드포인트가 사용자 RDSMASTER에 연결되고 사용자 PERFDATA에서 PERFDATA로 마이그레이션하려 한다고 가정합니다. 이 경우, 다음과 같이 변환을 생성합니다. "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": "schema-name": "PERFDATA" "value": "PERFDATA" 또한 소스 엔드포인트도 Oracle인 경우, 기존 테이블 또는 인덱스 테이블스페이스 할당이 대상에서 보존된 다고 가정합니다. 소스 엔드포인트가 Oracle이 아닌 경우, 기본 테이블 및 인덱스 테이블스페이스를 대상 에서 사용합니다. 테이블과 인덱스를 다른 테이블 및 인덱스 테이블스페이스로 마이그레이션하려면 테이 블스페이스 변환을 사용해야 합니다. 예를 들어 Oracle 소스의 일부 테이블스페이스에 할당된 INVENTORY 스키마에 테이블 집합이 있다고 가정해 보겠습니다. 마이그레이션을 위해 이러한 모든 테이블을 대상의 INVENTORYSPACE 테이블스페이스에 할당하려고 합니다. 이 경우, 다음과 같이 변환을 생성합니다. "rule-type": "transformation", "rule-id": "3", "rule-name": "3", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": "schema-name": "INVENTORY", "table-name": "%", "table-tablespace-name": "%" "value": "INVENTORYSPACE" 변환에 대한 자세한 내용은 JSON을 사용하여 테이블 매핑을 통해 테이블 선택 및 변환 지정 (p. 262) 섹션 을 참조하십시오. Oracle 데이터베이스를 AWS DMS에 대한 대상으로 사용하여 작업하는 방법에 대한 자세한 내용은 다음 단 원을 참조하십시오. 주제 AWS Database Migration Service 대상으로서 Oracle에 적용되는 제한 사항 (p. 147) Oracle을 대상으로 사용할 때 필요한 사용자 계정 권한 (p. 147) AWS Database Migration Service에서 Oracle 데이터베이스를 대상으로 구성 (p. 148) Oracle을 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 148) Oracle용 대상 데이터 형식 (p. 149) 146
Oracle을 대상으로 사용 AWS Database Migration Service 대상으로서 Oracle에 적용되는 제한 사항 데이터 마이그레이션에서 Oracle 데이터베이스를 대상으로 사용할 때 적용되는 제한 사항에는 다음이 있습 니다. AWS DMS는 대상 Oracle 데이터베이스에서 스키마를 생성하지 않습니다. 대상 Oracle 데이터베이스에서 필요한 스키마를 생성해야 합니다. Oracle 대상에서 스키마 이름이 이미 있어야 합니다. 원본 스키마의 테 이블을 대상 인스턴스에 연결하기 위해 AWS DMS가 사용하는 사용자/스키마로 가져옵니다. 여러 스키마 를 마이그레이션해야 하는 경우, 다중 복제 작업을 생성합니다. AWS DMS는 INDEXTYPE CONTEXT를 사용한 테이블에서 Use direct path full load 옵션을 지 원하지 않습니다. 차선책으로서 어레이 로드를 사용할 수 있습니다. Batch Optimized Apply 모드에서 최종 변경 사항 테이블로 로드할 때에는 XMLType을 지원하지 않는 직접 경로를 사용합니다. 차선책으로서 Transactional Apply 모드를 사용할 수 있습니다. Oracle을 대상으로 사용할 때 필요한 사용자 계정 권한 AWS Database Migration Service 작업에서 Oracle 대상을 사용하려면 Oracle 데이터베이스에서 다음 권한 을 부여합니다. 이러한 권한은 AWS DMS의 Oracle 데이터베이스 정의에서 지정된 사용자 계정에 부여합니 다. SELECT ANY TRANSACTION SELECT on V$NLS_PARAMETERS SELECT on V$TIMEZONE_NAMES SELECT on ALL_INDEXES SELECT on ALL_OBJECTS SELECT on DBA_OBJECTS SELECT on ALL_TABLES SELECT on ALL_USERS SELECT on ALL_CATALOG SELECT on ALL_CONSTRAINTS SELECT on ALL_CONS_COLUMNS SELECT on ALL_TAB_COLS SELECT on ALL_IND_COLUMNS DROP ANY TABLE SELECT ANY TABLE INSERT ANY TABLE UPDATE ANY TABLE CREATE ANY VIEW DROP ANY VIEW CREATE ANY PROCEDURE ALTER ANY PROCEDURE DROP ANY PROCEDURE CREATE ANY SEQUENCE ALTER ANY SEQUENCE DROP ANY SEQUENCE 다음과 같이 지정된 요구 사항에서 명명된 추가 권한을 부여합니다. 147
Oracle을 대상으로 사용 특정 테이블 목록을 사용하려면, 복제된 테이블에서 SELECT를 부여하고 복제된 테이블에서도 ALTER를 부여합니다. 사용자가 기본 테이블스페이스에서 테이블을 생성하도록 허용하려면 권한 GRANT UNLIMITED TABLESPACE를 부여합니다. 로그온의 경우, 권한 CREATE SESSION을 부여합니다. 직접 경로를 사용하는 경우, 권한 LOCK ANY TABLE을 부여합니다. 전체 로드 설정에서 "DROP 및 CREATE 테이블" 또는 "로드 전 TRUNCATE" 옵션을 선택하고 대상 테이 블 스키마가 AWS DMS 사용자의 테이블 스키마와 다른 경우, 권한 DROP ANY TABLE을 부여합니다. 대상 테이블 스키마가 AWS DMS 사용자의 테이블 스키마와 다를 때 변경 테이블이나 감사 테이블에 변경 사항을 저장하려면, 권한 CREATE ANY TABLE 및 CREATE ANY INDEX를 부여합니다. 대상 데이터베이스에서 AWS Database Migration Service에 필요한 읽기 권한 다음 DBA 테이블의 읽기 권한을 AWS DMS 사용자 계정에 부여해야 합니다. SELECT on DBA_USERS SELECT on DBA_TAB_PRIVS SELECT on DBA_OBJECTS SELECT on DBA_SYNONYMS SELECT on DBA_SEQUENCES SELECT on DBA_TYPES SELECT on DBA_INDEXES SELECT on DBA_TABLES SELECT on DBA_TRIGGERS 필요한 권한을 V$xxx에 부여할 수 없는 경우, V_$xxx에 부여합니다. AWS Database Migration Service에서 Oracle 데이터베이스를 대 상으로 구성 Oracle 데이터베이스를 마이그레이션 대상으로 사용하기 전에 Oracle 사용자 계정을 AWS DMS에 제공해야 합니다. 사용자 계정에는 Oracle을 대상으로 사용할 때 필요한 사용자 계정 권한 (p. 147)에 지정된 바와 같 이 Oracle 데이터베이스에서 읽기/쓰기 권한이 있어야 합니다. Oracle을 AWS DMS의 대상으로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 Oracle 대상을 구성할 수도 있습니다. 대상 엔드포인트 생성 시 이러한 설정을 지 정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 Oracle을 대상으로 사용 시 사용 가능한 추가 연결 속성이 나와 있습니다. 이름 설명 usedirectpathfullload 직접 경로 전체 로드를 사용합니다. 이 항목을 지정하여 Oracle 테이블을 대량으로 로드할 수 있도록 Oracle Cloud Infrastructure(OCI)에서 직접 경로 프로토콜을 활성화하거나 비활성화합니다. 기본 값: Y 유효한 값: Y/N 148
Oracle을 대상으로 사용 이름 설명 예: usedirectpathfullload=n 열 길이 의미는 열 길이 단위가 바이트인지 문자인지 지정합니 다. 이 값을 CHAR로 설정합니다. charlengthsemantics 예: charlengthsemantics=char Oracle용 대상 데이터 형식 AWS DMS에서 사용되는 대상 Oracle 데이터베이스는 대다수 Oracle 데이터 형식을 지원합니다. 다음 테이 블에는 AWS DMS 사용 시, 그리고 AWS DMS 데이터 형식에서 매핑할 때 지원하는 Oracle 대상 데이터 형 식이 나와 있습니다. 원본에서 매핑된 데이터 형식을 확인하는 방법에 대한 자세한 내용은 사용 중인 원본에 대한 섹션을 참조하십시오. AWS DMS 데이터 형식 Oracle 데이터 형식 BOOLEAN NUMBER (1) BYTES RAW(길이) DATE DATETIME TIME TIMESTAMP (0) DATETIME TIMESTAMP(크기) INT1 NUMBER (3) INT2 NUMBER (5) INT4 NUMBER (10) INT8 NUMBER (19) NUMERIC NUMBER (p,s) REAL4 FLOAT REAL8 FLOAT STRING 날짜 표시: DATE 포함 시간 표시: TIMESTAMP 포함 타임스탬프 표시: TIMESTAMP 포함 timestamp_with_timezone 표시: TIMESTAMP WITH TIMEZONE 포함 timestamp_with_local_timezone 표시: TIMESTAMP WITH LOCAL TIMEZONE 포함 interval_year_to_month 표시: INTERVAL YEAR TO MONTH 포함 interval_day_to_second 표시: INTERVAL DAY TO SECOND 포함 길이 > 4000인 경우: CLOB 다른 모든 경우: VARCHAR2(길이) 149
SQL Server를 대상으로 사용 AWS DMS 데이터 형식 Oracle 데이터 형식 UINT1 NUMBER (3) UINT2 NUMBER (5) UINT4 NUMBER (10) UINT8 NUMBER (19) WSTRING 길이가 > 2000: NCLOB인 경우 다른 모든 경우: NVARCHAR2(길이) BLOB BLOB AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 BLOB 사용 을 활성화해야 합니다. BLOB 데이터 형식은 기본 키를 포함하는 테이블 에서만 지원됩니다. CLOB CLOB AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 CLOB 사용 을 활성화해야 합니다. CDC 중에 CLOB 데이터 형식은 기본 키를 포함하 는 테이블에서만 지원됩니다. NCLOB NCLOB AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 NCLOB 사 용을 활성화해야 합니다. CDC 중에 NCLOB 데이터 형식은 기본 키를 포 함하는 테이블에서만 지원됩니다. XMLTYPE XMLTYPE 대상 데이터 형식은 Oracle 간 복제 작업에서만 관련이 있습니 다. 소스 데이터베이스가 Oracle이면 소스 데이터 형식은 Oracle 대상에 '그 대로' 복제됩니다. 예를 들어, 원본의 XMLTYPE 데이터 형식은 대상에서 XMLTYPE 데이터 형식으로 생성됩니다. AWS Database Migration Service에서 Microsoft SQL Server를 대상으로 사용 AWS DMS를 사용하여 Microsoft SQL Server 데이터베이스로 데이터를 마이그레이션할 수 있습니다. SQL Server 데이터베이스를 대상으로 사용할 때에는 다른 SQL Server 데이터베이스나 지원되는 다른 데이터베 이스 중 하나에서 가져온 데이터베이스를 마이그레이션할 수 있습니다. 온프레미스 및 Amazon EC2 인스턴스 데이터베이스의 경우, AWS DMS는 대상으로서 Enterprise, Standard, Workgroup 및 Developer 버전용 SQL Server 버전 2005, 2008, 2008R2, 2012, 2014, 2016 및 2017을 지원 합니다. Web 및 Express 버전은 지원되지 않습니다. Amazon RDS 인스턴스 데이터베이스의 경우, AWS DMS는 대상으로서 Enterprise, Standard, Workgroup 및 Developer 버전용 SQL Server 버전 2008R2, 2012, 2014, 2016 및 2017을 지원합니다. Web 및 Express 버전은 지원되지 않습니다. AWS DMS 및 SQL Server 대상 데이터베이스 사용에 대한 추가 세부 정보는 다음을 참조하십시오. 주제 AWS Database Migration Service에서 SQL Server를 대상으로 사용할 때 적용되는 제한 사항 (p. 151) 150
SQL Server를 대상으로 사용 AWS Database Migration Service에서 SQL Server를 대상으로 사용할 때의 보안 요구 사항 (p. 151) SQL Server를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 151) Microsoft SQL Server용 대상 데이터 형식 (p. 152) AWS Database Migration Service에서 SQL Server를 대상으로 사 용할 때 적용되는 제한 사항 다음 제한 사항은 SQL Server 데이터베이스를 AWS DMS용 대상으로 사용 시 적용됩니다. 계산된 열에서 SQL Server 대상 테이블을 수동으로 생성하면, BCP 대량 복사 유틸리티를 사용할 때 전체 로드 복제가 지원되지 않습니다. 전체 로드 복제를 사용하려면, 콘솔의 [Advanced] 탭에서 [Use BCP for loading tables] 옵션을 비활성화합니다. BCP 사용에 대한 자세한 내용은 Microsoft SQL Server 설명서를 참조하십시오. SQL Server 공간 데이터 유형(GEOMETRY 및 GEOGRAPHY)으로 테이블을 복제하면 AWS DMS는 삽입 할 수 있었던 모든 공간 참조 식별자(SRID)를 기본 SRID로 대체합니다. GEOMETRY에서 기본 SRID는 0 이고 GEOGRAPHY에서는 4326입니다. 임시 테이블은 지원되지 않습니다. 임시 테이블 마이그레이션은 이 테이블이 대상에서 수동으로 생성되지 않는 경우 Transactional Apply 모드에서 복제 전용 작업을 통해 수행할 수도 있습니다. AWS Database Migration Service에서 SQL Server를 대상으로 사 용할 때의 보안 요구 사항 다음은 Microsoft SQL Server 대상과 함께 AWS DMS을 사용할 경우의 보안 요구 사항에 대한 설명입니다. AWS DMS 사용자 계정의 사용자 역할은 연결하는 SQL Server 데이터베이스에서 db_owner 이상이어야 합니다. SQL Server 시스템 관리자는 모든 AWS DMS 사용자 계정에 이 권한을 부여해야 합니다. SQL Server를 AWS DMS의 대상으로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 SQL Server 대상을 구성할 수도 있습니다. 대상 엔드포인트 생성 시 이러한 설정 을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 SQL Server가 대상일 때 사용 가능한 추가 연결 속성이 나와 있습니다. 이름 설명 usebcpfullload 이 속성을 사용하여 BCP를 사용한 전체 로드 작업에서 데이터 를 전송합니다. 원본 테이블에 없는 자격 증명 열이 대상 테이 블에 포함되어 있으면, use BCP for loading table(테이블 로드 시 BCP 사용) 옵션을 비활성화해야 합니다. 기본 값: Y 유효한 값: Y/N 예: usebcpfullload=y BCPPacketSize BCP를 사용하여 데이터를 전송할 때 사용되는 최대 패킷 크기 (바이트 단위)입니다. 기본값: 16384 151
SQL Server를 대상으로 사용 이름 설명 유효한 값: 1 100000 예 : BCPPacketSize=16384 AWS DMS 내부 테이블의 파일 그룹을 지정합니다. 복제 작업 을 시작할 때에는 모든 내부 AWS DMS 제어 테이블(awsdms_ apply_exception, awsdms_apply, awsdms_changes)이 지정된 파일 그룹에 생성됩니다. controltablesfilegroup 기본값: 해당 사항 없음 유효한 값: 문자열 예: controltablesfilegroup=filegroup1 다음은 파일 그룹을 생성한 명령의 예입니다. ALTER DATABASE replicate ADD FILEGROUP Test1FG1; GO ALTER DATABASE replicate ADD FILE ( NAME = test1dat5, FILENAME = 'C:\temp\DATA\t1dat5.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) TO FILEGROUP Test1FG1; GO Microsoft SQL Server용 대상 데이터 형식 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에 매핑할 때 지원되는 Microsoft SQL Server 대상 데이터 형식이 나와 있습니다. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원을 참조하십시오. AWS DMS 데이터 형식 SQL Server 데이터 형식 BOOLEAN TINYINT BYTES VARBINARY(길이) DATE SQL Server 2008 이상에서는 DATE를 사용합니다. 이전 버전의 경우에 크기가 3이면 DATETIME을 사용합니다. 다른 모든 경 우에서는 VARCHAR (37)을 사용합니다. TIME SQL Server 2008 이상에서는 DATETIME2(%d)를 사용합니다. 이전 버전의 경우에 크기가 3이면 DATETIME을 사용합니다. 다른 모든 경 우에서는 VARCHAR (37)을 사용합니다. DATETIME SQL Server 2008 이상에서는 DATETIME2(크기)를 사용합니다. 이전 버전의 경우에 크기가 3이면 DATETIME을 사용합니다. 다른 모든 경 우에서는 VARCHAR (37)을 사용합니다. 152
SQL Server를 대상으로 사용 AWS DMS 데이터 형식 SQL Server 데이터 형식 INT1 SMALLINT INT2 SMALLINT INT4 INT INT8 BIGINT NUMERIC NUMBER (p,s) REAL4 REAL REAL8 FLOAT STRING 열이 날짜 또는 시간 열인 경우, 다음 작업을 수행합니다. SQL Server 2008 이상에서는 DATETIME2를 사용합니다. 이전 버전의 경우에 크기가 3이면 DATETIME을 사용합니다. 다른 모든 경우에서는 VARCHAR (37)을 사용합니다. 열이 날짜 또는 시간 열이 아닌 경우, VARCHAR(길이)을 사용합니다. UINT1 TINYINT UINT2 SMALLINT UINT4 INT UINT8 BIGINT WSTRING NVARCHAR(길이) BLOB VARBINARY(최대) IMAGE AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 BLOB 사용 을 활성화해야 합니다. AWS DMS는 기본 키를 포함하는 테이블에서만 BLOB 데이터 형식을 지원합니다. CLOB VARCHAR(최대) AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 CLOB 사용 을 활성화해야 합니다. CDC 중에 AWS DMS는 기본 키를 포함하는 테이 블에서만 CLOB 데이터 형식을 지원합니다. NCLOB NVARCHAR(최대) AWS DMS에서 이 데이터 형식을 사용하려면, 특정 작업에서 NCLOB 사 용을 활성화해야 합니다. CDC 중에 AWS DMS는 기본 키를 포함하는 테 이블에서만 NCLOB 데이터 형식을 지원합니다. 153
PostgreSQL를 대상으로 사용 AWS Database Migration Service에서 PostgreSQL 데 이터베이스를 대상으로 사용 AWS DMS를 사용하여 다른 PostgreSQL 데이터베이스 또는 지원되는 다른 데이터베이스 중 하나에서 PostgreSQL 데이터베이스로 데이터를 마이그레이션할 수 있습니다. 온프레미스, Amazon RDS, Amazon Aurora(PostgreSQL 호환) 및 EC2 인스턴스 데이터베이스에서 PostgreSQL 버전 9.4 이상이 지원됩니다. AWS DMS에서는 전체 로드 단계에서 소스로부터 대상으로 데이터를 마이그레이션할 때 테이블 단위 접근 방식을 취합니다. 전체 로드 단계 시 테이블 순서를 보장할 수 없습니다. 일반적으로 전체 로드 단계가 수행 되는 동안과 개별 테이블의 캐시된 트랜잭션이 적용되는 동안 테이블은 동기화되지 않습니다. 결과적으로 활 성 참조 무결성 제약으로 인해 전체 로드 단계 중에 작업 실패가 발생합니다. PostgreSQL에서는 트리거를 사용하여 외래 키(참조 무결성 제약)가 구현됩니다. 전체 로드 단계 동안 AWS DMS는 한 번에 하나씩 각 테이블을 로드합니다. 다음 방법 중 하나를 사용하여 전체 로드 동안 외래 키 제약 을 비활성화하는 것이 좋습니다. 인스턴스에서 모든 테이블을 임시로 비활성화하고 나서, 전체 로드를 완료합니다. PostgreSQL에서 session_replication_role 파라미터를 사용합니다. 해당 시점에 트리거는 origin, replica, always 또는 disabled 상태 중 하나일 수 있습니다. session_replication_role 파라미터가 replica로 설정되는 경우 replica 상태의 트리거만 활성 상 태이며 호출될 때 트리거됩니다. 그렇지 않으면, 트리거가 비활성 상태로 유지됩니다. PostgreSQL에는 session_replication_role이 설정되었더라도 테이블 잘림을 방지하기 위한 안전 메 커니즘이 있습니다. 전체 로드 실행이 완료될 수 있도록 이 메커니즘을 대안으로 사용하여 트리거를 비활성 화할 수 있습니다. 이렇게 하려면 대상 테이블 준비 모드를 DO_NOTHING으로 설정합니다. 그렇지 않으면, 외 래 키 제약이 있는 경우 DROP 및 TRUNCATE 작업이 실패합니다. Amazon RDS에서는 파라미터 그룹을 사용하여 이 파라미터 설정을 제어할 수 있습니다. Amazon EC2에서 실행 중인 PostgreSQL 인스턴스의 경우, 파라미터를 직접 설정할 수 있습니다. PostgreSQL 데이터베이스를 AWS DMS의 대상으로 사용하여 작업하는 방법에 대한 자세한 내용은 다음 단 원을 참조하십시오. 주제 AWS Database Migration Service에서 PostgreSQL를 대상으로 사용할 때 적용되는 제한 사항 (p. 154) AWS Database Migration Service에서 PostgreSQL 데이터베이스를 대상으로 사용할 때의 보안 요구 사 항 (p. 155) PostgreSQL을 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 155) PostgreSQL용 대상 데이터 형식 (p. 155) AWS Database Migration Service에서 PostgreSQL를 대상으로 사 용할 때 적용되는 제한 사항 다음 제한 사항은 AWS DMS에서 PostgreSQL 데이터베이스를 대상으로서 사용할 때 적용됩니다. JSON 데이터 형식이 Native CLOB 데이터 형식으로 변환됩니다. Oracle을 PostgreSQL로 마이그레이션 하는 경우, Oracle의 열에 NULL 문자(hex value U+0000)가 포함되 어 있다면 AWS DMS는 NULL 문자를 공백(hex value U+0020)으로 변환합니다. 이는 PostgreSQL 제한 사 항 때문입니다. 154
PostgreSQL를 대상으로 사용 AWS Database Migration Service에서 PostgreSQL 데이터베이스 를 대상으로 사용할 때의 보안 요구 사항 보안상의 목적으로 데이터 마이그레이션에 사용되는 사용자 계정은 대상으로 사용하는 모든 PostgreSQL 데 이터베이스에서 등록된 사용자여야 합니다. PostgreSQL을 AWS DMS의 대상으로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 PostgreSQL 대상을 구성할 수도 있습니다. 대상 엔드포인트 생성 시 이러한 설정 을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 PostgreSQL를 AWS DMS의 대상으로 구성할 때 사용할 수 있는 추가 연결 속성이 나와 있습니 다. 이름 설명 maxfilesize 데이터를 PostgreSQL로 전송할 때 사용되는.csv 파일의 최대 크기(KB 단위)를 지정합니다. 기본값: 32768KB(32MB) 유효한 값: 1 1048576 예: maxfilesize=512 PostgreSQL 인스턴스의 클라이언트 문 제한 시간을 초 단위로 설정합니다. 기본 값은 60초입니다. executetimeout 예: executetimeout=100 afterconnectscript=set AWS DMS가 모든 외래 키와 사용자 트리거를 무시하도록 이 session_replication_role='replica' 속성을 추가합니다. 이 작업은 전체 로드 모드를 사용할 때 대 량의 데이터를 로드하는 시간을 크게 줄여줍니다. Note Amazon Aurora PostgreSQL 대상의 경우, 이 afterconnectscript 설정은 변경 데이터 캡처 (CDC) 모드에서만 적용됩니다. 예: afterconnectscript=set session_replication_role='replica' PostgreSQL용 대상 데이터 형식 AWS DMS용 PostgreSQL 데이터베이스 엔드포인트는 대다수 PostgreSQL 데이터베이스 데이터 형식을 지 원합니다. 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에 매핑할 때 지원되 는 PostgreSQL 데이터베이스 대상 데이터 형식이 나와 있습니다. 지원되지 않는 데이터 형식은 다음 테이블 에 나와 있습니다. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. AWS DMS 데이터 형식 PostgreSQL 데이터 형식 BOOL BOOL 155
MySQL을 대상으로 사용 AWS DMS 데이터 형식 PostgreSQL 데이터 형식 BYTES BYTEA DATE DATE TIME TIME TIMESTAMP 크기 범위가 0~6인 경우, TIMESTAMP를 사용합니다. 크기 범위가 7~9인 경우, VARCHAR (37)을 사용합니다. INT1 SMALLINT INT2 SMALLINT INT4 INTEGER INT8 BIGINT NUMERIC DECIMAL (P,S) REAL4 FLOAT4 REAL8 FLOAT8 STRING 길이가 1~21,845인 경우, VARCHAR(바이트 단위의 길이)을 사용합니다. 길이가 21,846~2,147,483,647인 경우, VARCHAR (65535)을 사용합니다. UINT1 SMALLINT UINT2 INTEGER UINT4 BIGINT UINT8 BIGINT WSTRING 길이가 1~21,845인 경우, VARCHAR(바이트 단위의 길이)을 사용합니다. 길이가 21,846~2,147,483,647인 경우, VARCHAR (65535)을 사용합니다. BCLOB BYTEA NCLOB TEXT CLOB TEXT Note PostgreSQL 소스에서 복제할 때 AWS DMS는 모든 열에서 동일한 데이터 형식을 사용하여 대상 테 이블을 생성하고, 이때 사용자 정의 데이터 형식을 사용한 열은 제외됩니다. 그러한 경우에 데이터 형식은 대상에서 "character varying"으로 생성됩니다. AWS Database Migration Service에서 MySQL 호환 데 이터베이스를 대상으로 사용 AWS DMS를 사용하면 AWS DMS가 지원하는 소스 데이터 엔진 중 하나에서 MySQL 호환 데이터베이스로 데이터를 마이그레이션할 수 있습니다. 온프레미스 MySQL 호환 데이터베이스로 마이그레이션하는 경우, 156
MySQL을 대상으로 사용 AWS DMS는 소스 엔진이 AWS 에코시스템 내에 있도록 요구합니다. Amazon RDS, Amazon Aurora 또는 Amazon S3와 같은 Amazon 관리형 서비스에 엔진이 있을 수 있습니다. 또는 Amazon EC2의 자체 관리형 데 이터베이스에 있을 수도 있습니다. SSL을 사용하여 MySQL 호환 엔드포인트와 복제 인스턴스 간의 연결을 암호화할 수 있습니다. MySQL 호환 엔드포인트에서 SSL을 사용에 대한 자세한 내용은 AWS Database Migration Service에서 SSL 사용 (p. 47) 섹션을 참조하십시오. MySQL 버전 5.5, 5.6, 5.7뿐 아니라 MariaDB와 Aurora MySQL도 지원됩니다. AWS DMS의 대상으로는 다음 MySQL 호환 데이터베이스를 사용할 수 있습니다. MySQL Community Edition MySQL Standard Edition MySQL Enterprise Edition MySQL Cluster Carrier Grade Edition MariaDB Community Edition MariaDB Enterprise Edition MariaDB Column Store Amazon Aurora MySQL Note 원본 스토리지 엔진(MyISAM, MEMORY 등)에 상관 없이 AWS DMS는 기본적으로 MySQL 호환 대 상 테이블을 InnoDB 테이블로서 생성합니다. InnoDB 이외에 스토리지 엔진을 사용하는 테이블이 있어야 하는 경우, MySQL 호환 대상에서 테이블을 수동으로 생성하고 [do nothing] 모드를 사용하 여 테이블을 마이그레이션할 수 있습니다. "do nothing" 모드에 대한 자세한 내용은 전체 로드 작업 설정 (p. 241) 섹션을 참조하십시오. MySQL 호환 데이터베이스를 AWS DMS의 대상으로 사용하여 작업하는 방법에 대한 자세한 내용은 다음 단 원을 참조하십시오. 주제 AWS Database Migration Service에서 MySQL 호환 데이터베이스를 대상으로 사용 (p. 157) AWS Database Migration Service에서 MySQL 호환 데이터베이스를 대상으로 사용할 때 적용되는 제한 사항 (p. 158) MySQL 호환 데이터베이스를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 158) MySQL용 대상 데이터 형식 (p. 159) AWS Database Migration Service에서 MySQL 호환 데이터베이스 를 대상으로 사용 AWS DMS에서 MySQL 데이터베이스를 대상으로 사용하기 전에 먼저 다음 사전 조건에 부합하는지 확인해 야 합니다. MySQL 호환 데이터베이스에 대한 읽기/쓰기 권한이 있는 사용자 계정을 AWS DMS에 제공합니다. 필요 한 권한을 생성하려면 다음 명령을 실행합니다. CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON <schema>.* TO '<user acct>'@'%'; GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%'; 157
MySQL을 대상으로 사용 전체 로드 마이그레이션 단계 중에 대상 테이블에 대해 외래 키를 비활성화해야 합니다. 전체 로드 중에 MySQL 호환 데이터베이스에서 외래 키 점검을 비활성화하려면 대상 엔드포인트 연결 정보의 [Advanced] 섹션에서 [Extra Connection Attributes]에 다음 명령을 추가하면 됩니다. initstmt=set FOREIGN_KEY_CHECKS=0 AWS Database Migration Service에서 MySQL 호환 데이터베이스 를 대상으로 사용할 때 적용되는 제한 사항 MySQL 데이터베이스를 대상으로 사용 시 AWS DMS는 다음을 지원하지 않습니다. 데이터 정의 언어(DDL)는 TRUNCATE PARTITION, DROP TABLE 및 CREATE TABLE 명령을 수행합니 다. ALTER TABLE <table_name> ADD COLUMN <column_name> 문을 사용하여 테이블의 시작이나 중 간에 열 추가. 원본 테이블의 LOB 열만 업데이트하는 경우, AWS DMS에서 해당하는 대상 열은 업데이트하지 않습니다. 동일한 트랜잭션에서 최소 하나 이상의 다른 열이 업데이트되는 경우에만 대상 LOB가 업데이트됩니다. 전체 로드 작업으로 MySQL 호환 대상으로 데이터를 로드하는 경우, AWS DMS가 작업 로그의 이중 키 오 류를 보고하지 않습니다. 열의 값을 기존 값으로 업데이트하면 MySQL 호환 데이터베이스는 0 rows affected 경고를 반환합니 다. 이 동작은 사실 오류는 아니지만, 다른 데이터베이스 엔진이 이러한 상황을 처리하는 방식과는 다릅 니다. 예를 들어, Oracle은 행 하나를 업데이트합니다. MySQL 호환 데이터베이스의 경우, AWS DMS가 awsdms_apply_exceptions 제어 테이블에 항목을 생성하고 다음 경고를 로깅합니다. Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details. MySQL 호환 데이터베이스를 AWS DMS의 대상으로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 MySQL 호환 대상을 구성할 수 있습니다. 대상 엔드포인트 생성 시 이러한 설정 을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 AWS DMS의 MySQL 호환 대상 생성 시 사용할 수 있는 추가 구성 설정이 나와 있습니다. 이름 설명 targetdbtype 대상에 있는 원본 테이블을 단일 데이터베이스 또는 다중 데이 터베이스로 마이그레이션할 위치를 지정합니다. 기본값: MULTIPLE_DATABASES 유효한 값: SPECIFIC_DATABASE, MULTIPLE_DATABASES 예: targetdbtype=multiple_databases parallelloadthreads 데이터를 MySQL 호환 대상 데이터베이스로 로드할 때의 성능 을 개선합니다. 데이터를 MySQL 호환 대상 데이터베이스에 로 드할 때 사용할 스레드 개수를 지정합니다. 각 스레드마다 별도 158
MySQL을 대상으로 사용 이름 설명 의 연결이 필요하기 때문에 대량의 스레드를 설정하면 데이터 베이스 성능에 부정적인 영향을 줄 수 있습니다. 기본값: 1 유효한 값: 1 5 예: parallelloadthreads=1 initstmt=set FOREIGN_KEY_CHECKS=0 외래 키 점검을 비활성화합니다. initstmt=set time-zone 대상 MySQL 호환 데이터베이스의 시간대를 지정합니다. 기본값: UTC 유효한 값: 사용할 시간대에 해당하는 3자 또는 4자 약어. 유효 한 값은 대상 MySQL 호환 데이터베이스를 호스팅하는 운영 체 제의 표준 시간대 약어입니다. 예: initstmt=set time_zone=utc afterconnectscript=set MySQL 호환 대상이 받은 명령문을 latin1 문자 세트로 변환해 character_set_connection='latin1' 야 함을 지정합니다. 이 문자 세트는 데이터베이스의 기본 컴파 일 입력 문자 세트입니다. 이 파라미터는 UTF8 클라이언트로 부터 변환될 때 일반적으로 성능을 개선합니다. 데이터를 MySQL 호환 데이터베이스로 전송할 때 사용되 는.csv 파일의 최대 크기(KB 단위)를 지정합니다. maxfilesize 기본값: 32768KB(32MB) 유효한 값은 1~1048576입니다 예: maxfilesize=512 CleanSrcMetadataOnMismatch 불일치 발생 시 복제 인스턴스에서 테이블 메타데이터 정보를 지운 후 다시 생성합니다. 예컨대 테이블에서 alter DDL을 실행 하면 복제 인스턴스에 캐시된 테이블에 관해 다른 정보가 생길 수 있는 경우를 들 수 있습니다. 부울. 기본값: false 예: CleanSrcMetadataOnMismatch=false MySQL용 대상 데이터 형식 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에 매핑할 때 지원되는 MySQL 데이터베이스 대상 데이터 형식이 나와 있습니다. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. AWS DMS 데이터 형식 MySQL 데이터 형식 BOOLEAN BOOLEAN 159
MySQL을 대상으로 사용 AWS DMS 데이터 형식 MySQL 데이터 형식 BYTES 길이가 1~65,535인 경우, VARBINARY(길이)를 사 용합니다. 길이가 65,536~2,147,483,647인 경우, LONGLOB 를 사용합니다. DATE DATE TIME TIME TIMESTAMP "크기가 0 이상이고 6 이하인 경우: DATETIME(크 기) 크기가 7 이상이고 9 이하인 경우: VARCHAR (37)" INT1 TINYINT INT2 SMALLINT INT4 INTEGER INT8 BIGINT NUMERIC DECIMAL (p,s) REAL4 FLOAT REAL8 DOUBLE PRECISION STRING 길이가 1~21,845인 경우, VARCHAR(길이)를 사용 합니다. 길이가 21,846~2,147,483,647인 경우, LONGTEXT 를 사용합니다. UINT1 UNSIGNED TINYINT UINT2 UNSIGNED SMALLINT UINT4 UNSIGNED INTEGER UINT8 UNSIGNED BIGINT WSTRING 길이가 1~32,767인 경우, VARCHAR(길이)를 사용 합니다. 길이가 32,768~2,147,483,647인 경우, LONGTEXT 를 사용합니다. BLOB 길이가 1~65,535인 경우, BLOB를 사용합니다. 길이가 65,536~2,147,483,647인 경우, LONGBLOB 를 사용합니다. 길이가 0인 경우, LONGBLOB(전체 LOB 지원)를 사 용합니다. 160
대상으로 Amazon Redshift 사용 AWS DMS 데이터 형식 MySQL 데이터 형식 NCLOB 길이가 1~65,535인 경우, TEXT를 사용합니다. 길이가 65,536~2,147,483,647인 경우, CHARACTER SET용 ucs2와 함께 LONGTEXT를 사용합니다. 길이가 0인 경우, CHARACTER SET용 ucs2와 함께 LONGTEXT(전체 LOB 지원)를 사용합니다. CLOB 길이가 1~65,535인 경우, TEXT를 사용합니다. 길이가 65536~2147483647인 경우, LONGTEXT를 사용합니다. 길이가 0인 경우, LONGTEXT(전체 LOB 지원)를 사 용합니다. AWS Database Migration Service에서 Amazon Redshift 데이터베이스를 대상으로 사용 AWS Database Migration Service를 사용하여 Amazon Redshift 데이터베이스로 데이터를 마이그레이션할 수 있습니다. Amazon Redshift는 빠르고 강력한 클라우드에서 빠르고 강력하고 완벽하게 관리되는 페타바 이트 규모의 데이터 웨어하우스 서비스입니다. Amazon Redshift 데이터베이스를 대상으로 사용할 때에는 지원되는 다른 원본 데이터베이스에서 가져온 데이터베이스를 마이그레이션할 수 있습니다. Amazon Redshift 클러스터는 복제 인스턴스와 동일한 AWS 계정 및 AWS 리전에 있어야 합니다. Amazon Redshift로 데이터베이스를 마이그레이션하는 동안 AWS DMS는 먼저 데이터를 Amazon S3 버킷 으로 이동합니다. 파일이 Amazon S3 버킷에 있으면, AWS DMS는 Amazon Redshift 데이터 웨어하우스에 있는 적절한 테이블에 이 파일을 전송합니다. AWS DMS는 Amazon Redshift 데이터베이스와 동일한 AWS 리전에 S3 버킷을 생성합니다. AWS DMS 복제 인스턴스는 이 동일한 리전에 있어야 합니다. AWS Command Line Interface(AWS CLI) 또는 DMS API를 사용하여 데이터를 Amazon Redshift로 마이 그레이션하는 경우, S3 액세스를 허용하도록 AWS Identity and Access Management(IAM) 역할을 설정해 야 합니다. 이 IAM 역할 생성에 대한 자세한 내용은 AWS CLI 및 AWS DMS API에서 사용하는 IAM 역할 생 성 (p. 35) 섹션을 참조하십시오. Amazon Redshift 엔드포인트는 다음에서 전체 자동화를 지원합니다. 스키마 생성 및 데이터 형식 매핑 원본 데이터베이스 테이블 전체 로드 원본 테이블에 적용된 변경 사항을 증분식으로 로드 원본 테이블에 적용된 데이터 정의 언어(DDL)에서 스키마 변경 사항 적용 전체 로드와 변경 데이터 캡처(CDC) 프로세스 동기화. AWS Database Migration Service는 전체 로드와 변경 처리 작업을 모두 지원합니다. AWS DMS는 소스 데 이터베이스에서 데이터를 읽고 일련의 쉼표로 구분된 값(.csv) 파일을 생성합니다. 전체 로드 작업에서 AWS DMS는 테이블별로 파일을 생성합니다. 그런 다음 AWS DMS는 각 테이블의 테이블 파일을 Amazon S3 에 있는 별도의 폴더에 복사합니다. 파일이 Amazon S3에 업로드되면, AWS DMS에서 복사 명령을 전송하 고 이 파일의 데이터가 Amazon Redshift에 복사됩니다. 변경 처리 작업에서 AWS DMS는 최종 변경 사항 을.csv 파일에 복사합니다. 그런 다음 AWS DMS는 최종 변경 파일을 Amazon S3에 업로드하고 이 데이터를 Amazon Redshift에 복사합니다. 161
대상으로 Amazon Redshift 사용 Amazon Redshift를 AWS DMS의 대상으로 사용하여 작업하는 방법에 대한 자세한 내용은 다음 단원을 참조 하십시오. 주제 AWS Database Migration Service에서 Amazon Redshift 데이터베이스를 대상으로 사용할 때의 사전 조 건 (p. 162) AWS Database Migration Service 대상으로서 Amazon Redshift 사용 제한 사항 (p. 162) AWS Database Migration Service에서 Amazon Redshift 데이터베이스를 대상으로 구성 (p. 163) AWS Database Migration Service에서 대상으로서 Amazon Redshift와 함께 Enhanced VPC Routing 사 용 (p. 163) Amazon Redshift 대상 데이터 암호화를 위한 AWS KMS 키 생성 및 사용 (p. 163) Amazon Redshift를 AWS DMS 대상으로 사용할 경우 엔드포인트 설정 (p. 166) Amazon Redshift를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 168) Amazon Redshift용 대상 데이터 형식 (p. 170) AWS Database Migration Service에서 Amazon Redshift 데이터베 이스를 대상으로 사용할 때의 사전 조건 다음 목록에는 데이터 마이그레이션에서 Amazon Redshift를 대상으로 사용할 때 필요한 사전 조건에 대한 설명이 나와 있습니다. AWS Management Console을 사용하여 Amazon Redshift 클러스터를 시작합니다. 암호, 사용자 이름, 데 이터베이스 이름과 같은 AWS 계정과 사용자의 Amazon Redshift 클러스터에 대한 기본 정보를 적어야 합 니다. Amazon Redshift 대상 엔드포인트를 생성할 때 이 값이 필요합니다. Amazon Redshift 클러스터는 복제 인스턴스와 동일한 AWS 계정과 동일한 AWS 리전에 있어야 합니다. AWS DMS 복제 인스턴스는 클러스터가 사용하는 Amazon Redshift 엔드포인트와의 네트워크 연결(호스 트 이름과 포트)이 필요합니다. AWS DMS는 Amazon S3 버킷을 사용하여 데이터를 Amazon Redshift 데이터베이스로 전송합니다. 버킷 을 생성하는 AWS DMS의 경우, DMS 콘솔은 Amazon IAM 역할 dms-access-for-endpoint를 사용합 니다. AWS CLI 또는 DMS API를 사용하여 Amazon Redshift에서 데이터베이스를 마이그레이션하려면, 이 IAM 역할을 생성해야 합니다. 이 역할 생성에 대한 자세한 내용은 AWS CLI 및 AWS DMS API에서 사용하 는 IAM 역할 생성 (p. 35) 섹션을 참조하십시오. AWS DMS는 BLOB, CLOB, NCLOB를 대상 Amazon Redshift 인스턴스에서 VARCHAR로 변환합니다. Amazon Redshift는 64KB를 초과하는 VARCHAR 데이터 형식을 지원하지 않으므로 기존 LOB는 Amazon Redshift에 저장할 수 없습니다. AWS Database Migration Service 대상으로서 Amazon Redshift 사용 제한 사항 Amazon Redshift데이터베이스를 대상으로 사용 시 AWS DMS는 다음을 지원하지 않습니다. 다음이 DDL이 지원되지 않습니다. ALTER TABLE <table name> MODIFY COLUMN <column name> <data type>; AWS DMS는 이름이 밑줄(_)로 시작하는 스키마로 변경 사항을 마이그레이션하거나 복제할 수 없습니다. 밑줄로 시작하는 이름의 스키마가 있다면 매핑 변환을 사용하여 대상에 있는 스키마의 이름을 바꿉니다. Amazon Redshift는 64KB를 초과하는 VARCHAR를 지원하지 않습니다. 기존 데이터베이스의 LOB는 Amazon Redshift에 저장할 수 없습니다. 162
대상으로 Amazon Redshift 사용 AWS Database Migration Service에서 Amazon Redshift 데이터베 이스를 대상으로 구성 AWS Database Migration Service는 Amazon Redshift 인스턴스를 사용할 수 있도록 구성해야 합니다. 다음 표에는 Amazon Redshift 엔드포인트에서 사용할 수 있는 구성 속성에 대한 설명이 나와 있습니다. 속성 설명 서버 사용 중인 Amazon Redshift 클러스터의 이름입니다. port Amazon Redshift의 포트 번호입니다. 기본값은 5439입니다. 사용자 이름 등록된 사용자의 Amazon Redshift 사용자 이름입니다. 암호 사용자 이름 속성에 명명된 사용자의 암호입니다. 데이터베이스 사용 중인 Amazon Redshift 데이터 웨어하우스(서비스)의 이름입니다. Amazon Redshift 엔드포인트에 추가 연결 문자열 속성을 추가하려면, maxfilesize 및 filetransferuploadstreams 속성을 지정합니다. 이 속성에 대한 자세한 내용은 Amazon Redshift를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 168) 섹션을 참조하십시오. AWS Database Migration Service에서 대상으로서 Amazon Redshift와 함께 Enhanced VPC Routing 사용 Amazon Redshift 대상에 향상된 VPC 라우팅 기능을 사용하는 경우, Amazon Redshift 클러스터와 데이터 리 포지토리 사이의 모든 COPY 트래픽은 VPC를 통과합니다. 향상된 VPC 라우팅은 Amazon Redshift가 다른 리소스에 액세스하는 방식에 영향을 주기 때문에 VPC를 올바르게 구성하지 않았다면 COPY 명령이 실패할 수 있습니다. AWS DMS는 COPY 명령을 사용하여 S3의 데이터를 Amazon Redshift 클러스터로 이동하기 때문에 이 동작 의 영향을 받을 수 있습니다. 다음은 AWS DMS에서 Amazon Redshift 대상으로 데이터를 로드하는 데 필요한 단계입니다. 1. AWS DMS는 소스에서 복제 서버에 있는.csv 파일로 데이터를 복사합니다. 2. AWS DMS는 AWS SDK를 사용하여.csv 파일을 계정에 있는 S3 버킷으로 복사합니다. 3. 그런 다음 AWS DMS는 Amazon Redshift에서 COPY 명령을 사용하여 S3의.csv 파일에서 Amazon Redshift의 적절한 테이블로 데이터를 복사합니다. Enhanced VPC Routing을 사용하지 않을 경우, Amazon Redshift는 AWS 네트워크 내의 다른 서비스로 전송 되는 트래픽을 포함하여 인터넷을 통해 트래픽을 라우팅합니다. 이 기능이 활성화되지 않으면, 네트워크 경 로를 구성하지 않아도 됩니다. 이 기능이 활성화되면, 특히 클러스터의 VPC와 사용자의 데이터 리소스 사이 의 네트워크 경로를 생성해야 합니다. 필요한 구성에 대한 자세한 내용은 Amazon Redshift 설명서의 향상된 VPC 라우팅 단원을 참조하십시오. Amazon Redshift 대상 데이터 암호화를 위한 AWS KMS 키 생성 및 사용 Amazon Redshift에 복사되기 전에 Amazon S3로 푸시되는 대상 데이터를 암호화할 수 있습니다. 이를 위해 사용자 지정 AWS Key Management Service(AWS KMS) 키를 생성하고 사용할 수 있습니다. 생성한 키를 사 용하여 Amazon Redshift 대상 엔드포인트를 생성할 때 다음 메커니즘 중 하나를 사용하여 대상 데이터를 암 호화할 수 있습니다.. 163
대상으로 Amazon Redshift 사용 AWS CLI를 사용하여 create-endpoint 명령을 실행할 때 다음 옵션 중 하나를 사용합니다. --redshift-settings '"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "yourkms-key-arn"' 여기서 your-kms-key-arn은 KMS 키의 Amazon 리소스 이름(ARN)입니다. 자세한 내용은 Amazon Redshift를 AWS DMS 대상으로 사용할 경우 엔드포인트 설정 (p. 166) 단원을 참조하십시오. 추가 연결 속성 encryptionmode를 값 SSE_KMS로 설정하고, 추가 연결 속성 serversideencryptionkmskeyid는 KMS 키의 ARN으로 설정합니다. 자세한 내용은 Amazon Redshift를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 168) 단원을 참조하십시오. KMS 키를 사용하여 Amazon Redshift 대상 데이터를 암호화하려면 Amazon Redshift 데이터에 액세스할 권 한이 있는 AWS Identity and Access Management(IAM) 역할이 필요합니다. 그러면 생성한 암호화 키에 연결 된 정책(키 정책)에서 이 IAM 역할에 액세스합니다. 이 작업은 IAM 콘솔에서 다음을 생성하여 수행할 수 있 습니다. Amazon 관리형 정책이 있는 IAM 역할. 이 역할을 참조하는 키 정책이 있는 KMS 암호화 키. 다음 절차에서 그 방법을 설명합니다. 필요한 Amazon 관리형 정책이 있는 IAM역할을 생성하려면 1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다. 2. 탐색 창에서 역할을 선택합니다. 역할 페이지가 열립니다. 3. 역할 생성을 선택합니다. 역할 생성 페이지가 열립니다. 4. AWS 서비스를 신뢰할 수 있는 엔터티 유형으로 선택한 상태에서 해당 역할을 사용할 서비스로 DMS를 선택합니다. 5. 다음: 권한(Next: Permissions)을 선택합니다. Attach permissions policies(권한 정책 연결) 페이지가 나 타납니다. 6. AmazonDMSRedshiftS3Role 정책을 찾아 선택합니다. 7. 다음: 태그를 선택합니다. 태그 추가 페이지가 나타납니다. 여기서 원하는 태그를 추가할 수 있습니다. 8. Next: Review(다음: 검토)를 선택하고 결과를 검토합니다. 9. 필요한 설정이 되었다면 역할의 이름(예: DMS-Redshift-endpoint-access-role)과 추가 설명을 입력한 다음 역할 생성을 선택합니다. 역할이 생성되었다는 메시지와 함께 역할 페이지가 열립니다. 이제 암호화를 위해 Amazon Redshift 리소스에 액세스할 수 있는 지정된 이름의 새 역할이 생성되었습니다 (예: DMS-Redshift-endpoint-access-role). IAM 역할을 참조하는 키 정책이 있는 KMS 암호화 키를 생성하려면 1. IAM 콘솔의 탐색 창에서 암호화 키를 선택합니다. 이 옵션에 처음 액세스하는 경우, AWS Key Management Service 소개가 표시되며 지금 시작을 선택하 여 시작할 수 있습니다. 그렇지 않다면 암호화 키 페이지가 열립니다. 2. [Create key]를 선택합니다. Create Alias and Description(별칭 생성 및 설명) 페이지가 열립니다. 3. 키의 별칭(예: DMS-Redshift-endpoint-encryption-key)과 추가 설명을 입력합니다. 4. [Advanced Options]를 선택합니다. 고급 옵션 섹션에서 Key Material Origin(키 구성 요소 오리진)으로 KMS가 선택되어 있는지 확인한 후 다음 단계를 선택합니다. 태그 추가 페이지가 열립니다. 5. 키 식별과 키 사용 추적에 도움이 되는 태그를 추가한 후 다음 단계를 선택합니다. Define Key Administrative Permissions(키 관리 권한 정의) 페이지가 열리고 선택할 수 있는 사용자 및 역할 목록이 표시됩니다. 164
대상으로 Amazon Redshift 사용 6. 키를 관리할 사용자와 역할을 추가합니다. 키를 관리하는 데 필요한 권한이 이러한 사용자와 역할에 있 는지 확인합니다. 7. 키 관리자가 키를 삭제할 수 있는지 여부를 선택한 후 다음 단계를 선택합니다. Define Key Usage Permissions(키 사용 권한 정의) 페이지가 열리고 선택할 수 있는 추가 사용자 및 역할 목록이 표시됩니 다. 8. 이전에 역할에서 생성한 역할을 선택하여 Amazon Redshift 대상 데이터 암호화를 위한 액세스를 활성 화합니다(예: DMS-Redshift-endpoint-access-role). 그런 다음 [Next Step]을 선택합니다. Preview Key Policy(키 정책 미리 보기) 페이지가 열리고 검토할 수 있는 키 정책의 JSON이 표시됩니다. 여기서 이전 단계에서 선택한 역할을 키 정책이 어디에서 참조하는지 볼 수 있습니다. 다음 예에 나온 것 처럼 다양한 보안 주체(사용자 및 역할)에 허용되는 다양한 키 작업도 볼 수 있습니다. "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": "AWS": [ "arn:aws:iam::944454115380:root" ] "Action": "kms:*", "Resource": "*" "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": "AWS": [ "arn:aws:iam::944454115380:role/admin" ] "Action": [ "kms:create*", "kms:describe*", "kms:enable*", "kms:list*", "kms:put*", "kms:update*", "kms:revoke*", "kms:disable*", "kms:get*", "kms:delete*", "kms:tagresource", "kms:untagresource", "kms:schedulekeydeletion", "kms:cancelkeydeletion" ], "Resource": "*" "Sid": "Allow use of the key", "Effect": "Allow", "Principal": "AWS": [ "arn:aws:iam::944454115380:role/dms-redshift-endpoint-access-role" ] "Action": [ "kms:encrypt", 165
대상으로 Amazon Redshift 사용 "kms:decrypt", "kms:reencrypt*", "kms:generatedatakey*", "kms:describekey" ], "Resource": "*" 9. ] "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": "AWS": [ "arn:aws:iam::944454115380:role/dms-redshift-endpoint-access-role" ] "Action": [ "kms:creategrant", "kms:listgrants", "kms:revokegrant" ], "Resource": "*", "Condition": "Bool": "kms:grantisforawsresource": true [마침]을 클릭합니다. 마스터 암호화 키가 생성되었다는 메시지와 함께 암호화 키 페이지가 열립니다. 이제 지정된 별칭의 새 KMS 키가 생성되었습니다(예: DMS-Redshift-endpoint-encryption-key). 이 키를 통해 AWS DMS가 Amazon Redshift 대상 데이터를 암호화할 수 있습니다. Note AWS Key Management Service와 IAM 역할 및 정책을 사용하여 KMS 키를 생성하고 관리할 수도 있습니다. 자세한 내용은 키 관리 서비스(KMS): 개발자 안내서를 참조하십시오. Amazon Redshift를 AWS DMS 대상으로 사용할 경우 엔드포인트 설정 추가 연결 속성을 사용하는 것과 비슷하게 엔드포인트 설정을 사용하여 Amazon Redshift 대상을 구성 할 수 있습니다. AWS CLI에서 --redshift-settings "json-settings" 옵션과 함께 createendpoint 명령을 사용하여 대상 엔드포인트를 생성할 때 이러한 설정을 지정할 수 있습니다. 여기서 json-settings는 설정을 지정하는 파라미터가 포함된 JSON 객체입니다. 예를 들어 --redshiftsettings file:///your-file-path/my_redshift_settings.json에서처럼 동일한 jsonsettings 객체가 포함된.json 파일을 지정할 수도 있습니다. 여기서 my_redshift_settings.json은 동일한 json-settings object를 포함한.json 파일의 이름입니다. 엔드포인트 설정의 파라미터 이름은 대문자인 첫 글자를 제외하면 해당 추가 연결 속성의 이름과 동일합니 다. 또한 create-endpoint 명령의 --redshift-settings 옵션을 사용하여 추가 연결 속성을 사용하 는 모든 Amazon Redshift 대상 엔드포인트 설정을 사용할 수 있는 것은 아닙니다. create-endpoint에 대한 AWS CLI 호출에서 사용할 수 있는 설정에 대한 자세한 내용은 AWS DMS의 AWS CLI Command Reference에서 create-endpoint를 참조하십시오. 이러한 설정에 대한 자세한 내용은 Amazon Redshift를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 168)의 해당 추가 연결 속성을 참조하십시오. Amazon Redshift 대상 엔드포인트 설정을 사용하여 다음을 구성할 수 있습니다. 166
대상으로 Amazon Redshift 사용 사용자 지정 AWS KMS 데이터 암호화 키. 그런 다음 이 키를 사용하여 Amazon Redshift에 복사되기 전에 Amazon S3로 푸시되는 데이터를 암호화할 수 있습니다. Amazon Redshift로 마이그레이션한 데이터의 중간 스토리지인 사용자 지정 S3 버킷. 데이터 암호화를 위한 KMS 키 설정 다음 예는 S3로 푸시되는 데이터를 암호화하도록 사용자 지정 KMS 키를 구성하는 방법을 보여 줍니다. 먼저 AWS CLI에서 다음 create-endpoint 호출을 할 수 있습니다. aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:944454115380:key/24c3c5a1-f34a-4519a85b-2debbef226d1"' 여기서 --redshift-settings 옵션에 의해 지정된 JSON 객체는 다음 두 가지 파라미터를 정의합니다. 하나는 값이 SSE_KMS인 EncryptionMode 파라미터입니다. 다른 하나는 값이 arn:aws:kms:us-east-1:944454115380:key/24c3c5a1-f34a-4519-a85b-2debbef226d1인 ServerSideEncryptionKmsKeyId 파라미터입니다. 이 값은 사용자 지정 KMS 키의 Amazon 리소스 이 름(ARN)입니다. 기본적으로 S3 데이터 암호화는 S3 서버 측 암호화를 사용하여 수행됩니다. 이전 예의 Amazon Redshift 대 상의 경우, 다음 예에서처럼 이것은 엔드포인트 설정을 지정하는 것에 해당합니다. aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '"EncryptionMode": "SSE_S3"' S3 서버 측 암호화 작업에 대한 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시 오. Amazon S3 버킷 설정 데이터를 Amazon Redshift 대상 엔드포인트로 마이그레이션할 때, AWS DMS는 마이그레이션된 데이터를 Amazon Redshift로 복사하기 전에 중간 작업 저장 영역으로 기본 Amazon S3 버킷을 사용합니다. 예를 들어 KMS 데이터 암호화 키가 있는 Amazon Redshift 대상 엔드포인트를 생성과 관련해 표시된 예는 이 기본 S3 버킷을 사용합니다(데이터 암호화를 위한 KMS 키 설정 (p. 167) 참조). 대신 AWS CLI create-endpoint 명령의 --redshift-settings 옵션 값에 다음 파라미터를 포함하여 이 중간 스토리지에 대한 사용자 지정 S3 버킷을 지정할 수 있습니다. BucketName S3 버킷 스토리지의 이름으로 지정하는 문자열. BucketFolder (선택 사항) 지정된 S3 버킷의 스토리지 폴더 이름으로 지정할 수 있는 문자열. ServiceAccessRoleArn S3 버킷에 대한 관리 액세스를 허용하는 IAM 역할의 ARN. 일반적으로 AmazonDMSRedshiftS3Role 정책에 따라 이 역할을 만듭니다. 예를 들어 Amazon Redshift 대상 데이터 암호화를 위한 AWS KMS 키 생성 및 사용 (p. )에서 필수 Amazon 관리형 정책을 사용하여 IAM 역할 을 생성하는 절차를 참조하십시오. Note create-endpoint 명령의 --service-access-role-arn 옵션을 사용하여 다른 IAM 역할의 ARN을 지정하면이 IAM 역할 옵션이 우선 적용됩니다. 167
대상으로 Amazon Redshift 사용 다음 예에서는 어떻게 이러한 파라미터를 사용하여 AWS CLI을 사용하는 다음 create-endpoint 호출에 서 사용자 지정 Amazon S3 버킷을 지정하는지 보여줍니다. aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '"ServiceAccessRoleArn": "your-service-access-arn", "BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"' Amazon Redshift를 AWS DMS의 대상으로 사용 시 추가 연결 속 성 추가 연결 속성을 사용하여 Amazon Redshift 대상을 구성할 수도 있습니다. 대상 엔드포인트 생성 시 이러한 설정을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 Amazon Redshift를 대상으로 사용 시 사용 가능한 추가 연결 속성이 나와 있습니다. 이름 설명 maxfilesize 데이터를 Amazon Redshift로 전송할 때 사용되는.csv 파일의 최대 크기(KB 단위)를 지정합니다. 기본값: 32768KB(32MB) 유효한 값은 1~1048576입니다 예: maxfilesize=512 filetransferuploadstreams 단일 파일을 업로드할 때 사용되는 스레드 수를 지정합니다. 기본값: 10 유효한 값은 1~64입니다 예: filetransferuploadstreams=20 acceptanydate 0000-00-00과 같이 잘못된 날짜 형식을 포함하여 모든 날짜 형 식을 수락할지 여부를 지정합니다. 부울 값입니다. 기본값: false 유효한 값: true false 예:acceptanydate=true dateformat 날짜 형식을 지정합니다. 문자열 입력이며 기본적으로 비어 있 습니다. 기본 형식은 YYYY-MM-DD이지만 DD-MM-YYYY 등으 로 변경할 수 있습니다. 날짜 또는 시간 값에 다른 형식을 사용 할 경우 auto 인수와 함께 dateformat 파라미터를 사용하십 시오. auto 인수는 dateformat 문자열을 사용할 때 지원되지 않는 몇 가지 형식을 인식합니다. auto' 키워드는 대/소문자를 구별합니다. 기본값: 비어 있음 유효한 값: 'dateformat_string' 또는 auto 예: dateformat=auto 168
대상으로 Amazon Redshift 사용 이름 설명 timeformat 시간 형식을 지정합니다. 문자열 입력이며 기본적으로 비어 있 습니다. auto 인수는 timeformat 문자열을 사용할 때 지원되 지 않는 몇 가지 형식을 인식합니다. 날짜 및 시간 값에 사용되 는 형식이 서로 다를 경우 auto 인수와 함께 timeformat 파 라미터를 사용하십시오. 기본값: 10 유효한 값: 'timeformat_string' 'auto' 'epochsecs' 'epochmillisecs' 예: timeformat=auto emptyasnull AWS DMS가 비어 있는 CHAR 및 VARCHAR 필드를 null 로 마이그레이션할지 지정합니다. true 값은 빈 CHAR 및 VARCHAR 필드를 null로 설정합니다. 기본값: false 유효한 값: true false 예: emptyasnull=true truncatecolumns 열의 데이터를 열 명세에 따라 적합한 수의 문자로 자릅니다. VARCHAR 또는 CHAR 데이터 형식의 열에만 적용되며, 행의 크기는 4MB 이하입니다. 기본값: false 유효한 값: true false 예: truncatecolumns=true; removequotes 입력 데이터의 문자열에서 묶고 있는 인용 부호를 제거합니다. 인용 부호 안의 문자는 구분자를 포함하여 모두 유지됩니다. Amazon Redshift 대상의 따옴표를 제거하는 방법은 Amazon Redshift Database Developer Guide를 참조하십시오. 기본값: false 유효한 값: true false 예: removequotes=true; trimblanks VARCHAR 문자열에서 후행 공백 문자를 제거합니다. 이 파라 미터는 VARCHAR 데이터 형식의 열에만 적용됩니다. 기본값: false 유효한 값: true false 예: trimblanks=false; 169
대상으로 Amazon Redshift 사용 이름 설명 encryptionmode Amazon Redshift로 복사되기 전에 데이터를 S3로 푸시하는 데 사용할 서버 측 암호화 모드입니다. 유효한 값은 암호화에 기 본 KMS 키를 사용하려는 경우 SSE_S3, 또는 암호화에 사용자 지정 KMS 키를 설정하려는 경우 SSE_KMS입니다. SSE_KMS를 선택하는 경우, 암호화에 사용할 KMS 키의 Amazon 리소스 이 름(ARN)으로 serversideencryptionkmskeyid 파라미터 를 설정합니다. 기본값: SSE_S3 유효한 값: SSE_S3 또는 SSE_KMS 예: encryptionmode=sse_s3; Amazon Redshift로 복사되기 전에 데이터를 S3로 푸시 하는 데 사용할 서버 측 암호화 모드입니다. 유효한 값 은 SSE_S3(S3 서버 측 암호화) 또는 SSE_KMS(KMS 키 암호화)입니다. SSE_KMS를 선택하는 경우, 암호화 에 사용할 KMS 키의 Amazon 리소스 이름(ARN)으로 serversideencryptionkmskeyid 파라미터를 설정합니다. encryptionmode 기본값: SSE_S3 유효한 값: SSE_S3 또는 SSE_KMS 예: encryptionmode=sse_s3; serversideencryptionkmskeyid encryptionmode를 SSE_KMS로 설정하는 경우, 이 파라미 터를 KMS 키의 ARN으로 설정합니다. 이 ARN은 계정을 위해 생성한 KMS 키 목록에서 키 별칭을 선택하면 찾을 수 있습니 다. 키를 생성할 때 특정 정책과 역할을 키에 연결해야 합니다. 자세한 내용은 Amazon Redshift 대상 데이터 암호화를 위한 AWS KMS 키 생성 및 사용 (p. 163) 단원을 참조하십시오. 예: serversideencryptionkmskeyid=arn:aws:kms:useast-1:944454115380:key/24c3c5a1-f34a-4519a85b-2debbef226d1; Amazon Redshift용 대상 데이터 형식 AWS DMS용 Amazon Redshift 엔드포인트는 대다수 Amazon Redshift 데이터 형식을 지원합니다. 다음 테 이블에는 AWS DMS 사용 및 기본적으로 AWS DMS 데이터 형식에서 매핑할 때 지원되는 Amazon Redshift 대상 데이터 형식이 나와 있습니다. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. 170
대상으로 Amazon Redshift 사용 AWS DMS 데이터 형식 Amazon Redshift 데이터 형식 BOOLEAN BOOL BYTES VARCHAR(길이) DATE DATE TIME VARCHAR(20) DATETIME 크기가 0 이상이고 6 이하인 경우: TIMESTAMP (s) 크기가 7 이상이고 9 이하인 경우: VARCHAR (37) INT1 INT2 INT2 INT2 INT4 INT4 INT8 INT8 NUMERIC 크기가 0 이상이고 37 이하인 경우: NUMERIC (p,s) 크기가 38 이상이고 127 이하인 경우: VARCHAR(길이) REAL4 FLOAT4 REAL8 FLOAT8 STRING 길이가 1 65,535인 경우, VARCHAR(바이트 단위의 길이)을 사용합니다. 길이가 65,536 2,147,483,647인 경우, VARCHAR (65535)을 사용합니다. UINT1 INT2 UINT2 INT2 UINT4 INT4 UINT8 NUMERIC (20,0) WSTRING 길이가 1 65,535인 경우, NVARCHAR(바이트 단위 의 길이)을 사용합니다. 길이가 65,536 2,147,483,647인 경우, NVARCHAR (65535)을 사용합니다. BLOB VARCHAR(최대 LOB 크기 *2) 171
SAP ASE를 대상으로 사용 AWS DMS 데이터 형식 Amazon Redshift 데이터 형식 LOB 최대 크기는 31KB를 초과할 수 없습니다. Amazon Redshift는 64KB를 초과하는 VARCHAR를 지원하지 않습니다. NCLOB NVARCHAR(최대 LOB 크기) LOB 최대 크기는 63KB를 초과할 수 없습니다. Amazon Redshift는 64KB를 초과하는 VARCHAR를 지원하지 않습니다. CLOB VARCHAR(최대 LOB 크기) LOB 최대 크기는 63KB를 초과할 수 없습니다. Amazon Redshift는 64KB를 초과하는 VARCHAR를 지원하지 않습니다. AWS Database Migration Service에서 SAP ASE 데이 터베이스를 대상으로 사용 AWS DMS를 사용하여 지원되는 모든 데이터베이스 소스에서 SAP Adaptive Server Enterprise(ASE) 구 Sybase 데이터베이스로 데이터를 마이그레이션할 수 있습니다. SAP ASE 버전 15, 15.5, 15.7, 16 이상이 지원됩니다. AWS Database Migration Service에서 SAP ASE 데이터베이스를 대상으로 사용할 때의 사전 조건 AWS DMS에서 SAP ASE 데이터베이스를 대상으로 사용하려면, 먼저 다음 사전 조건에 부합하는지 확인해 야 합니다. AWS DMS 사용자에게 SAP ASE 계정 액세스 권한을 부여해야 합니다. 이 사용자는 SAP ASE 데이터베 이스에서 읽기/쓰기 권한이 있어야 합니다. 비라틴 문자(예: 중국어)로 구성된 Windows EC2 인스턴스에 SAP ASE 버전 15.7이 설치된 경우, AWS DMS에서 SAP ASE 버전 15.7에 복제하려면 대상 SAP ASE 시스템에 SAP ASE 15.7 SP121이 설치되어 있어야 합니다. SAP ASE를 AWS DMS의 대상으로 사용 시 추가 연결 속성 추가 연결 속성을 사용하여 SAP ASE 대상을 구성할 수도 있습니다. 대상 엔드포인트 생성 시 이러한 설정을 지정합니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세미콜론으로 구분하십시오. 다음 표에는 SAP ASE를 대상으로 사용 시 사용 가능한 추가 연결 속성이 나와 있습니다. 이름 설명 enablereplication Y로 설정하면 SAP ASE 복제를 자동으로 활성화합니다. 이것 은 SAP ASE 복제가 아직 활성화되지 않은 경우에만 필요합니 다. additionalconnectionproperties 지정할 추가 ODBC 연결 파라미터입니다. 172
SAP ASE를 대상으로 사용 Note 연결 문자열에서 지정된 사용자 이름이나 암호에 비라틴 문자(예: 중국어)가 포함된 경우에 다음 속 성이 필요합니다. charset=gb18030 SAP ASE용 대상 데이터 형식 다음 테이블에는 AWS DMS를 사용하고 기본적으로 AWS DMS 데이터 형식에 매핑할 때 지원되는 SAP ASE 데이터베이스 대상 데이터 형식이 나와 있습니다. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. AWS DMS 데이터 형식 SAP ASE 데이터 형식 BOOLEAN BIT BYTES VARBINARY(길이) DATE DATE TIME TIME TIMESTAMP 크기가 0 이상이고 6 이하인 경우: BIGDATETIME 크기가 7 이상이고 9 이하인 경우: VARCHAR (37) INT1 TINYINT INT2 SMALLINT INT4 INTEGER INT8 BIGINT NUMERIC NUMERIC (p,s) REAL4 REAL REAL8 DOUBLE PRECISION STRING VARCHAR(길이) UINT1 TINYINT UINT2 UNSIGNED SMALLINT UINT4 UNSIGNED INTEGER UINT8 UNSIGNED BIGINT WSTRING VARCHAR(길이) BLOB IMAGE CLOB UNITEXT NCLOB TEXT AWS DMS는 다음 데이터 형식의 필드가 포함된 테이블을 지원하지 않습니다. 이 데이터 형식을 사용하는 복제된 열은 null로 표시됩니다. 173
대상으로 Amazon S3 사용 사용자 정의 유형(UDT) AWS Database Migration Service 대상으로 Amazon S3 사용 지원되는 데이터베이스 소스에서 AWS DMS를 사용하여 Amazon S3에 데이터를 마이그레이션할 수 있습니 다. AWS DMS 작업에서 Amazon S3를 대상으로 사용하는 경우, 전체 로드와 변경 데이터 캡처(CDC) 데이 터는 기본적으로 쉼표로 구분된 값(.csv) 형식에 작성됩니다. 보다 간소화된 스토리지 및 보다 빠른 쿼리 옵션 을 위해 데이터를 Apache Parquet(.parquet) 형식에 작성할 수도 있습니다. AWS DMS는 증분적 16진수 카운터를 사용하여 전체 로드 도중 생성되는 파일의 이름을 지정합니다. 예를 들어.csv 파일의 경우, LOAD00001.csv, LOAD00002..., LOAD00009, LOAD0000A와 같이 이름을 지정합니 다. AWS DMS는 타임스탬프를 사용하여 CDC 파일의 이름을 지정합니다(예: 20141029-1134010000.csv). 각 소스 테이블마다 AWS DMS는 지정된 대상 폴더 아래에 폴더를 생성합니다. AWS DMS는 지정된 Amazon S3 버킷에 모든 전체 로드와 CDC 파일을 작성합니다. 파라미터 bucketfolder에는 S3 버킷에 업로드되기 전에.csv 또는.parquet 파일이 저장되는 위치가 포함 되어 있습니다..csv 파일의 경우, 테이블 데이터는 S3 버킷에 다음 형식으로 저장됩니다. <schema_name>/<table_name>/load00000001.csv <schema_name>/<table_name>/load00000002.csv... <schema_name>/<table_name>/load00000009.csv <schema_name>/<table_name>/load0000000a.csv <schema_name>/<table_name>/load0000000b.csv... <schema_name>/<table_name>/load0000000f.csv <schema_name>/<table_name>/load00000010.csv... 추가 연결 속성을 사용하여 열 구분 기호, 행 구분 기호 등 여러 파라미터를 지정할 수 있습니다. 추가 연결 속 성에 대한 자세한 내용은 이 섹션의 마지막에 나오는 Amazon S3를 AWS DMS의 대상으로 사용 시 추가 연 결 속성 (p. 186)을 참조하십시오. AWS DMS를 사용하여 데이터 변경을 복제하는 경우,.csv 또는.parquet 출력 파일의 첫 번째 열은 다음.csv 파일이 보여 주는 것처럼 데이터가 어떻게 변경되었는지를 나타냅니다. I,101,Smith,Bob,4-Jun-14,New York U,101,Smith,Bob,8-Oct-15,Los Angeles U,101,Smith,Bob,13-Mar-17,Dallas D,101,Smith,Bob,13-Mar-17,Dallas 이 예의 경우, 소스 데이터베이스에 EMPLOYEE 테이블이 있다고 가정합니다. AWS DMS는 다음 이벤트에 응 답하여 데이터를.csv 또는.parquet 파일에 작성합니다. 새 직원(Bob Smith, 직원 ID 101)이 2014년 6월 4일에 뉴욕 지사에 입사했습니다..csv 또는.parquet 파일 에서 첫 번째 열의 I는 새 행이 소스 데이터베이스의 EMPLOYEE 테이블에 삽입(INSERT)되었음을 나타 냅니다. 2015년 10월 8일에 Bob은 LA 지사로 전근갑니다..csv 또는.parquet 파일에서 U는 Bob의 새 지사 위치 를 반영하여 EMPLOYEE 테이블의 해당 행이 업데이트(UPDATE)되었음을 나타냅니다. 이 줄 뒷부분에는 UPDATE 이후에 EMPLOYEE 테이블에서 이 행이 어떻게 표시되는지가 반영됩니다. 2017년 3월 13일에 Bob은 Dallas 지사로 다시 전근갑니다..csv 또는.parquet 파일에서 U는 이 행이 다시 업데이트(UPDATE)되었음을 나타냅니다. 이 줄 뒷부분에는 UPDATE 이후에 EMPLOYEE 테이블에서 이 행 이 어떻게 표시되는지가 반영됩니다. 174
대상으로 Amazon S3 사용 Bob은 Dallas에서 얼마간 근무한 후 퇴사합니다..csv 또는.parquet 파일에서 D는 소스 테이블에서 이 행 이 삭제(DELETE)되었음을 나타냅니다. 이 줄의 나머지에는 삭제 전에 EMPLOYEE 테이블에서 이 행이 어 떻게 표시되었는지가 반영됩니다. Amazon S3를 대상으로 사용하기 위한 사전 조건 Amazon S3를 대상으로 사용하기 전에 다음을 확인합니다. 대상으로 사용 중인 S3 버킷이 데이터 마이그레이션에 사용 중인 DMS 복제 인스턴스와 동일한 리전에 있 습니다. 마이그레이션에 사용하는 AWS 계정에 대상으로 사용 중인 S3 버킷에 대한 쓰기 및 삭제 액세스 권한이 있는 IAM 역할이 있습니다. 이 역할에는 태깅 액세스 권한이 있으므로 대상 버킷에 작성되는 S3 객체에 태그를 지정할 수 있습니다. 이 계정의 액세스 권한을 설정하려면 마이그레이션 작업 생성에 사용되는 사용자 계정에 할당된 역할에 다음 권한 집합이 있어야 합니다. "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": [ "s3:putobject", "s3:deleteobject", "s3:putobjecttagging" ], "Resource": [ "arn:aws:s3:::buckettest2*" ] "Effect": "Allow", "Action": [ "s3:listbucket" ], "Resource": [ "arn:aws:s3:::buckettest2*" ] ] Amazon S3을 대상으로 사용할 때 적용되는 제한 사항 대상으로 사용하고 있는 Amazon S3의 파일에 다음 제한 사항이 적용됩니다. 지원되는 데이터 정의 언어(DDL) 명령은 TRUNCATE TABLE, DROP TABLE, and CREATE TABLE입니 다. 전체 LOB 모드는 지원되지 않습니다. 전체 로드 중에 원본 테이블의 구조 변경은 지원되지 않습니다. 전체 로드 중에 데이터 변경은 지원되지 않 습니다. 동일한 원본 테이블에서 동일한 대상 S3 엔드포인트 버킷으로 데이터를 복제하는 작업을 여러 번 수행하 면 동일한 파일에 해당 작업을 쓰게 됩니다. 동일한 테이블의 데이터 원본인 경우 서로 다른 대상 엔드포인 트(버킷)을 지정하는 것이 좋습니다. 175
대상으로 Amazon S3 사용 보안 Amazon S3를 대상으로 사용하려면 마이그레이션에 사용되는 계정에 대상으로 사용되는 Amazon S3 버킷 에 대한 쓰기 및 삭제 액세스 권한이 있어야 합니다. Amazon S3에 액세스하는 데 필요한 권한을 가진 IAM 역할의 Amazon 리소스 이름(ARN)을 지정합니다. AWS DMS는 미리 제공된 ACL(액세스 제어 목록)이라는 Amazon S3에 대한 사전 정의된 권한 부 여 집합을 지원합니다. 각각의 미리 제공된 ACL에는 Amazon S3 버킷에 대한 권한을 설정하는 데 사용할 수 있는 피부여자 및 권한 집합이 있습니다. S3 대상 엔드포인트에 대해 연결 문자열 속성에 서 cannedaclforobjects를 사용하여 미리 제공된 ACL을 지정할 수 있습니다. 추가 연결 속성 cannedaclforobjects 사용에 대한 자세한 내용은 Amazon S3를 AWS DMS의 대상으로 사용 시 추가 연 결 속성 (p. 186) 단원을 참조하십시오. Amazon S3 미리 제공 ACL에 대한 자세한 내용은 미리 제공된 ACL 단원을 참조하십시오. 마이그레이션에 사용하는 IAM 역할이 s3:putobjectacl API 작업을 수행할 수 있어야 합니다. Apache Parquet를 사용하여 Amazon S3 객체 저장 쉼표로 구분된 값(.csv) 형식이 Amazon S3 대상 객체의 기본 스토리지 형식입니다. 보다 간소화된 스토리지 와 보다 빠른 쿼리를 위해 Apache Parquet(.parquet)를 스토리지 형식으로 대신 사용할 수 있습니다. Apache Parquet는 원래 하둡용으로 개발된 오픈 소스 파일 스토리지 형식입니다. Apache Parquet에 대한 자세한 내용은 https://parquet.apache.org/를 참조하십시오..parquet를 마이그레이션된 S3 대상 객체의 스토리지 형식으로 설정하기 위해 다음 메커니즘을 사용할 수 있 습니다. AWS CLI 또는 AWS DMS API를 사용하여 엔드포인트를 생성할 때 JSON 객체의 파라미터로 제공하는 엔 드포인트 설정. 자세한 내용은 Amazon S3를 AWS DMS 대상으로 사용할 경우 엔드포인트 설정 (p. 184) 단원을 참조하십시오. 엔드포인트를 생성할 때 세미콜론으로 구분된 목록으로 제공하는 추가 연결 속성. 자세한 내용은 Amazon S3를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 186) 단원을 참조하십시오. Amazon S3 객체 태깅 작업-테이블 매핑 규칙의 일환으로 적절한 JSON 객체를 지정하여 복제 인스턴스가 생성하는 Amazon S3 객체에 태깅할 수 있습니다. 유효한 태그 이름을 비롯한 S3 객체 태깅의 요건과 옵션에 대한 자세한 내용은 Amazon Simple Storage Service 개발자 가이드의 객체 태깅을 참조하십시오. JSON을 사용한 테이블 매핑 에 대한 자세한 내용은 JSON을 사용하여 테이블 매핑을 통해 테이블 선택 및 변환 지정 (p. 262) 단원을 참조하십시오. selection 규칙 유형의 JSON 객체 하나 이상을 사용하여 지정된 테이블 및 스키마를 위해 생성된 S3 객체 에 태깅합니다. 그런 다음 add-tag 작업을 사용하여 post-processing 규칙 유형의 JSON 객체 하나 이 상으로 이 selection 객체(또는 객체들)를 따릅니다. 이러한 사후 처리 규칙은 태깅하려는 S3 객체를 식별 하고 이러한 S3 객체에 추가하려는 태그의 이름과 값을 지정합니다. 다음 테이블의 post-processing 규칙 유형의 JSON 객체에서 지정할 파라미터를 찾을 수 있습니다. 파라미터 가능한 값 설명 rule-type post-processing 생성된 대상 객체에 사후 처리 작업을 적 용하는 값입니다. 하나 이상의 사후 처리 규칙을 지정하여 선택한 S3 객체에 태깅 할 수 있습니다. rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값. 176
대상으로 Amazon S3 사용 파라미터 가능한 값 설명 rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름. rule-action add-tag S3 객체에 적용할 사후 처리 작업입니다. add-tag 작업의 단일 JSON 사후 처리 객체를 사용하여 하나 이상의 태그를 추 가할 수 있습니다. object-locator schema-name 테이블 스키마의 이름 입니다. 규칙이 적용되는 각 스키마와 테이블의 이름입니다. 각 object-locator 파라 미터 값의 전부 또는 일부에 '%'(퍼센트 기호)를 와일드카드로 사용할 수 있습니 다. 따라서 다음 항목들을 일치시킬 수 있 습니다. table-name 테이블의 이름입니다. 단일 스키마의 단일 테이블 일부 또는 전체 스키마의 단일 테이블 단일 스키마의 일부 또는 전체 테이블 일부 또는 전체 스키마의 일부 또는 전 체 테이블 tag-set key 단일 태그의 유효한 이름입니다. value 이 태그의 유효한 JSON 값입니 다. 지정된 object-locator와 일치하는 생성된 각 S3 객체에 설정하려는 하나 이상의 태그 이름과 값입니다. 하나의 tag-set 파라미터 객체에서 최대 10개 의 키-값 페어를 지정할 수 있습니다. S3 객체 태깅에 대한 자세한 내용은 Amazon Simple Storage Service 개발자 가이드의 객체 태깅을 참조하십시오. $dyn-value를 사용하여 태그의 key 및 value 파라미터 값 전부 또는 일부에 동적 값을 지정할 수도 있습니다. 여기서 $dyn-value는 $schema-name 또는 $table-name일 수 있습니다. 따라서 현재 선택된 스키마 또는 테이블 의 이름을 파라미터 값의 전체 또는 일부 로 삽입할 수 있습니다. Note Important key 파라미터의 동적 값을 삽입하는 경우, 사 용 방법에 따라 S3객체 의 중복된 이름이 있는 태그를 생성할 수 있습 니다. 이 경우, 중복 태 그 설정 중 하나만 객체 에 추가됩니다. 여러 post-processing 규칙 유형을 지정하여 S3 객체 선택을 태깅하는 경우, 각 S3 객체는 하나의 사후 처리 규칙의 tag-set 하나만 사용하여 태깅됩니다. 주어진 S3 객체 태깅에 사용되는 특정 태그 세트는 연결 된 객체 로케이터가 해당 S3 객체와 가장 잘 일치하는 사후 처리 규칙의 태그 세트입니다. 177
대상으로 Amazon S3 사용 예를 들어 2개의 사후 처리 규칙이 동일한 S3 객체를 식별한다고 가정해 보겠습니다. 또한 한 규칙의 객체 로 케이터는 와일드카드를 사용하며, 다른 한 규칙의 객체 로케이터는 정확한 일치를 사용하여 S3 객체를 식별 한다고(와일드카드 없이) 가정하겠습니다. 이 경우, 정확한 일치를 사용하는 사후 처리 규칙에 연결된 태그 세트가 S3 객체 태깅에 사용됩니다. 여러 사후 처리 규칙이 주어진 S3 객체를 똑같이 잘 일치시키는 경우, 이 러한 첫 번째 사후 처리 규칙에 연결된 태그 세트가 객체 태깅에 사용됩니다. Example 단일 테이블 및 스키마를 위해 생성된 S3 객체에 정적 태그 추가 다음 선택 및 사후 처리 규칙은 3개의 태그(tag_1, tag_2, tag_3 및 해당 정적 값 value_1, value_2, value_3)를 생성된 S3 객체에 추가합니다. 이 S3 객체는 스키마 이름이 aat2인 STOCK이라는 이름의 소스 에 있는 단일 테이블에 상응합니다. "rules": [ "rule-type": "selection", "rule-id": "5", "rule-name": "5", "object-locator": "schema-name": "aat2", "table-name": "STOCK" "rule-action": "include" "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": "schema-name": "aat2", "table-name": "STOCK", "tag-set": [ "key": "tag_1", "value": "value_1" "key": "tag_2", "value": "value_2" "key": "tag_3", "value": "value_3" ] ] Example 여러 테이블 및 스키마를 위해 생성된 S3 객체에 정적 및 동적 태그 추가 다음 예에는 1개의 선택 규칙과 2개의 사후 처리 규칙이 있습니다. 여기서 소스의 입력에는 모든 테이블과 테 이블의 모든 스키마가 포함됩니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": 178
대상으로 Amazon S3 사용 "schema-name": "%", "table-name": "%" ] "rule-action": "include" "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": "schema-name": "%", "table-name": "%", "tag-set": [ "key": "dw-schema-name", "value":"$schema-name" "key": "dw-schema-table", "value": "my_prefix_$table-name" ] "rule-type": "post-processing", "rule-id": "41", "rule-name": "41", "rule-action": "add-tag", "object-locator": "schema-name": "aat", "table-name": "ITEM", "tag-set": [ "key": "tag_1", "value": "value_1" "key": "tag_2", "value": "value_2" ] 첫 번째 사후 처리 규칙은 2개의 태그(dw-schema-name과 dw-schema-table) 및 해당 동적 값 ($schema-name과 my_prefix_$table-name)을 대상에서 생성된 거의 모든 S3 객체에 추가합니다. 예외는 두 번째 사후 처리 규칙으로 식별되고 태깅된 S3 객체입니다. 따라서 와일드카드 객체 로케이터에 의 해 식별된 각각의 S3 객체는 소스에서 상응하는 스키마와 테이블을 식별하는 태그를 사용하여 생성됩니다. 두 번째 사후 처리 규칙은 tag_1 및 tag_2와 해당 정적 값 value_1 및 value_2를 정확한 일치 객체 로 케이터에 의해 식별되는 생성된 S3 객체에 추가합니다. 생성된 이 S3 객체는 따라서 스키마 이름이 aat인 ITEM이라는 이름의 소스에 있는 단일 테이블에 상응합니다. 정확한 일치로 인해 이러한 태그는 와일드카드 만으로 S3 객체를 일치시키는 첫 번째 사후 처리 규칙에서 추가된 이 객체의 모든 태그를 대체합니다. Example S3 객체에 동적 태그 이름과 값을 모두 추가 다음 예에는 2개의 선택 규칙과 1개의 사후 처리 규칙이 있습니다. 여기서 소스의 입력에는 retail 또는 wholesale 스키마의 ITEM 테이블만 포함됩니다. 179
대상으로 Amazon S3 사용 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "retail", "table-name": "ITEM" "rule-action": "include" "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "wholesale", "table-name": "ITEM" "rule-action": "include" "rule-type": "post-processing", "rule-id": "21", "rule-name": "21", "rule-action": "add-tag", "object-locator": "schema-name": "%", "table-name": "ITEM", "tag-set": [ "key": "dw-schema-name", "value":"$schema-name" "key": "dw-schema-table", "value": "my_prefix_item" "key": "$schema-name_item_tag_1", "value": "value_1" "key": "$schema-name_item_tag_2", "value": "value_2" ] ] 사후 처리 규칙의 태그 세트는 2개의 태그(dw-schema-name 및 dw-schema-table)를 대상의 ITEM 테이 블을 위해 생성된 모든 S3 객체에 추가합니다. 첫 번째 태그는 동적 값 "$schema-name"를 갖고 두 번째 태그는 정적 값 "my_prefix_item"을 갖습니다. 따라서 각각의 S3 객체는 소스에서 상응하는 스키마와 테 이블을 식별하는 태그를 사용하여 생성됩니다. 또한 태그 세트는 동적 이름이 있는 2개의 태그($schema-name_ITEM_tag_1 및 "$schemaname_item_tag_2")를 추가합니다. 이러한 태그는 상응하는 정적 값 value_1과 value_2를 갖습니다. 따라서 이러한 태그는 각각 현재의 스키마 retail 또는 wholesale에 대해 이름이 지정됩니다. 각 객체가 단일한 고유 스키마 이름을 위해 생성되기 때문에 이 객체에는 중복된 동적 태그를 생성할 수 없습니다. 이 스키마 이름은 다른 방식으로 고유한 태그 이름을 생성하는 데 사용됩니다. 180
대상으로 Amazon S3 사용 AWS KMS 키를 생성하여 Amazon S3 대상 객체 암호화 사용자 지정 AWS KMS키를 생성하고 사용하여 Amazon S3 대상 객체를 암호화할 수 있습니다. 적절한 KMS 키를 생성한 후 이 키를 사용하여 S3 대상 엔드포인트를 생성할 때 다음 메커니즘 중 하나를 사용하여 객체를 암호화할 수 있습니다. AWS CLI를 사용하여 create-endpoint 명령을 실행할 때 S3 객체에 다음 옵션(기본.csv 파일 스토리 지 형식으로)을 사용하십시오. --s3-settings '"ServiceAccessRoleArn": "your-service-access-arn", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-kms-key-arn"' 여기서 your-kms-key-arn은 KMS 키의 Amazon 리소스 이름(ARN)입니다. 자세한 내용은 Amazon S3 를 AWS DMS 대상으로 사용할 경우 엔드포인트 설정 (p. 184) 단원을 참조하십시오. 추가 연결 속성 encryptionmode를 값 SSE_KMS로 설정하고, 추가 연결 속성 serversideencryptionkmskeyid는 KMS 키의 ARN으로 설정합니다. 자세한 내용은 Amazon S3를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 186) 단원을 참조하십시오. KMS 키를 사용하여 S3 대상 객체를 암호화하려면 Amazon S3 버킷에 액세스할 권한이 있는 IAM 역할이 필요합니다. 그러면 생성한 암호화 키에 연결된 정책(키 정책)에서 이 IAM 역할에 액세스합니다. 이 작업은 IAM 콘솔에서 다음을 생성하여 수행할 수 있습니다. Amazon S3 버킷에 액세스할 권한이 있는 정책. 이 정책이 있는 IAM 역할. 이 역할을 참조하는 키 정책이 있는 KMS 암호화 키. 다음 절차에서 그 방법을 설명합니다. Amazon S3 버킷에 액세스할 권한이 있는 IAM 정책을 생성하려면 1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다. 2. 탐색 창에서 정책을 선택합니다. 정책 페이지가 열립니다. 3. [Create policy]를 선택합니다. 정책 생성 페이지가 열립니다. 4. 서비스를 선택하고 S3를 선택합니다. 작업 권한 목록이 나타납니다. 5. 모두 확장을 선택하여 목록을 확장하고 최소한 다음 권한을 선택합니다. ListBucket PutObject DeleteObject 필요한 그 밖의 권한을 선택한 다음 모두 축소를 선택하여 목록을 축소합니다. 6. 리소스를 선택하여 액세스하려는 리소스를 지정합니다. 최소한 All resource(모든 리소스)를 선택하여 일반적인 S3 리소스 액세스 권한을 제공합니다. 7. 필요한 그 밖의 조건 또는 권한을 추가한 다음 정책 검토를 선택합니다. 정책 검토 페이지에서 결과를 확 인합니다. 8. 필요한 설정이 되었다면 정책의 이름(예: DMS-S3-endpoint-access)과 추가 설명을 입력한 다음 정 책 생성을 선택합니다. 정책이 생성되었다는 메시지와 함께 정책 페이지가 열립니다. 9. 정책 목록에서 정책 이름을 검색하고 선택합니다. 다음과 비슷한 정책의 JSON이 표시되는 요약 페이지 가 나타납니다. 181
대상으로 Amazon S3 사용 "Version": "2012-10-17", "Statement": [ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:putobject", "s3:listbucket", "s3:deleteobject" ], "Resource": "*" ] 이제 암호화를 위해 S3 리소스에 액세스할 수 있는 지정된 이름의 새 정책이 생성되었습니다(예: DMS-S3endpoint-access). 이 정책을 사용하여 IAM 역할을 생성하려면 1. IAM 콘솔의 탐색 창에서 역할을 선택합니다. 역할 세부 정보 페이지가 열립니다. 2. 역할 생성을 선택합니다. 역할 생성 페이지가 열립니다. 3. AWS 서비스를 신뢰할 수 있는 엔터티 유형으로 선택한 상태에서 해당 역할을 사용할 서비스로 DMS를 선택합니다. 4. 다음: 권한(Next: Permissions)을 선택합니다. 역할 생성 페이지에 Attach permissions policies(권한 정책 연결) 보기가 나타납니다. 5. 이전 절차에서 생성한 역할 정책을 찾아 선택합니다(DMS-S3-endpoint-access). 6. 다음: 태그를 선택합니다. 역할 생성 페이지에 태그 추가 보기가 나타납니다. 여기서 원하는 태그를 추가 할 수 있습니다. 7. [Next: Review]를 선택합니다. 역할 생성 페이지에 검토 보기가 나타납니다. 여기서 결과를 확인할 수 있 습니다. 8. 필요한 설정이 되었다면 역할의 이름(필수, 예를 들어 DMS-S3-endpoint-access-role)과 추가 설명 을 입력한 다음 역할 생성을 선택합니다. 역할이 생성되었다는 메시지와 함께 역할 세부 정보 페이지가 열립니다. 이제 암호화를 위해 S3 리소스에 액세스할 수 있는 지정된 이름의 새 역할이 생성되었습니다(예: DMS-S3endpoint-access-role). IAM 역할을 참조하는 키 정책이 있는 KMS 암호화 키를 생성하려면 1. IAM 콘솔의 탐색 창에서 암호화 키를 선택합니다. 이 옵션에 처음 액세스하는 경우, AWS Key Management Service 소개가 표시되며 지금 시작을 선택하 여 시작할 수 있습니다. 그렇지 않다면 암호화 키 페이지가 열립니다. 2. [Create key]를 선택합니다. Create Alias and Description(별칭 생성 및 설명) 페이지가 열립니다. 3. 키의 별칭(예: DMS-S3-endpoint-encryption-key)과 추가 설명을 입력합니다. 4. [Advanced Options]를 선택합니다. 고급 옵션 섹션에서 Key Material Origin(키 구성 요소 오리진)으로 KMS가 선택되어 있는지 확인한 후 다음 단계를 선택합니다. 태그 추가 페이지가 열립니다. 5. 키 식별과 키 사용 추적에 도움이 되는 태그를 추가한 후 다음 단계를 선택합니다. Define Key Administrative Permissions(키 관리 권한 정의) 페이지가 열리고 선택할 수 있는 사용자 및 역할 목록이 표시됩니다. 182
대상으로 Amazon S3 사용 6. 키를 관리할 사용자와 역할을 추가합니다. 키를 관리하는 데 필요한 권한이 이러한 사용자와 역할에 있 는지 확인합니다. 7. 키 관리자가 키를 삭제할 수 있는지 여부를 선택한 후 다음 단계를 선택합니다. Define Key Usage Permissions(키 사용 권한 정의) 페이지가 열리고 선택할 수 있는 추가 사용자 및 역할 목록이 표시됩니 다. 8. 이전에 역할에서 생성한 역할을 선택하여 S3 대상 객체 암호화를 위한 액세스를 활성화합니다(예: DMSS3-endpoint-access-role). 그런 다음 [Next Step]을 선택합니다. Preview Key Policy(키 정책 미리 보기) 페이지가 열리고 검토할 수 있는 키 정책의 JSON이 표시됩니다. 여기서 이전 단계에서 선택한 역할을 키 정책이 어디에서 참조하는지 볼 수 있습니다. 다음 예에 나온 것 처럼 다양한 보안 주체(사용자 및 역할)에 허용되는 다양한 키 작업도 볼 수 있습니다. "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": "AWS": [ "arn:aws:iam::944454115380:root" ] "Action": "kms:*", "Resource": "*" "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": "AWS": [ "arn:aws:iam::944454115380:role/admin" ] "Action": [ "kms:create*", "kms:describe*", "kms:enable*", "kms:list*", "kms:put*", "kms:update*", "kms:revoke*", "kms:disable*", "kms:get*", "kms:delete*", "kms:tagresource", "kms:untagresource", "kms:schedulekeydeletion", "kms:cancelkeydeletion" ], "Resource": "*" "Sid": "Allow use of the key", "Effect": "Allow", "Principal": "AWS": [ "arn:aws:iam::944454115380:role/dms-s3-endpoint-access-role" ] "Action": [ "kms:encrypt", 183
대상으로 Amazon S3 사용 "kms:decrypt", "kms:reencrypt*", "kms:generatedatakey*", "kms:describekey" ], "Resource": "*" ] 9. "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": "AWS": [ "arn:aws:iam::944454115380:role/dms-s3-endpoint-access-role" ] "Action": [ "kms:creategrant", "kms:listgrants", "kms:revokegrant" ], "Resource": "*", "Condition": "Bool": "kms:grantisforawsresource": true [마침]을 클릭합니다. 마스터 암호화 키가 생성되었다는 메시지와 함께 암호화 키 페이지가 열립니다. 이제 지정된 별칭의 새 KMS 키가 생성되었습니다(예: DMS-S3-endpoint-encryption-key). 이 키를 통 해 AWS DMS가 S3 대상 객체를 암호화할 수 있습니다. Note AWS Key Management Service와 IAM 역할 및 정책을 사용하여 KMS 키를 생성하고 관리할 수도 있습니다. 자세한 내용은 키 관리 서비스(KMS): 개발자 안내서를 참조하십시오. Amazon S3를 AWS DMS 대상으로 사용할 경우 엔드포인트 설정 추가 연결 속성을 사용하는 것과 비슷하게 엔드포인트 설정을 사용하여 Amazon S3 대상을 구성할 수 있 습니다. AWS CLI에서 --s3-settings 'json-settings' 옵션과 함께 create-endpoint 명령을 사 용하여 대상 엔드포인트를 생성할 때 이러한 설정을 지정할 수 있습니다. 여기서 json-settings는 설정 을 지정하는 파라미터가 포함된 JSON 객체입니다. 예를 들어 --s3-settings file:///your-filepath/my_s3_settings.json에서처럼 동일한 json-settings가 포함된.json 파일을 지정할 수도 있습 니다. 여기서 my_s3_settings.json은 동일한 json-settings object를 포함한.json 파일의 이름입 니다. 엔드포인트 설정의 파라미터 이름은 대문자인 첫 글자를 제외하면 해당 추가 연결 속성의 이름과 동일합 니다. 또한 create-endpoint 명령의 --s3-settings 옵션을 사용하여 추가 연결 속성을 사용하는 모 든 S3 대상 엔드포인트 설정을 사용할 수 있는 것은 아닙니다. create-endpoint에 대한 AWS CLI 호출 에서 사용할 수 있는 설정에 대한 자세한 내용은 AWS DMS의 AWS CLI Command Reference에서 createendpoint를 참조하십시오. 이러한 설정에 대한 자세한 내용은 Amazon S3를 AWS DMS의 대상으로 사용 시 추가 연결 속성 (p. 186)의 해당 추가 연결 속성을 참조하십시오. S3 대상 엔드포인트 설정을 사용하여 다음을 구성할 수 있습니다. S3 대상 객체를 암호화하기 위한 사용자 지정 KMS 키 S3 대상 객체의 스토리지 형식인 parquet 파일 184
대상으로 Amazon S3 사용 데이터 암호화를 위한 KMS 키 설정 다음 예는 S3 대상 객체를 암호화하도록 사용자 지정 KMS 키를 구성하는 방법을 보여 줍니다. 먼저 AWS CLI를 사용해 다음 create-endpoint 호출을 할 수 있습니다. aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 -endpoint-type target --s3-settings '"ServiceAccessRoleArn": "your-service-access-arn", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:useast-1:944454115380:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"' 여기서 --s3-settings 옵션에 의해 지정된 JSON 객체는 다음 두 가지 파라미터를 정 의합니다. 하나는 값이 SSE_KMS인 EncryptionMode 파라미터입니다. 다른 하나는 값이 arn:aws:kms:us-east-1:944454115380:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480인 ServerSideEncryptionKmsKeyId 파라미터입니다. 이 값은 사용자 지정 KMS 키의 Amazon 리소스 이 름(ARN)입니다. S3 대상의 경우, 추가 설정도 지정할 수 있습니다. 이러한 설정은 서버 액세스 역할을 식별 하고, 기본 CSV 객체 스토리지 형식의 구분 기호를 제공하며, S3 대상 객체를 저장할 버킷 위치와 이름을 제 공합니다. 기본적으로 S3 데이터 암호화는 S3 서버 측 암호화를 사용하여 수행됩니다. 이전 예의 S3 대상의 경우, 다음 예에서처럼 이것은 엔드포인트 설정을 지정하는 것에 해당합니다. aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 -endpoint-type target --s3-settings '"ServiceAccessRoleArn": "your-service-access-arn", "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", "BucketName": "your-bucket-name", "EncryptionMode": "SSE_S3"' S3 서버 측 암호화 작업에 대한 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시 오..parquet 파일을 사용하여 S3 대상 객체를 저장하기 위한 설정 S3 대상 객체 생성의 기본 형식은.csv 파일입니다. 다음 예는 S3 대상 객체 생성을 위한 형식으로.parquet 파일을 지정하기 위한 몇 가지 엔드포인트 설정을 보여 줍니다. 다음 예에서처럼.parquet 파일 형식을 모두 기본값으로 지정할 수 있습니다. aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 -endpoint-type target --s3-settings '"ServiceAccessRoleArn": "your-service-access-arn", "DataFormat": "parquet"' 여기서는 모든 S3 기본값으로 형식을 활성화하기 위해 DataFormat 파라미터가 parquet로 설정됩니다. 이러한 기본값에는 반복되는 값을 보다 효율적으로 저장하기 위해 비트 압축과 실행 길이 인코딩의 조합을 사용하는 사전식 인코딩("EncodingType: "rle-dictionary")이 포함됩니다. 다음 예에서처럼 기본값이 아닌 옵션의 추가 설정을 추가할 수 있습니다. aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 -endpoint-type target --s3-settings '"ServiceAccessRoleArn": "your-service-access-arn", "BucketFolder": "yourbucket-folder", "BucketName": "your-bucket-name", "compressiontype": "GZIP", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "dictpagesizelimit": "3,072,000", 185
대상으로 Amazon S3 사용 "EnableStatistics": "false" ' 여기서 몇 가지 표준 S3 버킷 옵션의 파라미터와 DataFormat 파라미터 외에 다음의 추가.parquet 파일 파 라미터가 설정됩니다. EncodingType 사전 페이지의 열당 청크의 각 열에서 발생하는 값을 저장하는 사전식 인코딩(plaindictionary)으로 설정됩니다. dictpagesizelimit 사전 페이지 최대 크기인 3MB로 설정됩니다. EnableStatistics Parquet 파일 페이지와 행 그룹에 대한 통계 수집을 활성화하는 기본값을 비활성 화합니다. Amazon S3를 AWS DMS의 대상으로 사용 시 추가 연결 속성 추가 연결 속성으로서 다음 옵션을 지정할 수 있습니다. 연결 속성 설정이 여러 개인 경우, 추가 공백 없이 세 미콜론으로 구분하십시오. 옵션 설명 addcolumnname true 또는 y로 설정할 때.csv 출력 파일에 열 이름 정보를 추가하는 데 사용할 수 있는 선택적 파라미터입니다. 기본값: false. 유효한 값: true, false, y, n 예: addcolumnname=true; bucketfolder S3 버킷의 폴더 이름을 설정하는 선택적 파라미터입니다. 제공되는 경우, 대상 객체는 경로 <bucketfolder>/<schema_name>/<table_name>/에서.csv 또는.parquet 파일로 생성됩니다. 이 파라미터가 지정되지 않은 경우, 사용되는 경로는 <schema_name>/<table_name>/입니다. 예: bucketfolder=testfolder; bucketname S3 대상 객체가.csv 또는.parquet 파일로 생성되는 S3 버킷의 이름입니다. 예: bucketname=buckettest; cannedaclforobjects AWS DMS가 S3 버킷에서.csv 또는.parquet 파일로 생성되는 객체에 대한 사 전 정의된(미리 제공된) 액세스 제어 목록을 지정할 수 있도록 합니다. Amazon S3 미리 제공 ACL에 대한 자세한 내용은 Amazon S3 개발자 안내서의 미리 제 공된 ACL을 참조하십시오. 예: cannedaclforobjects=public_read; 이 속성의 유효한 값은 NONE; PRIVATE; PUBLIC_READ; PUBLIC_READ_WRITE; AUTHENTICATED_READ; AWS_EXEC_READ; BUCKET_OWNER_READ; BUCKET_OWNER_FULL_CONTROL입니다. 이 속성은 지정하지 않으면 NONE으로 기본 설정됩니다. 186
대상으로 Amazon S3 사용 옵션 설명 cdcinsertsonly 쉼표로 구분된 값(.csv) 또는 컬럼 방식 스토리지(.parquet) 출력 파일에 INSERT 작업만을 작성하는 선택적 파라미터입니다. 기본적으로.csv 또 는.parquet 레코드의 첫 번째 필드에는 행이 소스 데이터베이스에서 삽입, 업 데이트 또는 삭제되었는지 여부를 나타내는 I(삽입), U(업데이트) 또는 D(삭 제) 글자가 포함되어 있습니다. cdcinsertsonly가 true 또는 y로 설정되면 INSERT만.csv 또는.parquet 파일에 작성되고 I 주석은 사용되지 않습니다. 기본값: false. 유효한 값: true, false, y, n 예: cdcinsertsonly=true; compressiontype GZIP으로 설정하면 GZIP을 사용하여 대상.csv 또는.parquet 파일을 압축하는 선택적 파라미터입니다. 기본값으로 설정하면 파일을 압축되지 않은 상태로 둡 니다. 기본값: NONE. 유효한 값: GZIP 또는 NONE 예: compressiontype=gzip; csvdelimiter.csv 소스 파일에서 열을 구분하는 데 사용되는 구분 기호입니다. 기본값은 쉼 표(,)입니다. 예: csvdelimiter=,; csvrowdelimiter.csv 소스 파일에서 행을 구분하는 데 사용되는 구분 기호입니다. 기본값은 줄 바꿈(\n)입니다. 예: csvrowdelimiter=\n; maxfilesize 전체 로드 중에 S3 대상으로 마이그레이션하는 동안 생성할.csv 파일의 최대 크기(KB 단위)를 지정하는 값입니다. 기본값: 1048576KB(1GB) 유효한 값: 1 1048576 예: maxfilesize=512 187
대상으로 Amazon S3 사용 옵션 설명 rfc4180.csv 파일 형식만 사용하여 Amazon S3로 마이그레이션되는 데이터와 함께 RFC 규정 준수 동작을 제어하는 데 사용되는 선택적 파라미터입니다. Amazon S3를 대상으로 사용하여 true 또는 y로 설정하는 경우, 데이터에 따옴표나 줄 바꿈 문자가 있으면 AWS DMS는 전체 열을 추가적인 큰따옴표(")로 묶습니다. 데이터 내 모든 따옴표는 두 번 반복됩니다. 이는 RFC 4180를 준수합니다. 기본값: true. 유효한 값: true, false, y, n 예: rfc4180=false; encryptionmode S3로 복사되는.csv 또는.parquet 객체 파일을 암호화할 서버 측 암호화 모드 입니다. 유효한 값은 SSE_S3(S3 서버 측 암호화) 또는 SSE_KMS(KMS 키 암 호화)입니다. SSE_KMS를 선택하는 경우, 암호화에 사용할 KMS 키의 Amazon 리소스 이름(ARN)으로 serversideencryptionkmskeyid 파라미터를 설정 합니다. 기본값: SSE_S3 유효한 값: SSE_S3 또는 SSE_KMS 예: encryptionmode=sse_s3; serversideencryptionkmskeyid encryptionmode를 SSE_KMS로 설정하는 경우, 이 파라미터를 KMS 키의 Amazon 리소스 이름(ARN)으로 설정합니다. 이 ARN은 계정을 위해 생성한 KMS 키 목록에서 키 별칭을 선택하면 찾을 수 있습니다. 키를 생성할 때 특정 정책과 역할을 이 KMS 키에 연결해야 합니다. 자세한 내용은 AWS KMS 키를 생성하여 Amazon S3 대상 객체 암호화 (p. 181) 단원을 참조하십시오. 예: serversideencryptionkmskeyid=arn:aws:kms:useast-1:944454115380:key/72abb6fb-1e49-4ac1-9aedc803dfcc0480; dataformat AWS DMS가 S3 객체를 생성하는 데 사용하는 파일의 출력 형식입니다. Amazon S3 객체의 경우, AWS DMS는.csv 또는.parquet 파일을 지원합니 다..parquet 파일은 효율적인 압축 옵션과 보다 빠른 쿼리 성능을 갖춘 이진 컬 럼 방식 스토리지 형식을 갖고 있습니다..parquet 파일에 대한 자세한 내용은 https://parquet.apache.org/를 참조하십시오. 기본값: csv 유효한 값: csv 또는 parquet 예: dataformat=parquet; 188
대상으로 Amazon S3 사용 옵션 설명 encodingtype Parquet 인코딩 유형입니다. 인코딩 유형 옵션에는 다음이 포함됩니다. rle-dictionary 이 사전식 인코딩은 반복되는 값을 보다 효율적으로 저 장하기 위해 비트 압축과 실행 길이 인코딩의 조합을 사용합니다. plain 인코딩 없음. plain-dictionary 이 사전식 인코딩은 주어진 열에서 발생하는 값의 사 전을 빌드합니다. 사전은 각 열 청크의 사전 페이지에 저장됩니다. 기본값: rle-dictionary 유효한 값: rle-dictionary, plain 또는 plain-dictionary 예: encodingtype=plain-dictionary; dictpagesizelimit.parquet 파일에서 허용되는 사전 페이지의 최대 크기(바이트 단위)입니다. 사 전 페이지가 이 값을 초과하면 해당 페이지는 일반 인코딩을 사용합니다. 기본값: 1,024,000(1MB) 유효한 값: 유효한 정수 값 예: dictpagesizelimit=2,048,000; rowgrouplength.parquet 파일의 한 행 그룹에 있는 행 수입니다. 기본값: 10,024(10KB) 유효한 값: 유효한 정수 값 예: rowgrouplength=20,048; datapagesize.parquet 파일에서 허용되는 데이터 페이지의 최대 크기(바이트 단위)입니다. 기본값: 1,024,000(1MB) 유효한 값: 유효한 정수 값 예: datapagesize=2,048,000; parquetversion.parquet 파일 형식의 버전입니다. 기본값: PARQUET_1_0 유효한 값: PARQUET_1_0 또는 PARQUET_2_0 예: parquetversion=parquet_2_0; 189
대상으로 Amazon DynamoDB 사용 옵션 설명 enablestatistics true 또는 y로 설정하여.parquet 파일 페이지와 행 그룹에 대한 통계를 활성화 합니다. 기본값: true. 유효한 값: true, false, y, n 예: enablestatistics=false; AWS Database Migration Service에서 Amazon DynamoDB 데이터베이스를 대상으로 사용 AWS DMS를 사용하여 데이터를 Amazon DynamoDB에 마이그레이션할 수 있습니다. Amazon DynamoDB 는 완벽하게 관리되는 NoSQL 데이터베이스 서비스로서 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공합니다. AWS DMS는 원본으로서 관계형 데이터베이스 또는 MongoDB 사용을 지원합니다. DynamoDB 테이블에서, 항목 및 속성은 작업 시 필요한 핵심 구성 요소입니다. 테이블은 항목의 모음이고 각 항목은 속성의 모음입니다. DynamoDB는 파티션 키라고 하는 기본 키를 사용하여 테이블의 각 항목을 고유 하게 식별합니다. 또한 키와 보조 인덱스를 사용할 수 있어 쿼리 유연성이 향상됩니다. 객체 매핑을 사용하여 소스 데이터베이스에서 대상 DynamoDB 테이블로 데이터를 마이그레이션할 수 있습 니다. 객체 매핑을 통해 원본 데이터를 대상에 배치할 위치를 결정할 수 있습니다. AWS DMS는 Amazon DynamoDB 대상 엔드포인트에서 테이블을 생성하는 경우 소스 데이터베이스 엔드포 인트에 있는 만큼 테이블을 생성합니다. AWS DMS는 여러 Amazon DynamoDB 파라미터 값을 설정하기도 합니다. 테이블 생성 비용은 마이그레이션할 테이블 수와 데이터 양에 따라 달라집니다. AWS DMS가 마이그레이션 작업에 대해 Amazon DynamoDB 파라미터 값을 설정하는 경우 기본 읽기 용량 단위(RCU) 파라미터 값이 200으로 설정됩니다. 쓰기 용량 단위(WCU) 파라미터 값도 설정되지만 이 파라미터의 값은 다른 여러 설정에 따라 달라집니다. WCU 파라미터의 기본 값은 200입니다. parallelloadthreads 파라미터가 1(기본값은 0)보다 크게 설정된 경우 WCU 파라미터가 parallelloadthreads 값으 200배로 설정됩니다. 미국 동부(버지니아 북부) 리전(us-east-1)에서 설정 가능한 최대 WCU 파라미터 값은 40000입니다. AWS 리전이 us-east-1이고 WCU 파라미터 값이 40000보다 크면 WCU 파라미터 값이 40000으로 설정됩니다. us-east-1 이외의 AWS 이전에서는 설정 가능한 최대 WCU 파라미터 값이 10000입니다. us-east-1 이외 AWS 리전의 경우 WCU 파라미터 값이 10000보다 크게 설정되면 WCU 파라미터 값이 10000으로 설정됩 니다. 관계형 데이터베이스에서 DynamoDB 테이블로 마이그레이션 AWS DMS는 DynamoDB 스칼라 데이터 형식으로의 데이터 마이그레이션을 지원합니다. Oracle 또는 MySQL 같은 관계형 데이터베이스에서 DynamoDB로 마이그레이션할 때에는 이 데이터를 저장하는 방법을 다시 구성하는 것이 좋습니다. 현재 AWS DMS는 단일 테이블 간 DynamoDB 스칼라 형식 속성으로의 재구성을 지원합니다. 관계형 데이 터베이스 테이블에서 데이터를 DynamoDB로 마이그레이션하려는 경우, 테이블에서 데이터를 가져와서 DynamoDB 스칼라 데이터 형식 속성으로 재지정합니다. 이 속성은 여러 열에서 데이터를 수락하여 열을 속 성에 직접 매핑할 수 있습니다. 190
대상으로 Amazon DynamoDB 사용 AWS DMS는 다음 DynamoDB 스칼라 데이터 형식을 지원합니다. String 번호 부울 Note 원본의 NULL 데이터는 대상에서 무시됩니다. DynamoDB를 AWS Database Migration Service의 대상으로 사용 하기 위한 사전 조건 DynamoDB 데이터베이스를 AWS DMS의 대상으로 사용하기에 앞서 IAM 역할을 생성해야 합니다. 이 IAM 역할은 AWS DMS가 역할을 맡도록 허용해야 하며, 마이그레이션되고 있는 DynamoDB 테이블에 대한 액세 스 권한을 부여합니다. 최소 액세스 권한 집합이 다음 샘플 역할 정책에 나와 있습니다. "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com" "Action": "sts:assumerole" ] DynamoDB로의 마이그레이션에 사용하는 역할에는 다음 권한이 있어야 합니다. "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": [ "dynamodb:putitem", "dynamodb:createtable", "dynamodb:describetable", "dynamodb:deletetable", "dynamodb:deleteitem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:account-id:table/name1", "arn:aws:dynamodb:us-west-2:account-id:table/othername*", ] ] "Effect": "Allow", "Action": [ "dynamodb:listtables" ], "Resource": "*" 191
대상으로 Amazon DynamoDB 사용 AWS Database Migration Service의 대상으로서 DynamoDB 사용 시 제한 사항 Amazon DynamoDB를 대상으로 사용할 때에는 다음 제한 사항이 적용됩니다. DynamoDB는 숫자 데이터 형식의 정밀도를 38자리로 제한합니다. 정밀도가 더 높은 모든 데이터 형식은 문자열로 저장합니다. 객체 매핑 기능을 사용하여 이것을 명시적으로 지정해야 합니다. Amazon DynamoDB에는 날짜 데이터 형식이 없기 때문에 날짜 데이터 형식을 사용한 데이터는 문자열로 변환됩니다. Amazon DynamoDB에서는 기본 키 속성 업데이트를 허용하지 않습니다. 대상에 원치 않는 데이터가 발생 할 수 있으므로 변경 데이터 캡처(CDC)와 함께 지속적인 복제 사용 시 이 제한이 중요합니다. 객체 매핑 형 태에 따라 기본 키를 업데이트하는 CDC 작업은 두 가지 중 하나를 수행할 수 있습니다. 즉, 실패하거나 업 데이트된 키와 불완전한 데이터로 새 항목을 삽입할 수 있습니다. AWS DMS는 비복합 기본 키가 테이블의 복제만을 지원합니다. 예외는 사용자 지정 파티션 키나 정렬 키 또는 두 키를 모두 사용하여 대상 테이블의 객체 매핑을 지정하는 경우입니다. AWS DMS는 CLOB가 아닌 LOB 데이터를 지원하지 않습니다. AWS DMS는 데이터를 마이그레이션할 때 CLOB 데이터를 DynamoDB 문자열로 변환합니다. DynamoDB를 대상으로 사용하는 경우 예외 적용(dmslogs.awsdms_apply_exceptions) 제어 테이블만 지 원됩니다. 제어 테이블에 대한 자세한 내용은 제어 테이블 작업 설정 (p. 242) 섹션을 참조하십시오. 객체 매핑을 사용하여 데이터를 DynamoDB로 마이그레이션 AWS DMS는 테이블 매핑 규칙을 사용하여 데이터를 소스에서 대상 DynamoDB 테이블로 매핑합니다. 데이 터를 DynamoDB 대상에 매핑하려면 객체 매핑이라는 테이블 매핑 규칙 유형을 사용합니다. 객체 매핑을 통 해 마이그레이션할 속성 이름과 데이터를 정의할 수 있습니다. 객체 매핑을 사용할 때는 선택 규칙이 있어야 합니다. Amazon DynamoDB에는 파티션 키와 정렬 키(선택 사항) 외에 사전 설정 구조가 없습니다. 비복합 기본 키가 있는 경우, AWS DMS는 이 기본 키를 사용합니다. 복합 기본 키가 있거나 정렬 키를 사용하려는 경우, 대상 DynamoDB 테이블에서 이러한 키와 기타 속성을 정의하십시오. 객체 매핑 규칙을 만들려면 rule-type을 object-mapping으로 지정합니다. 이 규칙은 사용할 객체 매핑 유 형을 지정합니다. 이 규칙의 구조는 다음과 같습니다. "rules": [ "rule-type": "object-mapping", "rule-id": "<id>", "rule-name": "<name>", "rule-action": "<valid object-mapping rule action>", "object-locator": "schema-name": "<case-sensitive schema name>", "table-name": "" "target-table-name": "<table_name>", ] AWS DMS는 현재 map-record-to-record와 map-record-to-document만을 rule-action 파라미 터의 유효한 값으로 지원합니다. 이러한 값은 exclude-columns 속성 목록의 일부로 제외되지 않은 레코드 192
대상으로 Amazon DynamoDB 사용 에 대해 AWS DMS가 기본적으로 수행하는 작업을 지정합니다. 이러한 값은 어떤 식으로든 속성 매핑에 영 향을 미치지 않습니다. 관계형 데이터베이스에서 DynamoDB로 마이그레이션할 때 map-record-to-record를 사용할 수 있습 니다. 이것은 Amazon DynamoDB에서 파티션 키로서 관계형 데이터베이스의 기본 키를 사용하고 원본 데 이터베이스의 각 열마다 속성을 생성합니다. map-record-to-record를 사용할 때 exclude-columns 속성 목록에 소스 테이블의 열이 나열되지 않은 경우, AWS DMS는 대상 DynamoDB 인스턴스에 해당 속 성을 생성합니다. 이 속성은 소스 열이 속성 매핑에 사용되는지 여부와 상관없이 생성됩니다. 속성 이름 '_doc'를 사용하여 대상에 있는 단일한 플랫 DynamoDB 맵에 소스 열을 배치하려면 maprecord-to-document를 사용합니다. map-record-to-document를 사용할 때 AWS DMS는 해당 데 이터를 소스에 있는 단일한 플랫 DynamoDB 맵 속성에 배치합니다. 이 속성을 '_doc'라고 합니다. 이 배치 는 exclude-columns 속성 목록에 나열되지 않은 소스 테이블의 모든 열에 적용됩니다. rule-action 파라미터 map-record-to-record와 map-record-to-document의 차이를 이해하는 한 가지 방법은 두 파라미터를 실행하는 것입니다. 이 예에서는 다음 구조와 데이터를 사용하여 관계형 데이터 베이스 테이블 행에서 시작한다고 가정합니다. 이 정보를 DynamoDB로 마이그레이션하려면 데이터를 DynamoDB 테이블 항목으로 매핑하는 규칙을 생성해야 합니다. exclude-columns 파라미터에 대해 나열된 열을 기록합니다. 이러한 열은 대상에 직 접 매핑되지 않습니다. 대신 속성 매핑은 FirstName과 LastName이 그룹화되어 DynamoDB 대상에서 CustomerName이 되는 것처럼 데이터를 새 항목으로 결합하는 데 사용됩니다. NickName과 income은 제외 되지 않습니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "object-mapping", "rule-id": "1", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": "schema-name": "test", "table-name": "customer" "target-table-name": "customer_t", "mapping-parameters": "partition-key-name": "CustomerName", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ 193
대상으로 Amazon DynamoDB 사용 ] ] "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$FirstName$LastName" "target-attribute-name": "ContactDetails", "attribute-type": "document", "attribute-sub-type": "dynamodb-map", "value": "M": "Home": "M": "Address": "S": "$HomeAddress" "Phone": "S": "$HomePhone" "Work": "M": "Address": "S": "$WorkAddress" "Phone": "S": "$WorkPhone" rule-action 파라미터 map-record-to-record를 사용하여 NickName 및 income의 데이터가 DynamoDB 대 상에 있는 동일한 이름의 항목에 매핑됩니다. 194
대상으로 Amazon DynamoDB 사용 단, 동일한 규칙을 사용하되, rule-action 파라미터를 map-record-to-document로 변경한다고 가정합니 다. 이 경우, exclude-columns 파라미터에 나열되어 있지 않은 열인 NickName 및 income은 _doc 항목으 로 매핑됩니다. 객체 매핑과 함께 사용자 지정 조건식 사용 조건식이라는 Amazon DynamoDB의 기능을 사용하여 DynamoDB 테이블에 작성되고 있는 데이터를 조작 할 수 있습니다. DynamoDB의 조건식에 대한 자세한 내용은 조건식 단원을 참조하십시오. 조건식 멤버의 구성 요소는 다음과 같습니다. 표현식(필수) 표현식 속성 값(선택 사항). 속성 값의 DynamoDB json 구조를 지정합니다. 표현식 속성 이름(선택 사항) 조건식을 사용할 때 수반되는 옵션(선택 사항). 기본값은 apply-during-cdc = false와 apply-during-full-load = true입니다. 이 규칙의 구조는 다음과 같습니다. "target-table-name": "customer_t", "mapping-parameters": "partition-key-name": "CustomerName", "condition-expression": "expression":"<conditional expression>", "expression-attribute-values": [ "name":"<attribute name>", "value":<attribute value> ], "apply-during-cdc":<optional Boolean value>, "apply-during-full-load": <optional Boolean value> 다음 샘플은 조건식에 사용되는 섹션을 강조한 것입니다. 195
대상으로 Amazon DynamoDB 사용 객체 매핑과 함께 속성 매핑 사용 속성 매핑을 통해 원본 열 이름을 사용한 템플릿 문자열을 지정하여 대상에서 데이터를 재구성할 수 있습니 다. 사용자가 템플릿에서 지정한 항목 외에 완료한 서식 변경이 없습니다. 다음 예는 소스 데이터베이스의 구조와 필요한 DynamoDB 대상 구조를 보여 줍니다. 첫 번째는 소스(이 경 우, Oracle 데이터베이스)의 구조를, 그 다음은 필요한 DynamoDB 데이터 구조를 나타냅니다. 이 예는 필요 한 대상 구조를 생성하는 데 사용되는 JSON으로 끝납니다. Oracle 데이터의 구조는 다음과 같습니다. FirstName LastName StoreId HomeAddress HomePhone WorkAddressWorkPhone DateOfBirth 기본 키 RandyMarsh5 해당 사항 없음 221B Baker Street 1234567890 31 Spooner Street, Quahog 9876543210 1988/02/29 DynamoDB 데이터의 구조는 다음과 같습니다. 196
대상으로 Amazon DynamoDB 사용 CustomerName StoreId 파티 션키 ContactDetails 정렬 키 Randy,Marsh 5 DateOfBirth 해당 사항 없음 "Name": "Randy", "Home": "Address": "221B Baker Street", "Phone": 1234567890 "Work": "Address": "31 Spooner Street, Quahog", "Phone": 9876541230 02/29/1988 다음 JSON은 DynamoDB 구조를 달성하는 데 사용되는 객체 매핑과 열 매핑을 보여 줍니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": "schema-name": "test", "table-name": "customer" "target-table-name": "customer_t", "mapping-parameters": "partition-key-name": "CustomerName", "sort-key-name": "StoreId", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$FirstName$LastName" 197
대상으로 Amazon DynamoDB 사용 "target-attribute-name": "StoreId", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$StoreId" "target-attribute-name": "ContactDetails", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "\"Name\":\"$FirstName\",\"Home\":\"Address\": \"$HomeAddress\",\"Phone\":\"$HomePhone\" \"Work\":\"Address\":\"$WorkAddress\", \"Phone\":\"$WorkPhone\"" ] ] 열 매핑을 사용하는 또 다른 방법은 DynamoDB 형식을 문서 형식으로 사용하는 것입니다. 다음 코드는 속성 매핑에서 attribute-sub-type으로서 dynamodb-map을 사용한 예제입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": "schema-name": "test", "table-name": "customer" "target-table-name": "customer_t", "mapping-parameters": "partition-key-name": "CustomerName", "sort-key-name": "StoreId", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$FirstName$LastName" 198
대상으로 Amazon DynamoDB 사용 "target-attribute-name": "StoreId", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$StoreId" "target-attribute-name": "ContactDetails", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "\"Name\":\"$FirstName\",\"Home\":\"Address\": \"$HomeAddress\",\"Phone\":\"$HomePhone\" \"Work\":\"Address\":\"$WorkAddress\", \"Phone\":\"$WorkPhone\"" ] ] 예제 1: 객체 매핑과 함께 속성 매핑 사용 다음은 MySQL 데이터베이스 테이블 nfl_data와 sport_team에서 NFLTeams와 SportTeams라고 하는 2개의 DynamoDB 테이블로 데이터를 마이그레이션한 예입니다. 이 테이블의 구조와 MySQL 데이터베이스 테이블 의 데이터를 DynamoDB 테이블로 매핑하는 데 사용된 JSON은 다음과 같습니다. MySQL 데이터베이스 테이블 nfl_data의 구조는 다음과 같습니다. mysql> desc nfl_data; +---------------+-------------+------+-----+---------+-------+ Field Type Null Key Default Extra +---------------+-------------+------+-----+---------+-------+ Position varchar(5) YES NULL player_number smallint(6) YES NULL Name varchar(40) YES NULL status varchar(10) YES NULL stat1 varchar(10) YES NULL stat1_val varchar(10) YES NULL stat2 varchar(10) YES NULL stat2_val varchar(10) YES NULL stat3 varchar(10) YES NULL stat3_val varchar(10) YES NULL stat4 varchar(10) YES NULL stat4_val varchar(10) YES NULL team varchar(10) YES NULL +---------------+-------------+------+-----+---------+-------+ MySQL 데이터베이스 테이블 sport_team의 구조는 다음과 같습니다. mysql> desc sport_team; +---------------------------+--------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +---------------------------+--------------+------+-----+---------+----------------+ id mediumint(9) NO PRI NULL auto_increment name varchar(30) NO NULL abbreviated_name varchar(10) YES NULL home_field_id smallint(6) YES MUL NULL sport_type_name varchar(15) NO MUL NULL 199
대상으로 Amazon DynamoDB 사용 sport_league_short_name varchar(10) sport_division_short_name varchar(10) NO YES NULL NULL 테이블 2개를 DynamoDB 테이블 2개에 매핑하는 데 사용된 테이블 매핑 규칙은 다음과 같습니다. "rules":[ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "dms_sample", "table-name": "nfl_data" "rule-action": "include" "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "dms_sample", "table-name": "sport_team" "rule-action": "include" "rule-type":"object-mapping", "rule-id":"3", "rule-name":"mapnfldata", "rule-action":"map-record-to-record", "object-locator": "schema-name":"dms_sample", "table-name":"nfl_data" "target-table-name":"nflteams", "mapping-parameters": "partition-key-name":"team", "sort-key-name":"playername", "exclude-columns": [ "player_number", "team", "Name" ], "attribute-mappings":[ "target-attribute-name":"team", "attribute-type":"scalar", "attribute-sub-type":"string",e "value":"$team" "target-attribute-name":"playername", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"$name" "target-attribute-name":"playerinfo", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"\"number\": \"$player_number\",\"position\": \"$Position\", \"Status\": \"$status\",\"stats\": \"Stat1\": \"$stat1:$stat1_val\",\"stat2\": \"$stat2:$stat2_val\",\"stat3\": \"$stat3:$ 200
대상으로 Amazon DynamoDB 사용 stat3_val\",\"stat4\": \"$stat4:$stat4_val\"" ] "rule-type":"object-mapping", "rule-id":"4", "rule-name":"mapsportteam", "rule-action":"map-record-to-record", "object-locator": "schema-name":"dms_sample", "table-name":"sport_team" "target-table-name":"sportteams", "mapping-parameters": "partition-key-name":"teamname", "exclude-columns": [ "name", "id" ], "attribute-mappings":[ "target-attribute-name":"teamname", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"$name" "target-attribute-name":"teaminfo", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"\"league\": \"$sport_league_short_name\",\"division\": \"$sport_division_short_name\"" ] ] NFLTeams DynamoDB 테이블의 샘플 출력은 다음과 같습니다. "PlayerInfo": "\"Number\": \"6\",\"Position\": \"P\",\"Status\": \"ACT\",\"Stats\": \"Stat1\": \"PUNTS:73\",\"Stat2\": \"AVG:46\",\"Stat3\": \"LNG:67\",\"Stat4\": \"IN 20:31\"", "PlayerName": "Allen, Ryan", "Position": "P", "stat1": "PUNTS", "stat1_val": "73", "stat2": "AVG", "stat2_val": "46", "stat3": "LNG", "stat3_val": "67", "stat4": "IN 20", "stat4_val": "31", "status": "ACT", "Team": "NE" SportsTeams DynamoDB 테이블의 샘플 출력은 다음과 같습니다. 201
대상으로 Amazon DynamoDB 사용 "abbreviated_name": "IND", "home_field_id": 53, "sport_division_short_name": "AFC South", "sport_league_short_name": "NFL", "sport_type_name": "football", "TeamInfo": "\"League\": \"NFL\",\"Division\": \"AFC South\"", "TeamName": "Indianapolis Colts" DynamoDB용 대상 데이터 형식 AWS DMS용 Amazon DynamoDB 엔드포인트는 대다수 DynamoDB 데이터 형식을 지원합니다. 다음 테 이블에는 AWS DMS을(를) 사용하고 기본적으로 AWS DMS 데이터 형식에서 매핑할 때 지원되는 Amazon AWS DMS 대상 데이터 형식이 나와 있습니다. AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. AWS DMS에서 다른 형식의 데이터베이스에서 가져온 데이터를 마이그레이션할 때 원본 데이터베이스의 데 이터 형식을 AWS DMS 데이터 형식이라고 하는 중간 데이터 형식에 매핑합니다. 그런 다음 중간 데이터 형 식을 대상 데이터 형식에 매핑합니다. 다음 테이블에는 각 AWS DMS 데이터 형식과 DynamoDB에서 매핑되 는 데이터 형식이 나와 있습니다. AWS DMS 데이터 형식 DynamoDB 데이터 형식 String String WString String Boolean Boolean Date String DateTime 문자열 INT1 번호 INT2 번호 INT4 번호 INT8 번호 숫자 번호 Real4 번호 Real8 번호 UINT1 번호 UINT2 번호 UINT4 번호 UINT8 번호 CLOB 문자열 202
대상으로 Amazon Kinesis Data Streams 사용 AWS Database Migration Service 대상으로 Amazon Kinesis Data Streams 사용 AWS DMS를 사용하여 데이터를 Amazon Kinesis 데이터 스트림으로 마이그레이션할 수 있습니다. Amazon Kinesis 데이터 스트림은 Amazon Kinesis Data Streams 서비스의 일부입니다. Kinesis 데이터 스트림을 사 용하여 대규모 데이터 레코드 스트림을 실시간으로 수집하고 처리할 수 있습니다. Kinesis 데이터 스트림은 샤드로 구성됩니다. 샤드는 스트림에서 고유하게 식별되는 데이터 레코드 시퀀스입 니다. Amazon Kinesis Data Streams의 샤드에 대한 자세한 내용은 Amazon Kinesis Data Streams 개발자 안 내서의 샤드 단원을 참조하십시오. AWS Database Migration Service은 JSON을 사용하여 Kinesis 데이터 스트림에 레코드를 게시합니다. 변환 중 AWS DMS는 각 레코드를 원본 데이터베이스로부터 JSON 형식의 속성-값 페어로 직렬화합니다. 데이터를 Amazon Kinesis Data Streams로 마이그레이션하려면 AWS Database Migration Service 엔진 버 전 3.1.2 이상을 사용하십시오. 객체 매핑을 사용하여 데이터를 지원되는 데이터 원본에서 대상 스트림으로 마이그레이션합니다. 객체 매핑 을 통해, 데이터 레코드를 스트림에 구조화하는 방법을 결정합니다. 또한 각 테이블에 대한 파티션 키를 정의 합니다. Kinesis Data Streams가 이러한 테이블을 사용해 데이터를 샤드로 그룹화합니다. Kinesis 데이터 스트림을 AWS Database Migration Service의 대상 으로 사용할 때의 사전 조건 Kinesis 데이터 스트림을 AWS DMS의 대상으로 설정하기 전에 IAM 역할을 생성합니다. 이 역할은 AWS DMS이 마이그레이션되고 있는 Kinesis 데이터 스트림을 수임하고 그에 대한 액세스 권한을 부여하도록 허 용해야 합니다. 최소 액세스 권한 집합이 다음 예제 역할 정책에 나와 있습니다. ] "Version": "2012-10-17", "Statement": [ "Sid": "1", "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com" "Action": "sts:assumerole" Kinesis 데이터 스트림으로의 마이그레이션에서 사용하는 역할에는 다음 권한이 있어야 합니다. "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": [ "kinesis:describestream", "kinesis:putrecord", "kinesis:putrecords" 203
대상으로 Amazon Kinesis Data Streams 사용 ] ], "Resource": "arn:aws:kinesis:region:accountid:stream/streamname" AWS Database Migration Service의 대상으로서 Kinesis Data Streams 사용 시 제한 사항 Kinesis Data Streams를 대상으로 사용할 때에는 다음 제한 사항이 적용됩니다. AWS DMS는 각 업데이트를 특정 Kinesis 데이터 스트림 내의 1개의 데이터 레코드로서 원본 데이터베이 스의 단일 레코드에 게시합니다. 따라서 스트림의 데이터를 소비하는 애플리케이션은 트랜잭션 경계의 흔 적을 잃게 됩니다. Kinesis 데이터 스트림은 중복 제거를 지원하지 않습니다. 스트림의 데이터를 소비하는 애플리케이션은 중 복 레코드를 처리해야 합니다. 자세한 내용은 Amazon Kinesis Data Streams 개발자 안내서의 중복 레코드 처리 단원을 참조하십시오. AWS DMS는 다음과 같이 두 가지 형식의 파티션 키를 지원합니다. SchemaName.TableName: 스키마와 테이블 이름의 조합입니다. $AttributeName: JSON 내 한 필드의 값 또는 원본 데이터베이스 내 테이블의 기본 키입니다. 객체 매핑을 사용하여 데이터를 Kinesis 데이터 스트림으로 마이그 레이션 AWS DMS는 테이블 매핑 규칙을 사용하여 데이터를 원본에서 대상 Kinesis 데이터 스트림에 매핑합니다. 데 이터를 대상 스트림에 매핑하기 위해 객체 매핑이라는 테이블 매핑 규칙 유형을 사용합니다. 객체 매핑을 사 용하여 원본의 데이터 레코드를 Kinesis 데이터 스트림에 게시된 데이터 레코드로 매핑하는 방법을 지정합니 다. Kinesis 데이터 스트림에는 파티션 키 외에 별다른 사전 설정 구조가 없습니다. 객체 매핑 규칙을 만들려면 rule-type을 object-mapping으로 지정합니다. 이 규칙은 사용할 객체 매핑 유형을 지정합니다. 이 규칙의 구조는 다음과 같습니다. "rules": [ "rule-type": "object-mapping", "rule-id": "id", "rule-name": "name", "rule-action": "valid object-mapping rule action", "object-locator": "schema-name": "case-sensitive schema name", "table-name": "" ] AWS DMS가 현재 rule-action 파라미터에 대해 유효한 유일한 값으로 map-record-to-record와 map-record-to-document를 지원합니다. Map-record-to-record와 map-record-to-document는 어느 AWS DMS가 exclude-columns 속성 리스트의 일부인 레코드를 기본적으로 지원할 것인지 지정합니 다. 이러한 값은 어떤 식으로든 속성 매핑에 영향을 미치지 않습니다. 204
대상으로 Amazon Kinesis Data Streams 사용 관계형 데이터베이스에서 Kinesis 데이터 스트림으로 마이그레이션할 때 map-record-to-record를 사용합니다. 이러한 규칙 유형은 Kinesis 데이터 스트림의 파티션 키로 관계형 데이터베이스의 taskresourceid.schemaname.tablename 값을 사용하며 원본 데이터베이스의 각 열마다 속성을 생성 합니다. map-record-to-record를 사용할 때 exclude-columns 속성 목록에 소스 테이블의 열이 나열 되지 않은 경우, AWS DMS는 대상 스트림에 해당 속성을 생성합니다. 이러한 해당 속성은 원본 열이 속성 매 핑에 사용되는지 여부와 상관없이 생성됩니다. map-record-to-record를 이해하는 한 가지 방법은 작업 중일 때 관찰하는 것입니다. 이 예에서는 다음 구조와 데이터를 사용하여 관계형 데이터베이스 테이블 행에서 시작한다고 가정합니다. FirstName LastName StoreId HomeAddressHomePhone WorkAddressWorkPhone DateofBirth Randy Marsh 5 221B Baker Street 1234567890 31 Spooner Street, Quahog 9876543210 1988/02/29 이 정보를 Kinesis 데이터 스트림으로 마이그레이션하려면 데이터를 대상 스트림으로 매핑하는 규칙을 생성 해야 합니다. 다음 규칙은 그 매핑 과정을 보여 줍니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": "schema-name": "Test", "table-name": "%" "rule-type": "object-mapping", "rule-id": "2", "rule-name": "DefaultMapToKinesis", "rule-action": "map-record-to-record", "object-locator": "schema-name": "Test", "table-name": "Customers" ] 다음은 Kinesis 데이터 스트림에 생성되는 레코드 형식을 예시합니다. StreamName: XXX PartitionKey: Test.Customers //schmaname.tablename 날짜: //다음의 JSON 메시지 "FirstName": "Randy", "LastName": "Marsh", "StoreId": "5", "HomeAddress": "221B Baker Street", 205
대상으로 Amazon Kinesis Data Streams 사용 "HomePhone": "1234567890", "WorkAddress": "31 Spooner Street, Quahog", "WorkPhone": "9876543210", "DateOfBirth": "02/29/1988" 속성 매핑으로 날짜 재구성 속성 맵을 사용하여 날짜를 Kinesis 데이터 스트림으로 마이그레이션하는 동안 날짜를 재구성할 수 있습니 다. 예를 들어 원본의 필드 몇 개를 대상의 단일 필드로 묶어야 하는 경우도 있을 것입니다. 다음의 속성 맵은 날짜를 재구성하는 방법을 보여줍니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": "schema-name": "Test", "table-name": "%" "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToKinesis", "rule-action": "map-record-to-record", "target-table-name": "CustomerData", "object-locator": "schema-name": "Test", "table-name": "Customers" "mapping-parameters": "partition-key-type": "attribute-name", "partition-key-name": "CustomerName", "exclude-columns": [ "firstname", "lastname", "homeaddress", "homephone", "workaddress", "workphone" ], "attribute-mappings": [ "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "$lastname $firstname" "target-attribute-name": "ContactDetails", "attribute-type": "document", "attribute-sub-type": "json", "value": "Home": "Address": "$homeaddress", "Phone": "$homephone" "Work": 206
대상으로 Amazon Kinesis Data Streams 사용 ] ] "Address": "$workaddress", "Phone": "$workphone" partition-key에 일정한 값을 설정하려면 partition-key 값을 지정합니다. 예를 들어 이 방법을 통해 모든 데이터를 단일 샤드에 저장할 수 있습니다. 다음 매핑은 이러한 접근 방식을 보여줍니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%" "rule-action": "include" "rule-type": "object-mapping", "rule-id": "1", "rule-name": "TransformToKinesis", "rule-action": "map-record-to-document", "object-locator": "schema-name": "Test", "table-name": "Customer" "mapping-parameters": "partition-key": "value": "ConstantPartitionKey" "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ "attribute-name": "CustomerName", "value": "$FirstName$LastName" "attribute-name": "ContactDetails", "value": "Home": "Address": "$HomeAddress", "Phone": "$HomePhone" "Work": "Address": "$WorkAddress", "Phone": "$WorkPhone" 207
대상으로 Amazon Elasticsearch Service 사용 ] ] "attribute-name": "DateOfBirth", "value": "$DateOfBirth" Kinesis Data Streams에 대한 메시지 형식 JSON 출력은 단지 키-값 페어의 목록입니다. AWS DMS는 다음의 예약 필드를 제공하여 Kinesis Data Streams 데이터의 소비를 간소화합니다. RecordType 레코드 유형은 데이터나 제어일 수 있습니다. 데이터 레코드는 원본 내의 실제 행을 나타냅니다. 제어 레 코드는 스트림 내의 중요 이벤트를 나타냅니다(예: 작업의 재시작). 작업 데이터 레코드의 경우, 작업은 create,read, update 또는 delete일 수 있습니다. 데이터 레코드의 경우, 작업은 TruncateTable 또는 DropTable일 수 있습니다. SchemaName 레코드에 대한 원본 스키마입니다. 제어 레코드의 경우, 이 필드는 비워둘 수 있습니다. TableName 레코드에 대한 원본 테이블입니다. 제어 레코드의 경우, 이 필드는 비워둘 수 있습니다. 타임스탬프 JSON 메시지가 구성된 경우의 타임스탬프입니다. 이 필드는 ISO 8601 형식으로 구성되었습니다. Note 특정 테이블을 위한 제어 레코드에 대한 partition-key 값은 TaskId.SchemaName.TableName입니다. 특정 작업을 위한 제어 레코드에 대한 partitionkey 값은 해당 레코드의 TaskId입니다. partition-key 값을 객체 매핑에 지정해도 제어 레코드 에 대한 partition-key에는 영향이 없습니다. Amazon Elasticsearch Service 클러스터를 AWS Database Migration Service의 대상으로 사용 AWS DMS를 사용하여 데이터를 Amazon Elasticsearch Service(Amazon ES)로 마이그레이션할 수 있습니 다. Amazon ES는 손쉽게 Elasticsearch 클러스터를 배포하고, 운영하고, 확장할 수 있게 지원하는 관리형 서 비스입니다. Elasticsearch에서 인덱스와 문서를 사용할 수 있습니다. 인덱스는 문서의 모음이며, 문서는 스칼라 값, 어레 이 및 기타 객체를 포함하는 JSON 객체입니다. Elasticsearch는 JSON 기반의 쿼리 언어를 제공하므로 인덱 스에서 데이터를 쿼리하여 해당 문서를 가져올 수 있습니다. AWS DMS가 Amazon Elasticsearch Service에 대한 대상 엔드포인트를 위해 인덱스를 생성할 때 소스 엔 드포인트의 테이블마다 인덱스를 1개씩 생성합니다. Elasticsearch 인덱스 생성 비용은 다음과 같은 다 208
대상으로 Amazon Elasticsearch Service 사용 양한 요인에 따라 달라집니다. 그러한 요인으로는 생성되는 인덱스 수, 이러한 인덱스 내 데이터의 총량, Elasticsearch가 문서마다 저장하는 소량의 메타데이터 등이 있습니다. 데이터를 Amazon Elasticsearch Service로 마이그레이션하려면 AWS Database Migration Service 엔진 버 전 3.1.2 이상을 사용해야 합니다. 마이그레이션 범위에 적합한 컴퓨팅 및 스토리지 리소스를 갖춘 Elasticsearch 클러스터를 구성합니다. 사용 할 복제 작업에 따라 다음 요소를 고려하는 것이 좋습니다. 전체 데이터 로드의 경우, 마이그레이션할 데이터의 총량과 전송 속도를 고려합니다. 지속적인 변경 사항을 복제하는 경우, 업데이트 빈도와 종단 간 지연 시간 요건을 고려합니다. 또한 Elasticsearch 클러스터의 인덱스 설정을 고려하고 샤드 및 복제본 수를 확인합니다. 관계형 데이터베이스 테이블에서 Amazon ES 인덱스로 마이그레 이션 AWS DMS에서는 Elasticsearch의 스칼라 데이터 형식으로 데이터를 마이그레이션할 수 있습니다. Oracle 또는 MySQL과 같은 관계형 데이터베이스에서 Elasticsearch로 마이그레이션할 때에는 이 데이터를 저장하 는 방법을 다시 구성해야 할 수도 있습니다. AWS DMS는 다음 Elasticsearch 스칼라 데이터 형식을 지원합니다. 부울 날짜 부동 소수점 정수 문자열 AWS DMS는 날짜 형식의 데이터를 문자열 형식으로 변환합니다. 사용자 지정 매핑을 지정하여 이러한 날짜 를 해석할 수 있습니다. AWS DMS는 LOB 데이터 형식의 마이그레이션을 지원하지 않습니다. Amazon Elasticsearch Service를 AWS Database Migration Service의 대상으로 사용하기 위한 사전 조건 Elasticsearch 데이터베이스를 AWS DMS의 대상으로 사용하기에 앞서 AWS Identity and Access Management(IAM) 역할을 생성해야 합니다. 이 역할은 AWS DMS가 대상 엔드포인트에서 Elasticsearch 인 덱스에 액세스하도록 해야 합니다. 최소 액세스 권한 집합이 다음 샘플 역할 정책에 나와 있습니다. "Version": "2012-10-17", "Statement": [ "Sid": "1", "Effect": "Allow", "Principal": "Service": "dms.amazonaws.com" "Action": "sts:assumerole" ] 209
대상으로 Amazon Elasticsearch Service 사용 Elasticsearch로의 마이그레이션에서 사용하는 역할에는 다음 권한이 있어야 합니다. "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": [ "es:eshttpdelete", "es:eshttpget", "es:eshttphead", "es:eshttppost", "es:eshttpput" ], "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" ] 앞의 예에서는 region을 AWS 리전 식별자로 교체하고, account-id를 AWS 계정 ID로 교체하고, domain-name을 Amazon Elasticsearch Service 도메인 이름으로 교체합니다. arn:aws:es:uswest-2:123456789012:domain/my-es-domain를 예로 들 수 있음 Elasticsearch를 AWS DMS의 대상으로 사용 시 추가 연결 속성 Elasticsearch 대상 엔드포인트를 설정 시, 추가 연결 속성을 지정할 수 있습니다. 추가 연결 속성은 키-값 페 어로 지정되고 세미콜론으로 구분됩니다. 다음 테이블에서는 Elasticsearch를 AWS DMS 원본으로 사용하는 경우 제공되는 추가 연결 속성에 관해 설 명합니다. 속성 이름 유효한 값 기본값과 설명 fullloaderrorpercentage 0보다 크고 100 이하인 양의 정수입니다. 10 - 전체 로드 작업의 경우 이 속성이 작업 실패 전에 허용되 는 오류의 임계값을 결정합니다. 예를 들어 소스 엔드포인트 에 1,500개 행이 있으며 이 파라미터가 10으로 설정되어 있다 고 가정합니다. 이 경우, AWS DMS가 대상 엔드포인트에 작 성할 때 150개(행 수의 10%)를 초과하는 오류를 포착하면 작 업이 실패합니다. errorretryduration 0보다 큰 양의 정수입니 다. 300 - 대상 엔드포인트에 오류가 발생하면 AWS DMS가 이를 몇 초 동안 재시도합니다. 그렇지 않으면 테스트가 실패한 것 입니다. AWS Database Migration Service의 대상으로서 Amazon Elasticsearch Service 사용 시 제한 사항 Amazon Elasticsearch Service를 대상으로 사용할 때에는 다음 제한 사항이 적용됩니다. AWS DMS는 비복합 기본 키가 테이블의 복제만을 지원합니다. 원본 테이블의 기본 키는 단일 열로 구성 되어야 합니다. Elasticsearch는 동적 매핑(자동 추정)을 사용하여 데이터 마이그레이션에 사용할 데이터 형식을 결정합니 다. 210
대상으로 Amazon DocumentDB 사용 Elasticsearch는 각 문서를 고유 ID로 저장합니다. 다음은 ID의 예입니다. "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD" 각 문서 ID의 길이는 스토리지 요구 사항에 부합하도록 64바이트입니다. 예를 들어, AWS DMS 소스로부 터 10만 개 행을 마이그레이션한다면, 그에 따른 Elasticsearch 인덱스에는 640만 바이트의 스토리지가 추 가로 필요하게 됩니다. Amazon ES에서는 기본 키 속성 업데이트를 허용하지 않습니다. 대상에 원치 않는 데이터가 발생할 수 있 으므로 변경 데이터 캡처(CDC)와 함께 지속적인 복제 사용 시 이 제한이 중요합니다. CDC 모드에서 기본 키는 32바이트 길이의 SHA256 값으로 매핑됩니다. 이는 사람이 읽을 수 있는 64바이트 문자열로 변환되 며 Elasticsearch 문서 ID로 사용됩니다. AWS DMS가 마이그레이션할 수 없는 항목을 인식하면 Amazon CloudWatch Logs에 오류 메시지를 작성 합니다. 이러한 동작은 오류 메시지를 예외 테이블에 작성하는 다른 AWS DMS 대상 엔드포인트의 경우와 는 다릅니다. Amazon Elasticsearch Service용 대상 데이터 형식 AWS DMS에서 다른 형식의 데이터베이스에서 가져온 데이터를 마이그레이션할 때, 원본 데이터베이스의 데이터 형식을 AWS DMS 데이터 형식이라고 하는 중간 데이터 형식에 매핑합니다. 그런 다음 중간 데이터 형식을 대상 데이터 형식에 매핑합니다. 다음 테이블에는 각 AWS DMS 데이터 형식과 Elasticsearch에서 매 핑되는 데이터 형식이 나와 있습니다. AWS DMS 데이터 형식 Elasticsearch 데이터 형식 부울 boolean 날짜 문자열 시간 날짜 타임스탬프 날짜 INT4 integer Real4 부동 소수점 UINT4 integer AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service 데이터 형식 (p. 356) 단원 을 참조하십시오. AWS Database Migration Service 대상으로 Amazon DocumentDB 사용 AWS DMS를 사용하면 AWS DMS가 지원하는 원본 데이터 엔진에서 Amazon DocumentDB(MongoDB와 호환)으로 데이터를 마이그레이션할 수 있습니다. 소스 엔진은 Amazon RDS, Aurora 또는 Amazon S3 같 은 Amazon 관리형 서비스를 기반으로 할 수 있습니다. 또는 Amazon EC2 또는 온프레미스에서 실행되는 MongoDB와 같이 자체 관리형 데이터베이스를 기반으로 할 수 있습니다. AWS DMS를 사용하여 Amazon DocumentDB 데이터베이스, 모음 또는 문서에 원본 데이터를 복제할 수 있 습니다. 소스 엔드포인트가 MongoDB이면 다음과 같은 추가 연결 속성을 활성화해야 합니다. 211
대상으로 Amazon DocumentDB 사용 nestinglevel=none extractdocid=false 자세한 내용은 MongoDB를 AWS DMS에서 소스로 사용 시 추가 연결 속성 (p. 134) 단원을 참조하십시오. MongoDB는 이진 JSON(BSON) 형식으로 데이터를 저장합니다. AWS DMS는 Amazon DocumentDB에서 지원되는 BSON 데이터 유형을 모두 지원합니다. 이러한 데이터 유형 목록은 Amazon DocumentDB 개발자 안내서의 지원되는 MongoDB API, 작업 및 데이터 유형을 참조하십시오. 소스 엔드포인트가 관계형 데이터베이스이면 AWS DMS가 다음과 같이 Amazon DocumentDB에 데이터베 이스 객체를 매핑합니다. 관계형 데이터베이스 또는 데이터베이스 스키마는 Amazon DocumentDB 데이터베이스에 매핑됩니다. 관계형 데이터베이스 내의 테이블은 Amazon DocumentDB의 모음에 매핑됩니다. 관계형 테이블의 레코드는 Amazon DocumentDB의 문서에 매핑됩니다. 각 문서는 원본 레코드의 데이터 로 구성됩니다. 소스 엔드포인트가 Amazon S3이면 결과로 만들어지는 Amazon DocumentDB 객체는 Amazon S3을 위한 AWS DMS 매핑 규칙에 해당합니다. 예를 들어 다음 URI를 고려해 보십시오. s3://mybucket/hr/employee 이 경우, AWS DMS는 다음과 같이 mybucket의 객체를 Amazon DocumentDB로 매핑합니다. URI의 최상위 부분(hr)은 Amazon DocumentDB 데이터베이스로 매핑됩니다. 다음 URI 부분(employee)은 Amazon DocumentDB 모음으로 매핑됩니다. employee의 각 객체는 Amazon DocumentDB의 문서에 매핑됩니다. Amazon S3의 매핑 규칙에 대한 자세한 내용은 Amazon Simple Storage Service을 AWS DMS용 소스로 사 용 (p. 136) 단원을 참조하십시오. 마이그레이션 프로세스에 대한 안내를 포함하여 Amazon DocumentDB를 AWS DMS의 대상으로 사용하는 방법에 대한 자세한 내용은 다음 단원을 참조하십시오. 주제 원본에서 Amazon DocumentDB 대상으로 데이터 매핑 (p. 212) Amazon DocumentDB를 대상으로 지속적 복제 (p. 215) Amazon DocumentDB을 대상으로 사용할 때 적용되는 제한 사항 (p. 216) Amazon DocumentDB용 대상 데이터 형식 (p. 217) 안내서: MongoDB에서 Amazon DocumentDB로 마이그레이션 (p. 218) 원본에서 Amazon DocumentDB 대상으로 데이터 매핑 AWS DMS는 소스 엔드포인트에서 레코드를 읽고 판독한 데이터를 토대로 JSON 문서를 구성합니다. 각 JSON 문서에서 AWS DMS는 고유한 식별자 역할을 하는 _id 필드를 확인해야 합니다. 그런 다음, _id 필드 를 기본 키로 사용하여 JSON 문서를 Amazon DocumentDB 모음에 기록합니다. 단일 열인 원본 데이터 단일 열로 구성된 원본 데이터는 문자열 형식으로 간주됩니다. (소스 엔진에 따라 실제 데이터 형식은 VARCHAR, NVARCHAR, TEXT, LOB, CLOB 등이 될 수 있습니다.) AWS DMS는 데이터가 유효한 JSON 문 서라고 가정하고 데이터를 Amazon DocumentDB에 있는 그대로 복제합니다. 212
대상으로 Amazon DocumentDB 사용 그 결과로 생성된 JSON 문서에 _id라는 필드가 포함되어 있는 경우, 해당 필드는 Amazon DocumentDB에 서 고유한 _id로 사용됩니다. JSON에 _id 필드가 포함되어 있지 않으면 Amazon DocumentDB에서 _id 값이 자동으로 생성됩니다. 다중 열인 소스 데이터 원본 데이터가 여러 개의 열로 구성된 경우, AWS DMS는 이러한 모든 열에서 JSON 문서를 구성합니다. 해 당 문서에 대한 _id 필드를 확인하기 위해 AWS DMS는 다음과 같이 진행됩니다. 열 중 하나의 이름이 _id이면 해당 열의 데이터가 대상 _id로 사용됩니다. _id 열은 없지만 원본 데이터가 기본 키나 고유한 인덱스를 가지고 있으면 AWS DMS는 _id 값으로 해당 키 또는 인덱스 값을 사용합니다. 또한 기본 키 또는 고유 인덱스에서 나온 데이터는 JSON 문서에 명시적 필드 형태로 나타납니다. _id 열과 기본 키 또는 고유 인덱스가 없으면 Amazon DocumentDB에서 _id 값이 자동으로 생성됩니다. 대상 엔드포인트에서 데이터 형식을 강제로 적용 AWS DMS는 Amazon DocumentDB 대상 엔드포인트에 기록할 때 데이터 구조를 수정할 수 있습니다. 소스 엔드포인트에서 열과 테이블의 이름을 변경하거나 작업 실행 시 적용되는 변환 규칙을 제공하여 이러한 변경 을 요청할 수 있습니다. 중첩 JSON 문서(json_ Prefix) 사용 데이터 형식을 강제로 적용하려면 직접, 또는 변환 기능을 사용해 원본 열 이름에 json_(즉, json_columnname) 접두사를 붙일 수 있습니다. 이 경우, 열은 문자열 필드가 아니라 대상 문서 내에 중첩 JSON 문서 형태로 생성됩니다. 예를 들어 MongoDB 원본 엔드포인터에서 다음 문서를 마이그레이션하고 싶다고 가정해 봅시다. "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": ""Home": "Address": "Boston","Phone": "1111111""Work": "Address": "Boston", "Phone": "2222222222"" 원본 데이터 유형을 강제로 적용하지 않으면 기본적으로 포함된 ContactDetails 문서가 문자열 형태로 마이그레이션됩니다. "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "\"Home\": \"Address\": \"Boston\",\"Phone\": \"1111111\"\"Work \": \"Address\": \"Boston\", \"Phone\": \"2222222222\"" 하지만 JSON 객체에 ContactDetails를 강제 적용하기 위한 변환 규칙을 추가할 수 있습니다. 예를 들어 원래의 원본 열 이름이 ContactDetails라고 가정해 봅시다. 또한 이름이 변경된 원 본 열이 json_contactdetails가 된다고 해봅시다. AWS DMS는 다음과 같이 중첩 JSON으로 ContactDetails 필드를 복제합니다. "_id": "1", 213
대상으로 Amazon DocumentDB 사용 "FirstName": "John", "LastName": "Doe", "ContactDetails": "Home": "Address": "Boston", "Phone": "1111111111" "Work": "Address": "Boston", "Phone": "2222222222" JSON 어레이(array_ Prefix) 사용 데이터 형식을 강제로 적용하려면 직접, 또는 변환 기능을 사용해 열 이름에 array_(즉, array_columnname) 접두사를 붙일 수 있습니다. 이 경우, AWS DMS는 해당 열을 JSON 어레이로 간주하 고 대상 문서에서와 같이 이를 생성합니다. MongoDB 원본 엔드포인터에서 다음 문서를 마이그레이션하고 싶다고 가정해 봅시다. "_id" : "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": ["Boston", "New York"], "ContactPhoneNumbers": ["1111111111", "2222222222"] 원본 데이터 유형을 강제로 적용하지 않으면 기본적으로 포함된 ContactDetails 문서가 문자열 형태로 마이그레이션됩니다. "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": "[\"Boston\", \"New York\"]", "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]" 하지만 JSON 어레이에 ContactAddress 및 ContactPhoneNumbers를 강제 적용하기 위한 변환 규칙을 추가할 수 있습니다(아래 표 참조). 원래의 원본 열 이름 이름이 변경된 원본 열 ContactAddress array_contactaddress ContactPhoneNumbers array_contactphonenumbers AWS DMS는 다음과 같이 ContactAddress 및 ContactPhoneNumbers를 복제합니다. 214
대상으로 Amazon DocumentDB 사용 "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": [ "Boston", "New York" ], "ContactPhoneNumbers": [ "1111111111", "2222222222" ] TLS를 사용하여 Amazon DocumentDB에 연결 기본적으로 새로 생성한 Amazon DocumentDB 클러스터는 TLS(전송 계층 보안)를 사용한 보안 연결만 허용 합니다. TLS가 활성화되면 Amazon DocumentDB에 대한 모든 연결에 퍼블릭 키가 필요합니다. AWS에 호스팅된 Amazon S3 버킷에서 rds-combined-ca-bundle.pem 파일 형태로 Amazon DocumentDB에 대한 퍼블릭 키를 다운로드할 수 있습니다. 이.pem 파일을 다운로드한 후에는 다음과 같이 AWS DMS로 해당 파일을 가져올 수 있습니다. AWS Management 콘솔 퍼블릭 키(.pem) 파일을 가져오려면 1. https://console.aws.amazon.com/dms에서 AWS DMS 콘솔을 엽니다. 2. 탐색 창에서 [Certificates]를 선택합니다. 3. 인증서 가져오기를 선택하고 다음과 같이 합니다. 인증서 식별자에 해당 인증서의 고유 이름(예: docdb-cert)을 입력합니다. 파일 가져오기에서.pem 파일이 저장된 위치로 이동합니다. 원하는 대로 설정이 되었으면 새 CA 인증서 추가를 선택합니다. AWS CLI 다음 예와 같이 aws dms import-certificate 명령을 사용하십시오. aws dms import-certiciate \ --certificate-identifier docdb-cert \ --certificate-pem file://./rds-combined-ca-bundle.pem AWS DMS 대상 엔드포인트를 생성할 때 인증서 식별자(예: docdb-cert)를 제공합니다. 또한 SSL 모드 파 라미터를 verify-full로 설정합니다. Amazon DocumentDB를 대상으로 지속적 복제 지속적 복제가 활성화되면 AWS DMS는 Amazon DocumentDB의 문서가 원본과 동기화되었는지 확인합니 다. 원본 레코드가 생성 또는 업데이트되면 AWS DMS는 먼저 다음을 수행하여 어떤 Amazon DocumentDB 레코드가 영향을 받는지 확인해야 합니다. 원본 레코드에 _id라는 값이 있으면 해당 열의 값이 Amazon DocumentDB 모음에서 해당되는 _id를 확 인합니다. 215
대상으로 Amazon DocumentDB 사용 _id 열은 없지만 원본 데이터가 기본 키나 고유 인덱스를 가지고 있으면 AWS DMS는 Amazon DocumentDB 모음을 위한 _id로 해당 키나 인덱스 값을 사용합니다. 원본 레코드에 _id 열, 기본 키 또는 고유 인덱스가 없으면 AWS DMS는 Amazon DocumentDB 모음의 해 당 필드에 모든 원본 열을 일치시킵니다. 새로운 원본 레코드가 생성되면 AWS DMS는 해당 문서를 Amazon DocumentDB에 기록합니다. 기존 원본 레코드가 업데이트되면 AWS DMS는 Amazon DocumentDB의 대상 문서에서 해당 필드를 업데이트합니다. 대상 문서에는 존재하지만 원본 레코드에 존재하지 않는 필드는 그대로 남아 있습니다. 원본 레코드가 삭제되면 AWS DMS는 Amazon DocumentDB에서 해당 문서를 삭제합니다. 원본에서 구조 변경(DDL) 지속적 복제가 이루어지면서 원본 데이터 구조(테이블, 열 등)의 변경 사항이 Amazon DocumentDB의 구조 에 전파됩니다. 관계형 데이터베이스에서 이러한 변경 사항은 데이터 정의 언어(DDL) 명령문을 사용해 시작 됩니다. AWS DMS가 이러한 변경 사항을 Amazon DocumentDB에 어떻게 전파하는지 다음 표에서 확인할 수 있습니다. 원본의 DDL Amazon DocumentDB 대상에서의 효과 CREATE TABLE 빈 모음을 생성합니다. 테이블 이름을 변경하는 명령문(RENAME TABLE, ALTER TABLE...RENAME 등) 모음의 이름을 바꿉니다. TRUNCATE TABLE 해당 모음에서 모든 문서를 제거합니다(단, HandleSourceTableTruncated가 true인 경우 에만). 자세한 내용은 변경 처리 DDL을 다루기 위한 작업 설정 (p. 247) 단원을 참조하십시오. DROP TABLE 해당 모음을 삭제합니다(단, HandleSourceTableDropped가 true인 경우에 만). 자세한 내용은 변경 처리 DDL을 다루기 위한 작 업 설정 (p. 247) 단원을 참조하십시오. 테이블에 열을 추가하는 명령문(ALTER TABLE...ADD 등) DDL 명령문이 무시되면서 경고가 발행됩니다. 첫 번째 INSERT가 원본에서 수행될 때 대상 문서에 새 필드가 추가됩니다. ALTER TABLE...RENAME COLUMN DDL 명령문이 무시되면서 경고가 발행됩니다. 첫 번째 INSERT가 원본에서 수행될 때 대상 문서에 새 로운 이름의 필드가 추가됩니다. ALTER TABLE...DROP COLUMN DDL 명령문이 무시되면서 경고가 발행됩니다. 열 데이터 형식을 변경하는 명령문(ALTER COLUMN...MODIFY 등) DDL 명령문이 무시되면서 경고가 발행됩니다. 첫 번째 INSERT가 원본에서 새 데이터 형식으로 수행 될 때 이러한 새 데이터 형식을 가진 필드와 함께 대 상 문서가 생성됩니다. Amazon DocumentDB을 대상으로 사용할 때 적용되는 제한 사항 Amazon DocumentDB를 AWS DMS의 대상으로 사용할 때는 다음 제한 사항이 적용됩니다. Amazon DocumentDB에서 모음 이름에는 달러 기호($)가 포함될 수 없습니다. 또한 데이터베이스 이름에 는 어떤 Unicode 문자도 포함될 수 없습니다. 216
대상으로 Amazon DocumentDB 사용 AWS DMS는 여러 원본 테이블을 단일 Amazon DocumentDB 모음에 병합하는 기능을 지원하지 않습니 다. AWS DMS가 기본 키가 없는 원본 데이터에서 변경 사항을 처리할 때 해당 테이블의 모든 LOB 열이 무시 됩니다. Change table(변경 테이블) 옵션이 활성화되고 AWS DMS에 "_id"라는 원본 열이 나타나면 해당 열은 변경 테이블에 " id"(2개의 밑줄)로 표시됩니다. 소스 엔드포인트로 Oracle을 선택하면 Oracle 원본에서 전체 보충 로깅을 활성화해야 합니다. 그렇지 않으 면 변경되지 않은 원본의 열이 있을 경우에 Amazon DocumentDB에 데이터가 null 값으로 로드됩니다. Amazon DocumentDB용 대상 데이터 형식 다음 테이블에서 AWS DMS를 사용할 때 지원되는 Amazon DocumentDB 대상 데이터 형식과 AWS DMS 데이터 형식에서의 기본 매핑을 확인할 수 있습니다. AWS DMS 데이터 형식에 대한 자세한 내용은 AWS Database Migration Service 데이터 형식 (p. 356) 단원을 참조하십시오. AWS DMS 데이터 형식 Amazon DocumentDB 데이터 형식 BOOLEAN 부울 BYTES 이진 데이터 DATE 날짜 TIME 문자열(UTF8) DATETIME 날짜 INT1 32비트 정수 INT2 32비트 정수 INT4 32비트 정수 INT8 64비트 정수 NUMERIC 문자열(UTF8) REAL4 Double REAL8 Double STRING 데이터가 JSON으로 인식되면 AWS DMS는 문서 형태로 Amazon DocumentDB에 이를 마이그레이션합니다. 그렇지 않으면 데이터가 문자 열(UTF8)로 매핑됩니다. UINT1 32비트 정수 UINT2 32비트 정수 UINT4 64비트 정수 UINT8 문자열(UTF8) WSTRING 데이터가 JSON으로 인식되면 AWS DMS는 문서 형태로 Amazon DocumentDB에 이를 마이그레이션합니다. 그렇지 않으면 데이터가 문자 열(UTF8)로 매핑됩니다. BLOB 이진수 217
대상으로 Amazon DocumentDB 사용 AWS DMS 데이터 형식 Amazon DocumentDB 데이터 형식 CLOB 데이터가 JSON으로 인식되면 AWS DMS는 문서 형태로 Amazon DocumentDB에 이를 마이그레이션합니다. 그렇지 않으면 데이터가 문자 열(UTF8)로 매핑됩니다. NCLOB 데이터가 JSON으로 인식되면 AWS DMS는 문서 형태로 Amazon DocumentDB에 이를 마이그레이션합니다. 그렇지 않으면 데이터가 문자 열(UTF8)로 매핑됩니다. 안내서: MongoDB에서 Amazon DocumentDB로 마이그레이션 다음 안내서에 따라 MongoDB에서 Amazon DocumentDB(MongoDB와 호환)으로의 마이그레이션 과정을 연습해 볼 수 있습니다. 이 안내서에서는 다음을 수행합니다. Amazon EC2 인스턴스에 MongoDB를 설치합니다. MongoDB에 샘플 데이터를 채웁니다. AWS DMS 복제 인스턴스, 소스 엔드포인트(MongoDB용) 및 대상 엔드포인트(Amazon DocumentDB용) 를 생성합니다. AWS DMS 작업을 실행하여 소스 엔드포인트에서 대상 엔드포인트로 데이터를 마이그레이션합니다. Important 시작에 앞서 기본 가상 사설 클라우드(VPC)에서 Amazon DocumentDB 클러스터를 시작합니다. 자 세한 내용은 Amazon DocumentDB 개발자 안내서의 시작하기를 참조하십시오. 주제 1단계: Amazon EC2 인스턴스 시작 (p. 218) 2단계: MongoDB Community Edition 설치 및 구성 (p. 219) 3단계: AWS DMS 복제 인스턴스 생성 (p. 220) 4단계: 원본 및 대상 엔드포인트 생성 (p. 221) 5단계: 마이그레이션 작업 생성 및 실행 (p. 223) 1단계: Amazon EC2 인스턴스 시작 이 안내서에서는 Amazon EC2 인스턴스를 기본 VPC로 시작합니다. Amazon EC2 인스턴스를 시작하려면 1. 2. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다. Launch Instance(인스턴스 시작)를 선택하고 다음과 같이 합니다. a. b. c. d. e. f. Choose an Amazon Machine Image(AMI)(Amazon 머신 이미지(AMI) 선택) 페이지의 AMI 목록 맨 위에 있는 Amazon Linux AMI로 이동하여 선택을 선택합니다. 인스턴스 유형 선택 페이지의 인스턴스 형식 목록 맨 위에 있는t2.micro를 선택합니다. 그런 다음 [Next: Configure Instance Details]를 선택합니다. 인스턴스 세부 정보 구성 페이지의 네트워크에서 기본 VPC를 선택합니다. 그런 다음 Next: Add Storage(다음: 스토리지 추가)를 선택합니다. 스토리지 추가 페이지에서 Next: Add Tags(다음: 태그 추가)를 선택하여 이 단계를 건너뜁니다. 태그 추가 페이지에서 Next: Configure Security Group(다음: 보안 그룹 구성)을 선택하여 이 단계를 건너뜁니다. 보안 그룹 구성 페이지에서 다음을 수행하십시오. 218
대상으로 Amazon DocumentDB 사용 1. [Select an existing security group]을 선택합니다. 2. 보안 그룹 목록에서 [default]를 선택합니다. 이렇게 하여 VPC의 기본 보안 그룹을 선택합니다. 기본적으로 보안 그룹은 TPC 포트 22에서 인바운드 SSH(Secure Shell) 연결을 수락합니다. 이 설정이 VPC에 맞지 않으면 이 규칙을 추가합니다. 자세한 내용은 Amazon VPC 사용 설명서의 Amazon VPC란 무엇입니까?를 참조하십시오. 3. [Next: Review and Launch]를 선택합니다. g. 3. 정보를 검토한 후 시작하기를 선택합니다. [Select an existing key pair or create a new key pair] 창에서 다음 중 하나를 수행합니다. Amazon EC2 키 페어가 없는 경우 새 키 페어 만들기를 선택하고 지침을 따릅니다. 프라이빗 키 파일 (.pem 파일)을 다운로드하라는 메시지가 표시됩니다. 나중에 Amazon EC2 인스턴스에 로그인할 때 이 파일이 필요합니다. Amazon EC2 키 페어가 이미 있으면 키 페어 선택으로 이동하여 목록에서 키 페어를 선택합니다. Amazon EC2 인스턴스에 로그인하려면 프라이빗 키 파일(.pem 파일)이 있어야 합니다. 4. 키 페어를 구성한 후 인스턴스 시작을 선택합니다. 콘솔 탐색 창에서 EC2 대시보드를 선택한 후 시작한 인스턴스를 선택합니다. 하단 창의 설명 탭에서 인 스턴스의 퍼블릭 DNS를 찾습니다(예: ec2-11-22-33-44.us-west-2.compute.amazonaws.com). Amazon EC2 인스턴스가 사용 가능한 상태가 되는 데 몇 분 정도 걸립니다. 5. ssh 명령을 사용하여 Amazon EC2 인스턴스에 로그인합니다(아래 예 참조). chmod 400 my-keypair.pem ssh -i my-keypair.pem ec2-user@public-dns-name 프라이빗 키 파일(.pem 파일)과 EC2 인스턴스의 퍼블릭 DNS 이름을 지정합니다. 로그인 ID는 ec2user입니다. 암호는 필요하지 않습니다. EC 인스턴스 연결에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 SSH를 사용하 여 Linux 인스턴스 연결을 참조하십시오. 2단계: MongoDB Community Edition 설치 및 구성 1단계: Amazon EC2 인스턴스 시작 (p. 218)에서 시작한 Amazon EC2 인스턴에서 이러한 단계들을 수행 합니다. EC2 인스턴스에서 MongoDB Community Edition을 설치 및 구성하려면 1. MongoDB 설명서의 Amazon Linux에 MongoDB Community Edition 설치로 이동하여 여기 나온 지침을 따릅니다. 2. 기본적으로 MongoDB 서버(mongod)는 IP 주소 127.0.0.1(localhost)에서 루프백 연결만 허용합니다. Amazon VPC의 다른 곳에서 연결을 허용하려면 다음을 수행하십시오. a. /etc/mongod.conf 파일을 편집하고 다음 줄을 찾아봅니다. # network interfaces net: port: 27017 bindip: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindipall setting. b. 다음과 같이 bindip 줄을 수정합니다. bindip: public-dns-name 219
대상으로 Amazon DocumentDB 사용 c. public-dns-name을 인스턴스의 실제 퍼블릭 DNS 이름으로 바꿉니다(예: ec2-11-22-33-44.us-west-2.compute.amazonaws.com). d. /etc/mongod.conf 파일을 저장하고 mongod를 다시 시작합니다. sudo service mongod restart 3. 다음과 같이 MongoDB 인스턴스에 데이터를 채웁니다. a. wget 명령을 사용하여 샘플 데이터가 포함된 JSON 파일을 다운로드합니다. wget http://media.mongodb.org/zips.json b. mongoimport 명령을 사용하여 새 데이터베이스(zips-db)로 데이터를 가져옵니다. mongoimport --host public-dns-name:27017 --db zips-db --file zips.json c. 가져오기가 완료되면 mongo 셸을 사용하여 MongoDB를 연결하고 해당 데이터가 성공적으로 로드 되었는지 확인합니다. mongo --host public-dns-name:27017 d. public-dns-name을 인스턴스의 실제 퍼블릭 DNS 이름으로 바꿉니다. e. mongo 셸 프롬프트에 다음 명령을 입력합니다. use zips-db db.zips.count() db.zips.aggregate( [ $group: _id: state: "$state", city: "$city" pop: $sum: "$pop" $group: _id: "$_id.state", avgcitypop: $avg: "$pop" ] ) 출력은 다음과 같을 것입니다. 데이터베이스의 이름(zips-db) zips 모음(29353)의 문서 수 각 주 도시의 평균 인구 f. 다음 명령을 사용해 mongo 셸에서 나와서 명령 프롬프트로 돌아갑니다. exit 3단계: AWS DMS 복제 인스턴스 생성 AWS DMS에서 복제를 수행하려면 복제 인스턴스가 필요합니다. AWS DMS 복제 인스턴스를 생성하려면 1. https://console.aws.amazon.com/dms/에서 AWS DMS 콘솔을 엽니다. 2. 탐색 창에서 [Replication instances]를 선택합니다. 3. 복제 인스턴스 생성을 선택하고 다음 정보를 입력합니다. 이름에 mongodb2docdb를 API입력합니다. 버전 API Version 2016-01-01 220
대상으로 Amazon DocumentDB 사용 Description(설명)에 MongoDB to Amazon DocumentDB replication instance를 입력합니 다. 인스턴스 클래스에서 기본값을 그대로 둡니다. 엔진 버전에서 기본값을 그대로 둡니다. VPC에서 기본 VPC를 선택합니다. 다중 AZ에서 아니요를 선택합니다. 퍼블릭 액세스 가능에서 이 옵션을 활성화합니다. 원하는 대로 설정이 되었으면 복제 인스턴스 생성을 선택합니다. Note 사용 가능한 상태가 되면 복제 인스턴스의 사용을 시작할 수 있습니다. 몇 분 정도 걸릴 수 있습니 다. 4단계: 원본 및 대상 엔드포인트 생성 소스 엔드포인트는 Amazon EC2 인스턴스에서 MongoDB 설치를 실행하기 위한 엔드포인트입니다. 소스 엔드포인트를 생성하려면 1. 2. https://console.aws.amazon.com/dms/에서 AWS DMS 콘솔을 엽니다. 탐색 창에서 [Endpoints]를 선택합니다. 3. 엔드포인트 생성을 선택하고 다음 정보를 입력합니다. 엔드포인트 유형에서 소스를 선택합니다. 엔드포인트 식별자에 기억하기 쉬운 이름(예: mongodb-source)을 입력합니다. 소스 엔진에서 mongodb를 선택합니다. 서버 이름에 Amazon EC2 인스턴스의 퍼블릭 DNS 이름(예: ec2-11-22-33-44.uswest-2.compute.amazonaws.com)을 입력합니다. 포트에 27017을 입력합니다. SSL 모드에서 없음을 선택합니다. Authentication mode(인증 모드)에서 없음을 선택합니다. 데이터베이스 이름에 zips-db를 입력합니다. Authentication mechanism(인증 메커니즘),에서 기본값을 선택합니다. Metadata mode(메타데이터 모드)에서 문서를 선택합니다. 원하는 대로 설정이 되었으면 엔드포인트 생성을 선택합니다. 다음 단계로, 대상 엔드포인트를 생성합니다. 이 엔드포인트는 이미 실행 중인 Amazon DocumentDB 클러스 터를 위한 것입니다. Amazon DocumentDB 클러스터 시작에 대한 자세한 내용은 Amazon DocumentDB 개 발자 안내서의 시작하기를 참조하십시오. Important 진행하기 전에 다음을 수행하십시오. Amazon DocumentDB 클러스터에서 사용할 수 있는 마스터 사용자 이름과 암호가 있어야 합니 다. AWS DMS와 연결이 가능하도록 사용할 수 있는 Amazon DocumentDB 클러스터의 DNS 이름 및 포트 번호가 있어야 합니다. 이 정보를 확인하려면 다음과 같은 AWS CLI 명령을 사용하여 cluster-id를 Amazon DocumentDB클러스터의 이름으로 바꿉니다. 221
대상으로 Amazon DocumentDB 사용 aws docdb describe-db-clusters \ --db-cluster-identifier cluster-id \ --query "DBClusters[*].[Endpoint,Port]" Amazon DocumentDB에서 SSL 연결을 확인하는 데 사용할 수 있는 인증서 번들을 다운로드합니 다. 이를 위해 다음 명령을 입력합니다. wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem 대상 엔드포인트를 생성하려면 1. 탐색 창에서 [Endpoints]를 선택합니다. 2. 엔드포인트 생성을 선택하고 다음 정보를 입력합니다. 엔드포인트 유형에서 대상을 선택합니다. 엔드포인트 식별자에 기억하기 쉬운 이름(예: docdb-target)을 입력합니다. 대상 엔진에서 docdb를 선택합니다. 서버 이름에 Amazon DocumentDB 클러스터의 DNS 이름을 입력합니다. 포트에 Amazon DocumentDB 클러스터의 포트 번호를 입력합니다. SSL 모드에서 verify-full을 선택합니다. CA 인증서에서 새 CA 인증서 추가를 선택하고 인증서 식별자에 rds-combined-ca-bundle을 입 력합니다. 파일 가져오기에서 다운로드한 rds-combined-ca-bundle.pem 파일로 이동합니다. 이동이 완료되면 새 CA 인증서 추가를 선택합니다. 사용자 이름에 Amazon DocumentDB 클러스터의 마스터 사용자 이름을 입력합니다. 암호에 Amazon DocumentDB 클러스터의 마스터 암호를 입력합니다. 데이터베이스 이름에 zips-db를 입력합니다. 원하는 대로 설정이 되었으면 엔드포인트 생성을 선택합니다. 원본 및 대상 엔드포인트가 생성되었으면 이들이 올바르게 작동하는지 테스트를 합니다. 또한 AWS DMS가 각 엔드포인트의 데이터에비스 객체에 액세스할 수 있도록 엔드포인트의 스키마를 새로 고침합니다. 엔드포인트를 테스트하려면 1. 탐색 창에서 [Endpoints]를 선택합니다. 2. 3. 소스 엔드포인트(mongodb-source)를 선택한 다음 연결 테스트를 선택합니다. 복제 인스턴스(mongodb2docdb)를 선택한 다음 테스트 실행을 선택합니다. 테스트 완료까지 몇 분이 소요되며 테스트가 완료되면 상태가 성공으로 바뀝니다. 상태가 실패로 바뀌면 오류 메시지를 검토합니다. 오류가 있으면 이를 수정하고 엔드포인트를 다시 테스 트합니다. Note 대상 엔드포인트(docdb-target)에 대해 이 절차를 반복합니다. 스키마를 새로 고침하려면 1. 탐색 창에서 [Endpoints]를 선택합니다. 2. 소스 엔드포인트(mongodb-source)를 선택한 다음 스키마 새로 고침을 선택합니다. 222
원본 및 대상 엔드포인트 생성 3. 복제 인스턴스(mongodb2docdb)를 선택한 다음 스키마 새로 고침을 선택합니다. Note 대상 엔드포인트(docdb-target)에 대해 이 절차를 반복합니다. 5단계: 마이그레이션 작업 생성 및 실행 MongoDB에서 Amazon DocumentDB로 zips 데이터를 마이그레이션할 수 있도록 AWS DMS 마이그레이 션 작업을 시작할 준비가 되었습니다. 1. https://console.aws.amazon.com/dms/에서 AWS DMS 콘솔을 엽니다. 2. 탐색 창에서 [Tasks]를 선택합니다. 3. 작업 생성을 선택하고 다음 정보를 입력합니다. 작업 이름에 기억하기 쉬운 이름(예: my-dms-task)을 입력합니다. 복제 인스턴스에서 3단계: AWS DMS 복제 인스턴스 생성 (p. 220)에서 생성한 복제 인스턴스를 선 택합니다. 소스 엔드포인트에서 4단계: 원본 및 대상 엔드포인트 생성 (p. 221)에서 생성한 소스 엔드포인트를 선택합니다. 대상 엔드포인트에서 4단계: 원본 및 대상 엔드포인트 생성 (p. 221)에서 생성한 대상 엔드포인트를 선택합니다. 마이그레이션 유형에서 Migrate existing data(기존 데이터 마이그레이션)를 선택합니다. 생성 시 작업 시작에서 이 옵션을 활성화합니다. 작업 설정 섹션에서 모든 옵션을 기본값으로 둡니다. 테이블 매핑 섹션에서 Guided(가이드) 탭을 선택하고 다음 정보를 입력합니다. Schema name is(스키마 이름)에서 Enter a schema(스키마 입력)를 선택합니다. Schema name is like(스키마 이름 유형)에서 이 값을 기본 설정값(%)으로 그대로 둡니다. Table name is like(테이블 이름 유형)에서 이 값을 기본 설정값(%)으로 그대로 둡니다. Add selection rule(선택 규칙 추가)을 선택하여 정보가 올바른지 확인합니다. 원하는 대로 설정되었으면 작업 생성을 선택합니다. 이제 AWS DMS는 MongoDB에서 Amazon DocumentDB로 데이터 마이그레이션을 시작합니다. 작업 상태가 시작 중에서 실행 중으로 바뀝니다. AWS DMS 콘솔에서 작업을 선택하여 진행 과정을 모니터링할 수 있습 니다. 몇 분 후, 상태가 로드 완료로 바뀝니다. Note 마이그레이션이 완료되면 mongo 셸을 사용하여 Amazon DocumentDB 클러스터를 연결해 zips 데이터를 볼 수 있습니다. 자세한 내용은 Amazon DocumentDB 개발자 안내서의 mongo 셸을 사용 한 Amazon DocumentDB 클러스터 액세스를 참조하십시오. 원본 및 대상 엔드포인트 생성 복제 인스턴스를 생성할 때 원본 및 대상 엔드포인트를 생성할 수 있습니다. 또는 복제 인스턴스가 생 성된 후에 엔드포인트를 생성할 수 있습니다. 원본과 대상 데이터 스토어는 Amazon Elastic Compute 223
원본 및 대상 엔드포인트 생성 Cloud(Amazon EC2) 인스턴스, Amazon Relational Database Service(Amazon RDS) DB 인스턴스 또는 온 프레미스 데이터베이스에 있을 수 있습니다. 다음 절차에서는 AWS DMS 콘솔 마법사를 이미 선택했다고 가정합니다. 이 단계를 진행하려면 AWS DMS 콘솔의 탐색 창에서 엔드포인트를 선택한 후 엔드포인트 생성을 선택합니다. 콘솔 마법사를 사용할 때에는 동일한 페이지에서 원본과 대상 엔드포인트를 모두 생성합니다. 콘솔 마법사를 사용하지 않을 때에는 각 엔 드포인트를 별도로 생성합니다. AWS 콘솔을 사용하여 원본 또는 대상 데이터베이스 엔드포인트를 지정하려면 1. [Connect source and target database endpoints] 페이지에서 원본 또는 대상 데이터베이스에 대한 연결 정보를 지정합니다. 다음 표는 설정에 대한 설명입니다. 옵션 수행할 작업 [Endpoint type] 이 엔드포인트가 원본 엔드포인트인지, 아니면 대상 엔드포 인트인지 선택하십시오. Select RDS DB Instance(RDS DB 인스 턴스 선택) 엔드포인트가 Amazon RDS DB 인스턴스인 경우 이 옵션을 선택합니다. [Endpoint identifier] 엔드포인트를 식별하는 데 사용할 이름을 입력합니다. 이름 에 oracle-source 또는 PostgreSQL-target과 같은 엔드포인트 유형을 포함해야 합니다. 모든 복제 인스턴스에 서 이 이름은 고유해야 합니다. 224
원본 및 대상 엔드포인트 생성 2. 옵션 수행할 작업 [Source engine] 및 [Target engine] 엔드포인트가 되는 데이터베이스 엔진의 유형을 선택합니 다. [Server name] 서버 이름을 입력합니다. 온프레미스 데이터베이스 의 경우, 이것은 IP 주소 또는 퍼블릭 호스트 이름 이 될 수 있습니다. Amazon RDS DB 인스턴스의 경 우, 이것은 mysqlsrvinst.abcd12345678.uswest-2.rds.amazonaws.com과 같이 DB 인스턴스의 엔 드포인트(DNS 이름)가 될 수 있습니다. 포트 데이터베이스가 사용하는 포트를 입력합니다. [SSL mode] 이 엔드포인트에서 연결 암호화를 활성화해야 하는 경우 SSL 모드를 선택합니다. 선택하는 모드에 따라 인증서와 서 버 인증서 정보를 제공해야 할 수도 있습니다. 사용자 이름 데이터 마이그레이션을 허용하는 데 필요한 권한을 가진 사 용자 이름을 입력합니다. 필요한 권한에 대한 정보는 이 사 용 설명서의 원본 또는 대상 데이터베이스 엔진의 보안 섹션 을 참조하십시오. [Password] 필요한 권한을 가진 계정의 암호를 입력합니다. 암호에 "+" 또는 "&"와 같은 특수 문자가 포함된 경우 전체 암호를 중괄 호 ""로 묶으십시오. 데이터베이스 이름 엔드포인트로 사용하려는 데이터베이스의 이름입니다. 다음 그림과 같이 [Advanced ] 탭을 선택하고 필요한 경우 연결 문자열과 암호화 키 값을 설정합니다. [Run test]를 선택하여 엔드포인트 연결을 테스트할 수 있습니다. 225
원본 및 대상 엔드포인트 생성 옵션 수행할 작업 [Extra connection attributes] 여기에 추가 연결 파라미터를 입력합니다. 추가 연결 속성에 대한 자세한 내용은 데이터 스토어의 설명서 섹션을 참조하 십시오. [KMS master key] 복제 스토리지와 연결 정보를 암호화하기 위해 사용할 암호화 키를 선택합니다. [(Default) aws/dms]를 선택하 면, 계정 및 리전과 연결된 기본 AWS Key Management Service(AWS KMS) 키가 사용됩니다. 암호화 키 사용 에 대한 자세한 내용은 암호화 키 설정 및 KMS 권한 지 정 (p. 45)를 참조하십시오. Test endpoint connection (optional)(엔 드포인트 연결 테스트(선택 사항)) VPC 및 복제 인스턴스 이름을 추가합니다. 연결을 테스트하 려면 테스트 실행을 선택합니다. 226
AWS DMS 작업 사용 AWS Database Migration Service(AWS DMS) 작업은 모든 작업이 진행되는 곳입니다. 마이그레이션 및 특 수 처리(로깅 요구 사항, 제어 테이블 데이터 및 오류 처리 등)에 사용할 테이블과 스키마를 지정할 수 있습니 다. 마이그레이션 작업 생성 시 몇 가지 사항에 대해 알고 있어야 합니다. 작업을 생성하려면 먼저 소스 엔드포인트, 대상 엔드포인트 및 복제 인스턴스를 생성해야 합니다. 많은 작업 설정을 지정하여 마이그레이션 작업을 조정할 수 있습니다. 이러한 조정 작업은 AWS Management 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS DMS API를 사용하여 수행합니 다. 이러한 설정에는 마이그레이션 오류의 처리 방식 지정, 오류 로깅 및 제어 테이블 정보가 포함됩니다. 작업을 생성하면 즉시 실행할 수 있습니다. 필수 메타데이터가 정의된 대상 테이블은 자동으로 생성되어 로드되고, 복제 프로세스가 지속됨을 지정할 수 있습니다. 기본적으로 AWS DMS는 작업 생성 즉시 작업을 시작합니다. 그렇지만 경우에 따라 작업 시작을 연기하기 도 합니다. 예를 들어, AWS CLI를 사용할 경우 한 프로세스로는 작업을 생성하고 다른 프로세스로는 트리 거 이벤트에 따라 해당 작업을 시작하게 할 수 있습니다. 필요에 따라 작업 시작을 연기할 수 있습니다. AWS DMS 콘솔, AWS AWS CLI 또는 AWS DMS API를 사용하여 작업을 모니터링, 중지 또는 다시 시작 할 수 있습니다. 다음은 AWS DMS 작업으로 수행할 수 있는 작업입니다. 작업 관련 문서 작업 평가 보고서 생성 작업 평가 보고서 생성 (p. 228) 마이그레이션 중에 문제를 유발할 수 있 는 지원되지 않는 데이터 형식을 보여 주 는 작업 평가 보고서를 생성할 수 있습니 다. 작업을 실행하기 전에 잠재적인 문제 를 알아보기 위해 작업에 대해 이 보고서 를 실행할 수 있습니다. 작업 생성 작업 생성 (p. 230) 작업 생성 시 마이그레이션 설정과 함께 소스, 대상 및 복제 인스턴스를 지정합니 다. 진행 중인 복제 작업 생성 AWS DMS를 사용하여 지속 복제를 위한 작업 생성 (p. 252) 원본과 대상 간에 지속적인 복제를 수행 하는 작업을 설정할 수 있습니다. [Applying Task Settings] 각 작업에는 데이터베이스 마이그레이션 의 요구 사항에 따라 구성할 수 있는 설정 이 있습니다. JSON 파일로 이 설정을 생 성하거나 AWS DMS 콘솔을 사용하여 일 부 설정과 함께 이 설정을 지정할 수 있습 니다. 데이터 유효성 검사 AWS Database Migration Service 작업에 대한 작업 설정 지 정 (p. 237) AWS DMS 작업 검증 (p. 301)를 선택하십시오. 227
작업 평가 보고서 생성 작업 관련 문서 데이터 검증은 AWS DMS는 원본 데이터 스토어의 데이터와 대상 데이터 스토어의 데이터를 비교하도록 설정하는 데 사용할 수 있는 작업 설정입니다. 작업 수정 작업 수정 (p. 254) 작업이 중지되면, 작업 설정을 수정할 수 있습니다. 작업 중 테이블 다시 로드 작업 중 테이블 다시 로드 (p. 255) 작업 중에 오류가 발생하면 작업 중에 테 이블을 다시 로드할 수 있습니다. [Using Table Mapping] 테이블 매핑에서는 여러 유형의 규칙을 사용하여 데이터 원본, 원본 스키마, 데이 터, 작업 중 발생하는 모든 변환을 지정합 니다. 필터 적용 선택 규칙 선택 규칙 및 작업 (p. 262) 변환 규칙 변환 규칙 및 작업 (p. 264) 소스 필터 사용 (p. 286) 원본 필터를 사용하여 원본에서 대상으로 전송되는 레코드의 수와 유형을 제한할 수 있습니다. 예를 들어, 본사 사업장에서 근무하는 직원만이 대상 데이터베이스로 이동되도록 지정할 수 있습니다. 데이터 열에서 필터를 적용합니다. [Monitoring a Task] AWS DMS 작업 모니터링 (p. 290) 작업에서 사용하는 테이블과 작업 성능에 대한 정보를 가져오는 방법에는 여러 가 지가 있습니다. 작업 로그 관리 AWS DMS 작업 로그 관리 (p. 296) AWS DMS API 또는 AWS CLI를 사용하 여 작업 로그를 보고 삭제할 수 있습니다. 작업 평가 보고서 생성 작업 평가 기능은 올바르게 마이그레이션되지 않았을 수도 있는 데이터 형식을 식별합니다. 작업 평가 중에 AWS DMS는 원본 데이터베이스 스키마를 읽고 데이터 형식 목록을 생성합니다. 그런 다음 AWS DMS가 지 원하는 사전 정의된 데이터 형식 목록과 이 목록을 비교합니다. AWS DMS는 마이그레이션 작업이 지원되지 않는 데이터 형식이 있는지 알아볼 때 살펴볼 수 있는 보고서를 생성합니다. 작업 평가 보고서에는 지원되지 않는 데이터 형식과 각각의 유형에 대한 열 개수를 나열한 요약이 포함됩니 다. 각각의 지원되지 않는 유형에 대한 JSON 형식의 데이터 구조 목록이 포함됩니다. 보고서를 사용하여 원 본 데이터 형식을 수정하고 마이그레이션을 개선하여 성공적으로 수행될 수 있도록 합니다. 지원되지 않는 데이터 형식에는 두 가지 수준이 있습니다. 보고서에 "지원되지 않음"으로 표시되는 데이터 형 식은 마이그레이션할 수 없습니다. 보고서에 "부분적으로 지원됨"으로 표시되는 데이터 형식은 다른 데이터 형식으로 변환되어 예상대로 마이그레이션되지 않을 수 있습니다. 228
작업 평가 보고서 생성 예를 들어, 다음은 샘플 작업 평가 보고서입니다. "summary": "task-name":"test15", "not-supported": "data-type": [ "sql-variant" ], "column-count":3 "partially-supported": "data-type":[ "float8", "jsonb" ], "column-count":2 "types":[ "data-type":"float8", "support-level":"partially-supported", "schemas":[ "schema-name":"schema1", "tables":[ "table-name":"table1", "columns":[ "column1", "column2" ] "table-name":"table2", "columns":[ "column3", "column4" ] ] "schema-name":"schema2", "tables":[ "table-name":"table3", "columns":[ "column5", "column6" ] "table-name":"table4", "columns":[ "column7", "column8" ] ] ] 229
작업 생성 ] "datatype":"int8", "support-level":"partially-supported", "schemas":[ "schema-name":"schema1", "tables":[ "table-name":"table1", "columns":[ "column9", "column10" ] "table-name":"table2", "columns":[ "column11", "column12" ] ] ] AWS 콘솔의 작업 페이지에 있는 평가 탭을 사용하여 최근 작업 평가 보고서를 볼 수 있습니다. AWS DMS는 이전 평가 보고서를 Amazon S3 버킷에 저장합니다. Amazon S3 버킷 이름은 다음 형식으로 되어 있습니다. dms-<customerid>-<customerdns> 이 보고서는 작업 이름의 폴더에 있는 버킷에 저장됩니다. 보고서 파일 이름은 yyyy-mm-dd-hh-mm 형식의 평가 날짜입니다. Amazon S3 콘솔에서 이전 작업 평가 보고서를 보고 비교할 수 있습니다. 또한 AWS DMS는 S3 버킷에 대한 액세스를 허용하기 위한 AWS Identity and Access Management(IAM) 역 할을 생성하며, 이 역할 이름은 dms-access-for-tasks입니다. 이 역할에는 AmazonDMSRedshiftS3Role 정 책이 사용됩니다. AWS 콘솔, AWS CLI 또는 DMS API를 사용하여 작업 평가 기능을 활성화할 수 있습니다. 콘솔에서 작업을 생성 또는 수정 시 [Task Assessment]를 선택합니다. 콘솔을 사용하여 작업 평가 보고서 를 보려면 [Tasks] 페이지에서 작업을 선택하고 세부 정보 섹션에서 [Assessment results] 탭을 선택합니 다. CLI 명령은 작업 평가를 시작하기 위한 start-replication-task-assessment와 JSON 형식의 작업 평가 보고서를 받기 위한 describe-replication-task-assessment-results입니다. AWS DMS API는 StartReplicationTaskAssessment 작업을 사용하여 작업 평가를 시작하고 DescribeReplicationTaskAssessment 작업을 사용하여 JSON 형식의 작업 평가 보고서를 받습니 다. 작업 생성 AWS DMS 마이그레이션 작업을 생성하려면 몇 가지 작업을 수행해야 합니다. 마이그레이션 작업을 생성하기 전에 먼저 소스 엔드포인트, 대상 엔드포인트 및 복제 인스턴스를 생성합니 다. 230
작업 생성 마이그레이션 방법을 선택합니다. 데이터를 대상 데이터베이스로 마이그레이션 이 프로세스는 대상 데이터베이스에 파일 또는 테이블 을 생성하고, 대상에서 필요한 메타데이터를 자동으로 정의합니다. 또한 소스의 데이터로 테이블을 채웁 니다. 테이블의 데이터가 병렬로 로드되므로 효율성이 향상됩니다. 이 프로세스는 AWS 콘솔의 [Migrate existing data] 옵션이며 API에서 Full Load라고 합니다. 마이그레이션 중 변경 사항 캡처 이 프로세스는 데이터가 원본에서 대상으로 마이그레이션되는 동안 발생하는 원본 데이터베이스의 변경 사항을 캡처합니다. 원래 요청된 데이터의 마이그레이션이 완료되 면, 변경 데이터 캡처(CDC)가 처리된 후 캡처된 변경 사항이 대상 데이터베이스에 적용됩니다. 변경 사 항이 커밋된 트랜잭션의 단위로서 캡처 및 적용되고, 다양한 대상 테이블을 하나의 소스 커밋으로서 업 데이트할 수 있습니다. 이 접근 방식은 대상 데이터베이스에서 트랜잭션 무결성을 보장합니다. 이 프로 세스는 AWS 콘솔의 [Migrate existing data and replicate ongoing changes] 옵션이며 API에서 fullload-and-cdc라고 합니다. 원본 데이터베이스에서 유일한 데이터 변경 사항 복제 이 프로세스는 원본 DBMS(데이터베이스 관 리 시스템)의 복구 로그 파일을 읽고 각 트랜잭션별로 항목을 그룹화합니다. 경우에 따라, AWS DMS는 합리적인 시간 내에 대상 변경 사항을 적용할 수 없습니다(예: 대상에 액세스할 수 없는 경우). 이 경우 AWS DMS는 필요하면 복제 서버에 변경 사항을 버퍼링합니다. 원본 DBMS 로그를 다시 읽지 않으므로 오랜 시간이 소요될 수 있습니다. 이 프로세스는 AWS DMS 콘솔에서 Replicate data changes only(데이 터 변경 사항만 복제) 옵션입니다. 작업에서 소스에 대해 대용량 이진 객체(LOB)를 처리하는 방식을 결정합니다. 자세한 내용은 AWS DMS 작업의 원본 데이터베이스에 대한 LOB 지원 설정 (p. 251) 단원을 참조하십시오. 마이그레이션 작업 설정을 지정합니다. 여기에는 로깅 설정, 마이그레이션 제어 테이블에 기록될 데이 터 지정, 오류 처리 방식 및 기타 설정을 포함됩니다. 작업 설정에 대한 자세한 내용은 AWS Database Migration Service 작업에 대한 작업 설정 지정 (p. 237) 섹션을 참조하십시오. 테이블 매핑을 설정하여 마이그레이션 중인 데이터를 선택 및 필터링하기 위한 규칙을 정의합니다. 테이블 매핑에 대한 자세한 내용은 작업 설정을 지정하기 위한 테이블 매핑 사용 (p. 257) 섹션을 참조하십시오. 매핑을 지정하기 전에 원본 및 대상 데이터베이스의 데이터 형식 매핑에 대한 관련 설명서 단원을 참조하 십시오. 작업 생성 페이지에서 해당 작업에 대한 정보를 모두 지정하면 바로 작업을 시작할 수 있습니다. 또는 작업 정보 지정을 마친 후 대시보드 페이지에서 작업을 시작할 수도 있습니다. 이후 절차에서는 AWS DMS 콘솔 마법사를 선택하고 이 콘솔 마법사를 사용하여 복제 인스턴스 정보와 엔드 포인트를 선택했다고 가정합니다. AWS DMS 콘솔의 탐색 창에서 작업을 선택한 후 작업 생성을 선택하여 이 단계를 수행할 수도 있습니다. 마이그레이션 작업을 생성하려면 1. [Create Task] 페이지에서 작업 옵션을 지정합니다. 다음 표는 설정에 대한 설명입니다. 231
작업 생성 2. 옵션 수행할 작업 [Task name] 작업 이름을 입력합니다. [Task description] 작업 설명을 입력합니다. [Source endpoint] 사용할 소스 엔드포인트를 표시합니다. [Target endpoint] 사용할 대상 엔드포인트를 표시합니다. 복제 인스턴스 사용할 복제 인스턴스를 표시합니다. [Migration type] 사용할 마이그레이션 방법을 선택합니다. 기존 데이터가 대 상 데이터베이스에 마이그레이션되도록 선택하거나 마이그 레이션된 데이터 외에 지속적 변경 사항이 대상 데이터베이 스에 전송되도록 선택할 수 있습니다. [Start task on create] 이 옵션을 선택하면 작업 생성 직후 작업이 시작됩니다. 다음 그림과 같이 [Task Settings ] 탭을 선택하고 대상 테이블 값, LOB 지원을 지정하고 로깅을 활성 화합니다. 표시되는 작업 설정은 선택한 [Migration type] 값에 따라 달라집니다. 예를 들어, [Migrate existing data]를 선택하면 다음 옵션이 표시됩니다. 232
작업 생성 233
작업 생성 옵션 수행할 작업 [Target table preparation mode] 아무 작업 안 함 아무 작업 안 함 모드에서는 AWS DMS가 대상에 대상 테이블이 미리 생성되었다고 가정합니다. 마이 그레이션이 전체 로딩 또는 전체 로딩과 CDC라면 마이그레 이션 시작 전에 대상 테이블이 비어 있는지 확인해야 합니 다. Do nothing(아무것도 하지 않기) 모드는 소스에서 대상 테이블이 미리 채워져 있는 경우 CDC 전용 작업에 적합한 선택이고 진행 중 복제는 소스 및 대상간 동기화를 유지합니 다. AWS Schema Conversion Tool(AWS SCT)를 사용하여 대상 테이블을 미리 생성할 수 있습니다. 대상에서 테이블 삭제 대상에서 테이블 삭제 모드에서는 AWS DMS가 마이그레이션 시작 전에 대상 테이블을 삭제 하고 대상 테이블을 다시 만듭니다. 마이그레이션 시작 전에 대상 테이블이 비어있는지 확인합니다. AWS DMS는 데이 터(예, 테이블, 기본 키 및 어떤 경우, 고유 인덱스)를 효율적 으로 마이그레이션하는 데 필요한 객체만 생성합니다. AWS DMS는 보조 인덱스, 기본이 아닌 키 제약 조건 또는 열 데 이터 기본값을 생성하지 않습니다. 전체 로딩 및 CDC 또는 CDC만 진행하는 작업 실행 중이라면 마이그레이션을 중단 하고 명령문을 업데이트하고 삭제할 필터링을 지원하는 보 조 인덱스를 생성하도록 권장합니다. 대상에서 테이블 삭제 모드를 사용할 경우 대상 데이터베이 스에서 몇 가지 구성을 실행해야 합니다. 예를 들어 대상이 Oracle인 경우, AWS DMS는 보안상의 이유로 스키마(데이 터베이스 사용자)를 생성할 수 없습니다. 이 경우, 스키마 사 용자를 미리 생성하여 AWS DMS가 마이그레이션이 시작될 때 테이블을 생성할 수 있도록 합니다. 대부분의 다른 대상 유형의 경우, AWS DMS는 적합한 구성 파라미터를 사용하 여 스키마 및 모든 관련 테이블을 생성합니다. 자르기 자르기 모드에서는 AWS DMS가 마이그레이션이 시작하기 전에 모든 대상 테이블을 자릅니다. Truncate(자르 기) 모드는 마이그레이션이 시작되기 전에 대상 스키마가 미 리 생성된 전체 로드 또는 전체 로딩과 CDC에 적합합니다. AWS Schema Conversion Tool(AWS SCT)를 사용하여 대 상 테이블을 미리 생성할 수 있습니다. [Include LOB columns in replication] LOB 열을 포함시키지 마십시오 LOB 열이 마이그레이션 에서 제외됩니다. 전체 LOB 모드 크기와 상관없이 전체 LOB를 마이그레이 션합니다. AWS DMS는 최대 LOB 크기 파라미터에서 제어 하는 청크 단위로 LOB를 하나씩 마이그레이션합니다. 이 모 드는 제한적 LOB 모드를 사용하는 것보다 더 느립니다. 제한적 LOB 모드 LOB를 최대 LOB 크기 파라미터 값으로 자릅니다. 이 모드는 전체 LOB 모드를 사용하는 것보다 더 빠릅니다. 최대 LOB 크기(kb) 제한적 LOB 모드에서는 최대 LOB 크기의 설정을 초과하는 LOB 열이, 지정된 최대 LOB 크기로 잘립니다. 234
작업 생성 옵션 수행할 작업 검증 활성화 원본에서 대상으로 데이터가 정확히 마이그레이션되는지 확인하기 위해 데이터 검증을 활성화합니다. 자세한 내용은 AWS DMS 작업 검증 (p. 301) 단원을 참조하십시오. [Enable logging] Amazon CloudWatch를 통해 로깅을 활성화합니다. 예를 들어, [Migration type]에서 [Migrate existing data and replicate]를 선택하면 다음 옵션이 표시됩니 다. 옵션 수행할 작업 [Target table preparation mode] 아무 작업 안 함 대상 테이블의 데이터와 메타데이터가 변 경되지 않습니다. 대상에서 테이블 삭제 테이블이 삭제되고 그 자리에 새 테 이블이 생성됩니다. 자르기 테이블 메타데이터에 영향을 주지 않고 테이블이 잘립니다. 235
작업 생성 옵션 수행할 작업 [Stop task after full load completes] 멈추지 않음 작업을 중지하지 않고, 캐시된 변경 사항을 즉 시 적용하고 계속 진행합니다. 캐시된 변경 사항 적용 전 멈춤 - 캐시된 변경 사항을 적용하 기 전에 작업을 중지합니다. 이 방법을 사용하면 보조 인덱 스를 추가할 수 있으며 이에 따라 변경 사항을 적용하는 속 도가 향상될 수 있습니다. [Stop after applying cached changes] - 캐시된 변경 사항 적 용 후 작업을 중지합니다. 이 방법을 사용하면 트랜잭션 적 용을 사용하는 경우 외래 키, 트리거 등을 추가할 수 있습니 다. [Include LOB columns in replication] LOB 열을 포함시키지 마십시오 LOB 열이 마이그레이션 에서 제외됩니다. 전체 LOB 모드 크기와 상관없이 전체 LOB를 마이그레이 션합니다. LOB는 LOB 청크 크기별로 제어되는 청크 단위로 하나씩 마이그레이션됩니다. 이 방법은 제한적 LOB 모드를 사용하는 것보다 더 느립니다. 제한적 LOB 모드 LOB를 '최대 LOB 크기'로 자릅니다. 이 방법은 전체 LOB 모드를 사용하는 것보다 더 빠릅니다. 최대 LOB 크기(KB)] 제한적 LOB 모드에서는 최대 LOB 크기의 설정을 초과하는 LOB 열이, 지정된 최대 LOB 크기로 잘립니다. 검증 활성화 원본에서 대상으로 데이터가 정확히 마이그레이션되는지 확인하기 위해 데이터 검증을 활성화합니다. 자세한 내용은 AWS DMS 작업 검증 (p. 301) 단원을 참조하십시오. [Enable logging] Amazon CloudWatch를 통해 로깅을 활성화합니다. 3. 다음 그림과 같이 [Table mappings ] 탭을 선택하여 스키마 매핑과 매핑 방법에 대한 값을 설정합니다. [Custom]을 선택한 경우 대상 스키마와 테이블 값을 지정할 수 있습니다. 테이블 매핑에 대한 자세한 내 용은 작업 설정을 지정하기 위한 테이블 매핑 사용 (p. 257) 섹션을 참조하십시오. 4. 작업 설정을 완료했으면 작업 생성을 선택합니다. 236
작업 설정 AWS Database Migration Service 작업에 대한 작업 설 정 지정 각 작업에는 데이터베이스 마이그레이션의 요구 사항에 따라 구성할 수 있는 설정이 있습니다. JSON 파일로 이 설정을 생성하거나 AWS DMS 콘솔을 사용하여 일부 설정과 함께 이 설정을 지정할 수 있습니다. 기본적인 작업 설정 유형은 다음과 같습니다. 주제 대상 메타데이터 작업 설정 (p. 240) 전체 로드 작업 설정 (p. 241) 작업 설정 로깅 (p. 241) 제어 테이블 작업 설정 (p. 242) 스트림 버퍼 작업 설정 (p. 245) 변경 처리 튜닝 설정 (p. 245) 데이터 검증 작업 설정 (p. 246) 변경 처리 DDL을 다루기 위한 작업 설정 (p. 247) 오류 처리 작업 설정 (p. 247) 작업 설정 저장 (p. 249) 작업 설정 관련 문서 작업 평가 보고서 생성 작업 평가 보고서 생성 (p. 228) 마이그레이션 중에 문제를 유발할 수 있 는 지원되지 않는 데이터 형식을 보여 주 는 작업 평가 보고서를 생성할 수 있습니 다. 작업을 실행하기 전에 잠재적인 문제 를 알아보기 위해 작업에 대해 이 보고서 를 실행할 수 있습니다. 작업 생성 작업 생성 (p. 230) 작업 생성 시 마이그레이션 설정과 함께 소스, 대상 및 복제 인스턴스를 지정합니 다. 진행 중인 복제 작업 생성 AWS DMS를 사용하여 지속 복제를 위한 작업 생성 (p. 252) 원본과 대상 간에 지속적인 복제를 수행 하는 작업을 설정할 수 있습니다. [Applying Task Settings] 각 작업에는 데이터베이스 마이그레이션 의 요구 사항에 따라 구성할 수 있는 설정 이 있습니다. JSON 파일로 이 설정을 생 성하거나 AWS DMS 콘솔을 사용하여 일 부 설정과 함께 이 설정을 지정할 수 있습 니다. 데이터 유효성 검사 AWS Database Migration Service 작업에 대한 작업 설정 지 정 (p. 237) AWS DMS 작업 검증 (p. 301) 237
작업 설정 작업 설정 관련 문서 데이터 검증은 AWS DMS는 원본 데이터 스토어의 데이터와 대상 데이터 스토어의 데이터를 비교하도록 설정하는 데 사용할 수 있는 작업 설정입니다. Modifying a Task(작업 수정) 작업 수정 (p. 254) 작업이 중지되면, 작업 설정을 수정할 수 있습니다. 작업 중 테이블 다시 로드 작업 중 테이블 다시 로드 (p. 255) 작업 중에 오류가 발생하면 작업 중에 테 이블을 다시 로드할 수 있습니다. [Using Table Mapping] 선택 규칙 선택 규칙 및 작업 (p. 262) 테이블 매핑에서는 여러 유형의 규칙을 사용하여 데이터 원본, 원본 스키마, 데이 변환 규칙 터, 작업 중 발생하는 모든 변환의 작업 설 변환 규칙 및 작업 (p. 264) 정을 지정합니다. 필터 적용 소스 필터 사용 (p. 286) 원본 필터를 사용하여 원본에서 대상으로 전송되는 레코드의 수와 유형을 제한할 수 있습니다. 예를 들어, 본사 사업장에서 근무하는 직원만이 대상 데이터베이스로 이동되도록 지정할 수 있습니다. 데이터 열에서 필터를 적용합니다. [Monitoring a Task] AWS DMS 작업 모니터링 (p. 290) 작업에서 사용하는 테이블과 작업 성능에 대한 정보를 가져오는 방법에는 여러 가 지가 있습니다. 작업 로그 관리 AWS DMS 작업 로그 관리 (p. 296) AWS DMS API 또는 AWS CLI를 사용하 여 작업 로그를 보고 삭제할 수 있습니다. 작업 설정 JSON 파일은 다음과 같습니다. "TargetMetadata": "TargetSchema": "", "SupportLobs": true, "FullLobMode": false, "LobChunkSize": 64, "LimitedSizeLobMode": true, "LobMaxSize": 32, "BatchApplyEnabled": true "FullLoadSettings": "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, 238
작업 설정 "StopTaskCachedChangesApplied": false, "StopTaskCachedChangesNotApplied": false, "MaxFullLoadSubTasks": 8, "TransactionConsistencyTimeout": 600, "CommitRate": 10000 "Logging": "EnableLogging": false "ControlTablesSettings": "ControlSchema":"", "HistoryTimeslotInMinutes":5, "HistoryTableEnabled": false, "SuspendedTablesTableEnabled": false, "StatusTableEnabled": false "StreamBufferSettings": "StreamBufferCount": 3, "StreamBufferSizeInMB": 8 "ChangeProcessingTuning": "BatchApplyPreserveTransaction": true, "BatchApplyTimeoutMin": 1, "BatchApplyTimeoutMax": 30, "BatchApplyMemoryLimit": 500, "BatchSplitSize": 0, "MinTransactionSize": 1000, "CommitTimeout": 1, "MemoryLimitTotal": 1024, "MemoryKeepTime": 60, "StatementCacheSize": 50 "ChangeProcessingDdlHandlingPolicy": "HandleSourceTableDropped": true, "HandleSourceTableTruncated": true, "HandleSourceTableAltered": true "ValidationSettings": "EnableValidation": true, "ThreadCount": 5 "ErrorBehavior": "DataErrorPolicy": "LOG_ERROR", "DataTruncationErrorPolicy":"LOG_ERROR", "DataErrorEscalationPolicy":"SUSPEND_TABLE", "DataErrorEscalationCount": 50, "TableErrorPolicy":"SUSPEND_TABLE", "TableErrorEscalationPolicy":"STOP_TASK", "TableErrorEscalationCount": 50, "RecoverableErrorCount": 0, "RecoverableErrorInterval": 5, "RecoverableErrorThrottling": true, "RecoverableErrorThrottlingMax": 1800, "ApplyErrorDeletePolicy":"IGNORE_RECORD", "ApplyErrorInsertPolicy":"LOG_ERROR", "ApplyErrorUpdatePolicy":"LOG_ERROR", "ApplyErrorEscalationPolicy":"LOG_ERROR", "ApplyErrorEscalationCount": 0, "FullLoadIgnoreConflicts": true 239
작업 설정 대상 메타데이터 작업 설정 대상 메타데이터 설정에는 다음이 포함됩니다. TargetSchema 대상 테이블 스키마 이름입니다. 이 메타데이터 옵션이 비어 있는 경우, 원본 테이블의 스키마를 사용합니다. AWS DMS은(는) 원본 스키마가 정의되지 않은 경우 대상 데이터베이스의 소유자 접두사를 모든 테이블에 자동으로 추가합니다. 이 옵션은 MySQL 유형 대상 엔드포인트에서 비어두어야 합니다. LOB 설정 대형 객체(LOB)가 관리되는 방법을 결정하는 설정입니다. SupportLobs=true를 설정하는 경우, 다음 중 하나를 true로 설정해야 합니다. FullLobMode 이 옵션을 true(으)로 설정하는 경우, LobChunkSize 옵션 값을 입력해야 합니다. 데 이터를 대상으로 복제할 때 사용할 LOB 청크 크기(킬로바이트 단위)를 입력합니다. FullLobMode 옵션 은 매우 큰 LOB 크기에서 최고 성능을 발휘하지만 로드가 느려지는 경향이 있습니다. InlineLobMaxSize 이 값은 AWS Database Migration Service가 전체 로드 중 인라인으로 전송하는 LOB를 지정합니다. 작은 LOB를 전송하면 소스 테이블에서 조회하는 것보다 효율적입니다. 전체 로드 중 AWS Database Migration Service는 모든 LOB를 검사하여 InlineLobMaxSize보다 작은 LOB에 대해 인라인 전송을 수행합니다. AWS Database Migration Service는 InlineLobMaxSize보다 큰 모 든 LOB는 FullLobMode로 전송합니다. InlineLobMaxSize의 기본값은 0이며, 범위는 1킬로바이트 ~2기가바이트입니다. 모든 LOB가 InlineLobMaxSize에 지정된 값보다 작으면 InlineLobMaxSize 값만 지정하십시오. LimitedSizeLobMode 이 옵션을 true(으)로 설정하는 경우, LobMaxSize 옵션 값을 입력해야 합 니다. 개별 LOB에서 최대 크기(킬로바이트 단위)를 입력합니다. 이러한 작업 LOB 설정을 사용하기 위한 기준에 대한 자세한 내용은 AWS DMS 작업의 원본 데이터베이스 에 대한 LOB 지원 설정 (p. 251) 단원을 참조하십시오. 개별 테이블에 대한 LOB 관리를 제어할 수도 있 습니다. 자세한 내용은 테이블 설정 규칙 및 작업 (p. 273) 단원을 참조하십시오. LoadMaxFileSize PostgreSQL 및 MySQL 대상 엔드포인트의 옵션으로,.csv 파일과 같이 저장되었지 만 로드되지 않은 데이터 디스크의 최대 크기를 정의합니다. 이 옵션은 연결 속성보다 우선합니다. 0 값을 제공할 수 있으며, 이는 이 옵션이 연결 속성을 100,000KB로 재정의하지 않음을 나타냅니다. BatchApplyEnabled 각 트랜잭션이 개별적으로 적용되는지 또는 변경 사항이 배치 단위로 커밋되는 지 여부를 결정합니다. 기본값은 false입니다. BatchApplyEnabled 파라미터는 BatchApplyPreserveTransaction 파라미터와 함께 사용됩니다. BatchApplyEnabled가 true로 설정되면 BatchApplyPreserveTransaction 파라미터는 트랜잭션 무결성을 결정합니다. BatchApplyPreserveTransaction이 true로 설정되면, 트랜잭션 무결성이 유지되고 배치가 보장되 어 원본의 트랜잭션 내에 있는 모든 변경 사항을 포함하도록 보장됩니다. BatchApplyPreserveTransaction이 false로 설정되면, 트랜잭션 무결성이 일시적인 시간 경과가 있어 성능이 개선될 수 있습니다. BatchApplyPreserveTransaction 파라미터가 Oracle 대상 엔드포인트에만 적용되고 BatchApplyEnabled 파라미터가 true로 설정되는 경우에만 관련됩니다. 복제에 LOB 열이 포함되면, BatchApplyEnabled만이 [Limited-size LOB mode]에서 사용될 수 있습니 다. 변경 데이터 캡처(CDC)로드에 이 설정을 사용하는 방법에 대한 자세한 내용은 변경 처리 튜닝 설 정 (p. 245) 단원을 참조하십시오. 개별 테이블에 대한 병렬 로드 설정 사용할 수 있는 하위 스택(스레드)의 수와 병렬 로드된 데이터를 대상 에 로드하는 데 사용되는 버퍼의 크기를 결정하는 설정: ParallelLoadThreads AWS DMS에서 각 테이블을 대상 데이터베이스에 로드하는 데 사용하는 스 레드 수를 지정합니다. MySQL 대상의 최대값은 16이며, DynamoDB 대상의 최대값은 32입니다. 요청 시 최대 한도를 높일 수 있습니다. 240
작업 설정 ParallelLoadBufferSize 데이터를 대상에 로드하기 위해 병렬 로드 스레드에 사용되는 버퍼 에 저장할 최대 레코드 수를 지정합니다. 기본값은 50입니다. 최대 값은 1000입니다. 현재 이 필드는 DynamoDB가 대상일 때만 유효합니다. 이 파라미터는 ParallelLoadThreads와 함께 사용해야 하며 ParallelLoadThreads > 1일 때만 유효합니다. 개별 테이블의 병렬 로드를 활성화하는 설정에 대한 자세한 내용은 테이블 설정 규칙 및 작업 (p. 273) 단원을 참조하십시오. 전체 로드 작업 설정 전체 로드 설정에는 다음이 포함됩니다. 전체 로드 시작 시 대상 로드 처리 방법을 표시하려면, TargetTablePrepMode 옵션에서 다음 값 중 하나 를 지정합니다. DO_NOTHING 기존 대상 테이블의 데이터와 메타데이터가 영향을 받지 않습니다. DROP_AND_CREATE 기존 테이블은 삭제되고 새 테이블이 그 자리에 생성됩니다. TRUNCATE_BEFORE_LOAD 테이블 메타데이터에 영향을 주지 않고 데이터가 잘립니다. 전체 로드가 완료될 때까지 기본 키 또는 고유 인덱스 생성을 지연시키려면, CreatePkAfterFullLoad 옵션을 설정합니다. 이 옵션을 선택하면 미완료 전체 로드 작업을 재개할 수 없습니다. 전체 로드 및 CDC 활성 작업에서 다음 Stop task after full load completes 옵션을 설정할 수 있습니다. StopTaskCachedChangesApplied 이 옵션을 true(으)로 설정하면 전체 로드가 완료되고 캐시된 변경 사항이 적용된 후 작업이 중지됩니다. StopTaskCachedChangesNotApplied 이 옵션을 true(으)로 설정하면 작업을 중지한 후 캐시된 변경 사항이 적용됩니다. MaxFullLoadSubTasks 동시에 로드할 최대 테이블 수를 나타내려면 이 옵션을 설정합니다. 기본값은 8이며, 최대값은 50입니다. 작업을 시작할 때 트랜잭션이 열려 있는 경우 AWS DMS에서 전체 로드 작업을 시작하기 전에 트랙잭션이 종료될 때까지 대기하는 기간(초)을 설정하려면 TransactionConsistencyTimeout 옵션을 설정합니 다. 기본값은 600초(10분)입니다. AWS DMS은(는) 트랜잭션이 열려 있더라도 제한 시간 값에 도달하면 전 체 로드를 시작합니다. 전체 로드 전용 작업은 10분 동안 기다리지 않으며 즉시 시작됩니다. 함께 전송할 수 있는 최대 이벤트 수를 나타내려면, CommitRate 옵션을 설정합니다. 작업 설정 로깅 작업 설정 로깅은 JSON 파일에 작성되므로 로깅할 구성 요소 활동과 로그에 작성할 정보량을 지정할 수 있 습니다. 로깅 기능은 마이그레이션 프로세스 중에 Amazon CloudWatch를 사용하여 정보를 로그합니다. Amazon CloudWatch 로깅을 활성화하는 몇 가지 방법이 있습니다. 마이그레이션 작업을 생성할 때에는 AWS Management 콘솔에서 EnableLogging 옵션을 선택할 수 있으며, AWS DMS API를 사용하여 작업 을 생성할 때에는 EnableLogging 옵션을 true로 설정할 수 있습니다. 작업 설정의 JSON 로깅 섹션에서 "EnableLogging": true를 지정할 수도 있습니다. 작업 로그를 삭제하려면 작업 설정의 JSON 로깅 섹션에서 "DeleteTaskLogs": true를 지정하면 됩니 다. 다음 구성 요소 활동에서 로깅을 지정할 수 있습니다. SOURCE_UNLOAD 원본 데이터베이스에서 데이터가 업로드됩니다. SOURCE_CAPTURE 원본 데이터베이스에서 데이터가 캡처됩니다. TARGET_LOAD 데이터를 대상 데이터베이스로 로드합니다. TARGET_APPLY 데이터와 데이터 정의 언어(DDL) 명령문을 대상 데이터베이스에 적용합니다. 241
작업 설정 TASK_MANAGER 작업 관리자가 이벤트를 트리거합니다. 구성 요소 활동을 지정한 후 로깅되는 정보의 양을 지정할 수 있습니다. 다음 목록은 가장 낮은 수준의 정보 부터 가장 높은 수준의 정보 순서로 되어 있습니다. 높은 수준은 항상 낮은 수준의 정보를 포함합니다. 이 심 각도 값은 다음을 포함합니다. LOGGER_SEVERITY_ERROR 오류 메시지가 로그에 작성됩니다. LOGGER_SEVERITY_WARNING 경고와 오류 메시지가 로그에 작성됩니다. LOGGER_SEVERITY_INFO 정보 메시지, 경고 및 오류 메시지가 로그에 작성됩니다. LOGGER_SEVERITY_DEFAULT 정보 메시지, 경고 및 오류 메시지가 로그에 작성됩니다. LOGGER_SEVERITY_DEBUG 디버그 메시지, 정보 메시지, 경고 및 오류 메시지가 로그에 작성됩니다. LOGGER_SEVERITY_DETAILED_DEBUG 모든 정보가 로그에 작성됩니다. 예를 들어, 다음 JSON 섹션은 모든 구성 요소 활동의 로깅을 위한 작업 설정을 제공합니다. "Logging": "EnableLogging": true, "LogComponents": [ "Id": "SOURCE_UNLOAD", "Severity": "LOGGER_SEVERITY_DEFAULT" "Id": "SOURCE_CAPTURE", "Severity": "LOGGER_SEVERITY_DEFAULT" "Id": "TARGET_LOAD", "Severity": "LOGGER_SEVERITY_DEFAULT" "Id": "TARGET_APPLY", "Severity": "LOGGER_SEVERITY_INFO" "Id": "TASK_MANAGER", "Severity": "LOGGER_SEVERITY_DEBUG" ] 제어 테이블 작업 설정 제어 테이블에는 AWS DMS 작업에 대한 정보뿐 아니라 현재 마이그레이션 작업과 향후 작업 모두를 계획 하고 관리하는 데 사용할 수 있는 유용한 통계가 나와 있습니다. JSON 파일로 이 작업 설정을 적용하거나 AWS DMS 콘솔의 작업 생성 페이지에 있는 고급 설정 링크를 사용하여 이 작업 설정을 적용할 수 있습니다. 항상 생성되는 예외 적용(dmslogs.awsdms_apply_exceptions) 테이블 외에도, 다음을 포함한 추가 테이블을 생성하도록 선택할 수 있습니다. 복제 상태(dmslogs.awsdms_status) 이 테이블은 현재 작업에 대한 세부 정보를 제공합니다. 작업 상태, 작업에서 사용하는 메모리 크기, 대상에 아직 적용되지 않은 변경 수 등이 표시됩니다. 또한 이 테이블에는 AWS DMS가 현재 읽는 소스 데이터베이스 위치가 표시되고, 작업이 전체 로드인지 또는 변경 데이터 캡 처(CDC)를 표시합니다. 일시 중지된 테이블(dmslogs.awsdms_suspended_tables) 이 테이블에는 일시 중지된 테이블뿐 아니라 일시 중지된 이유가 나와 있습니다. 복제 기록(dmslogs.awsdms_history) 이 테이블은 복제 기록에 대한 정보를 제공합니다. 작업 중에 처리 된 레코드 수와 볼륨, CDC 작업 종료 시 지연 시간, 기타 통계 등이 표시됩니다. 예외 적용(dmslogs.awsdms_apply_exceptions) 테이블에는 다음 파라미터가 포함되어 있습니다. 242
작업 설정 열 유형 설명 TASK_NAME nvchar AWS DMS 작업의 이름입니다. TABLE_OWNER nvchar 테이블 소유자입니다. TABLE_NAME nvchar 테이블 이름입니다. ERROR_TIME timestamp 예외(오류)가 발생한 시간입니다. STATEMENT nvchar 오류가 발생했을 때 실행되고 있었던 문입니다. 오류 nvchar 오류 이름 및 설명입니다. 복제 이력(dmslogs.awsdms_history) 테이블에는 다음 파라미터가 포함되어 있습니다. 열 유형 설명 SERVER_NAME nvchar 복제 작업이 실행되고 있는 시스템의 이름입니다. TASK_NAME nvchar AWS DMS 작업의 이름입니다. TIMESLOT_TYPE varchar 다음 값 중 하나입니다. FULL LOAD CHANGE PROCESSING (CDC) 작업이 전체 로드와 CDC를 실행하고 있는 경우, 두 이력 레코드는 타임 슬 롯에 작성됩니다. TIMESLOT timestamp 시간 슬롯의 종료 타임스탬프입니다. TIMESLOT_DURATION int 시간 슬롯의 지속시간. TIMESLOT_LATENCY int 타임 슬롯이 끝날 때의 대상 지연 시간 입니다. 이 값은 CDC 시간 슬롯에만 적용됩니다. RECORDS int 시간 슬롯 중에 처리되는 레코드 수입 니다. TIMESLOT_VOLUME int 처리되는 데이터 볼륨(MB 단위)입니 다. 복제 상태(dmslogs.awsdms_status) 테이블에는 작업과 대상 데이터베이스의 현재 상태가 포함되어 있습니 다. 설정은 다음과 같습니다. 열 유형 설명 SERVER_NAME nvchar 복제 작업이 실행되고 있는 시스템의 이름입니다. TASK_NAME nvchar AWS DMS 작업의 이름입니다. 243
작업 설정 열 유형 설명 TASK_STATUS varchar 다음 값 중 하나입니다. FULL LOAD CHANGE PROCESSING (CDC) 전체 로드에 최소 1개 이상의 테이블 이 있는 한 작업 상태가 FULL LOAD로 설정됩니다. 모든 테이블이 로드된 후 CDC가 활성화되어 있으면 작업 상태 가 CHANGE PROCESSING으로 바뀝 니다. STATUS_TIME timestamp 작업 상태의 타임스탬프. PENDING_CHANGES int 대상에 적용되지 않은 변경 레코드의 수입니다. DISK_SWAP_SIZE int 이전 또는 오프로드된 트랜잭션에서 사용하는 디스크 공간 크기입니다. TASK_MEMORY int 사용된 현재 메모리(MB 단위). SOURCE_CURRENT varchar AWS DMS가 현재 읽는 원본 데이터 베이스의 위치입니다. timestamp AWS DMS가 현재 읽는 원본 데이터 베이스의 타임스탬프입니다. varchar 커밋되지 않은 가장 오래된 시작 트랜 잭션의 위치입니다. 이 값은 변경 사항 을 잃지 않고도 되돌릴 수 있는 가장 최근 위치입니다. timestamp 커밋되지 않은 가장 오래된 시작 트랜 잭션의 타임스탬프입니다. 이 값은 변 경 사항을 잃지 않고도 되돌릴 수 있는 가장 최근 타임스탬프입니다. timestamp 마지막 트랜잭션의 타임스탬프가 커밋 됩니다. 대량 적용 프로세스에서 이 값 은 대량으로 마지막 트랙잭션을 커밋 하기 위한 타임스탬프입니다. _POSITION SOURCE_CURRENT _TIMESTAMP SOURCE_TAIL _POSITION SOURCE_TAIL _TIMESTAMP SOURCE_TIMESTAMP _APPLIED 추가 제어 테이블 설정에는 다음이 포함됩니다. ControlSchema 이 옵션을 사용하여 AWS DMS 대상 제어 테이블의 데이터베이스 스키마 이름을 지정 합니다. 이 필드에서 정보를 입력하지 않으면, 테이블이 데이터베이스의 기본 위치로 복사됩니다. HistoryTimeslotInMinutes 이 옵션을 사용하여 복제 이력 테이블에서 각 시간 슬롯의 길이를 나타 냅니다. 기본값은 5분입니다. 244
작업 설정 스트림 버퍼 작업 설정 AWS CLI를 사용하여 다음과 같이 스트림 버퍼를 설정할 수 있습니다. StreamBufferCount 이 옵션을 사용하여 마이그레이션 작업을 위한 데이터 스트림 버퍼의 수를 지정 합니다. 기본 스트림 버퍼 개수는 3개입니다. 이 설정 값이 증가하면 데이터 추출 속도가 증가할 수 있습니 다. 그렇지만, 이 성능 증가는 원본 시스템과 복제 서버의 인스턴스 클래스를 포함하여 마이그레이션 환경 에 따라 크게 달라집니다. 대다수 상황에서 기본값은 충분합니다. StreamBufferSizeInMB 이 옵션을 사용하여 각 데이터 스트림 버퍼의 최대 크기를 나타냅니다. 기본 크기는 8MB입니다. 매우 큰 LOB를 사용하는 경우 이 옵션의 값을 늘려야 할 수 있습니다. 로그 파일에 스 트림 버퍼 크기가 부족하다는 메시지가 표시될 경우 이 값을 증가시켜야 할 수도 있습니다. 이 옵션의 크 기를 계산하려면 다음 수식을 사용합니다. [Max LOB size (or LOB chunk size)]*[number of LOB columns]*[number of stream buffers]*[number of tables loading in parallel per task(maxfullloadsubtasks)]*3 CtrlStreamBufferSizeInMB 이 옵션을 사용하여 제어 스트림 버퍼의 크기를 설정합니다. 값의 단위 는 메가바이트이고, 범위는 1~8입니다. 기본값은 5입니다. 예를 들어 수천 개에 이르는 많은 테이블을 사 용할 경우 이 값을 증가시켜야 할 수도 있습니다. 변경 처리 튜닝 설정 다음 설정은 AWS DMS에서 CDC(변경 데이터 캡처) 중에 대상 테이블의 변경 사항을 처리하는 방법을 결 정합니다. 이 설정 중 몇 개는 대상 메타데이터 파라미터 BatchApplyEnabled의 값에 따라 달라집니다. BatchApplyEnabled 파라미터에 대한 자세한 내용은 대상 메타데이터 작업 설정 (p. 240)를 참조하십시 오. 변경 처리 튜닝 설정에는 다음이 포함됩니다. 다음 설정은 대상 메타데이터 파라미터 BatchApplyEnabled가 true로 설정되어 있는 경우에만 적용됩니 다. BatchApplyPreserveTransaction true(으)로 설정하면 트랜잭션 무결성이 유지되고 배치가 보장 되어 원본의 트랜잭션 내에 있는 모든 변경 사항이 포함됩니다. 기본값은 true입니다. 이 설정은 Oracle 대상 엔드포인트에만 적용됩니다. false로 설정되면, 트랜잭션 무결성이 일시적인 시간 경과가 있어 성능이 개선될 수 있습니다. 원본 트랜 잭션의 모든 변경 사항이 한 배치(batch)로 대상에 적용된다는 보장은 없습니다. BatchApplyTimeoutMin AWS DMS이(가) 배치 변경 사항을 각각 적용할 때마다 대기하는 최소 시간 (초)을 설정합니다. 기본값은 1입니다. BatchApplyTimeoutMax AWS DMS이(가) 시간 초과 이전에 배치 변경 사항을 각각 적용할 때마다 대 기하는 최대 시간(초)을 설정합니다. 기본값은 30입니다. BatchApplyMemoryLimit Batch Optimized Apply 모드에서 사전 처리를 위해 사용하는 최대 메모리 양(MB)을 설정합니다. 기본값은 500입니다. BatchSplitSize 단일 배치에서 적용되는 변경 사항의 최대 수를 설정합니다. 기본값이 0이면 적용되 는 제한이 없음을 뜻합니다. 다음 설정은 대상 메타데이터 파라미터 BatchApplyEnabled가 false로 설정되어 있는 경우에만 적용됩 니다. MinTransactionSize 각 트랜잭션에 포함할 변경 사항의 최소 수를 설정합니다. 기본값은 1000입니 다. CommitTimeout AWS DMS에서 시간 초과를 선언하기 전까지 배치에서 트랜잭션을 수집하는 최대 시 간(초)을 설정합니다. 기본값은 1입니다. HandleSourceTableAltered 원본 테이블을 변경할 때 대상 테이블을 변경하려면 이 옵션을 true(으)로 설정합니다. 245
작업 설정 AWS DMS에서는 트랜잭션이 원본 및/또는 대상에 완전히 커밋될 때까지 트랜잭션 데이터를 메모리에 보관 하려고 시도합니다. 그렇지만, 할당된 메모리보다 크거나 지정된 시간 한도 내에서 커밋되지 않은 트랜잭션 은 디스크에 기록됩니다. 다음 설정은 변경 처리 모드에 상관 없이 변경 처리 튜닝에 적용됩니다. MemoryLimitTotal 디스크에 기록되기 전에 모든 트랜잭션이 메모리에서 점유할 수 있는 최대 크기 (MB 단위)를 설정합니다. 기본값은 1024입니다. MemoryKeepTime 디스크에 기록되기 전에 각 트랜잭션이 메모리에 유지될 수 있는 최대 시간(초)을 설 정합니다. 이 지속 시간은 AWS DMS에서 트랜잭션 캡처를 시작하는 시간부터 계산됩니다. 기본값은 60입 니다. StatementCacheSize 변경 사항을 대상에 적용할 때 나중에 실행할 수 있도록 서버에서 저장하는 준 비된 문의 최대 수를 설정합니다. 기본값은 50입니다. 최대값은 200입니다. 데이터 검증 작업 설정 원본에서 대상으로 데이터가 정확히 마이그레이션되었는지 확인할 수 있습니다. 작업에 대해 검증을 활성화 하면 AWS DMS에서는 테이블에 대해 전체 로드가 수행된 직후 소스 및 대상 데이터를 비교하기 시작합니 다. 작업 데이터 검증, 요구 사항, 데이터베이스 지원 범위, 보고 대상 지표에 대한 자세한 내용은 AWS DMS 작업 검증 (p. 301) 단원을 참조하십시오. 데이터 검증 설정 및 값에는 다음 사항이 포함됩니다. EnableValidation true로 설정한 경우 데이터 검증을 활성화합니다. 그렇지 않으면 작업에 대한 검증 은 비활성화됩니다. 기본값은 false입니다. FailureMaxCount 작업에 대한 검증이 일시 중지되기 전에 검증에 실패할 수 있는 최대 레코드 수를 지정합니다. 기본값은 10,000입니다. 검증에 실패하는 레코드 수와 상관없이 검증을 계속하려면 이 값을 원본의 레코드 수보다 더 높게 설정합니다. HandleCollationDiff 이 옵션이 true로 설정되면 비교할 소스 및 대상 레코드 식별 시 검증은 PostgreSQL 엔드포인트의 열 기준 데이터 정렬 차이를 고려합니다. 그렇지 않은 경우 열 기준 데이터의 이 러한 차이는 검증에서 무시됩니다. PostgreSQL 엔드포인트에서 열 기준 데이터 정렬은 데이터 검증에 중 요한 행의 순서를 지정할 수 있습니다. HandleCollationDiff를 true로 설정하면 이러한 데이터 정렬 차이가 자동으로 해결되고 데이터 검증에서 거짓 긍정이 방지됩니다. 기본값은 false입니다. RecordFailureDelayLimitInMinutes 검증 실패 세부 정보를 보고하기 전에 지연을 지정합니다. 일반적으로 AWS DMS는 작업 지연 시간을 사용하여 변경 사항이 대상에 이르는 실제 지연을 인식함으로 써 거짓 긍정을 방지합니다. 이러한 설정을 통해 실제 지연 값이 재정의되고, 검증 지표를 보고하기 전에 지연을 더 높게 설정할 수 있습니다. 기본값은 0입니다. TableFailureMaxCount 작업에 대한 검증이 일시 중지되기 전에 검증에 실패할 수 있는 최대 테이블 수를 지정합니다. 기본값은 1000입니다. 검증에 실패하는 테이블 수와 상관없이 검증을 계속하려면 이 값 을 원본의 테이블 수보다 더 높게 설정합니다. ThreadCount 검증 중 AWS DMS에서 사용하는 실행 스레드 수를 지정합니다. 각 스레드는 비교 및 검 증할 원본과 대상에서 아직 검증되지 않은 데이터를 선택합니다. 기본값은 5입니다. ThreadCount를 높 게 설정하면 AWS DMS가 검증을 더 빨리 완료할 수 있습니다. 하지만 AWS DMS는 동시 쿼리를 더 많이 실행하여 소스 및 대상에서 더 많은 리소스를 사용합니다. ValidationOnly 이 옵션이 true로 설정되면 작업을 실행하는 경우 데이터 마이그레이션이나 복제를 수행하지 않고 데이터 검증을 미리 봅니다. 이 옵션을 설정할 수 있으려면 AWS DMS 콘솔에서 작업 마이그레이션 유형을 Replicate data changes only(데이터 변경만 복제)로 설정합니다. 또는 AWS DMS API에서 마이그레이션 유형을 cdc로 설정합니 다. 이러한 접근 방법을 통해 실제로 데이터를 옮기기 전에 검증 결과를 확인하고 실패를 해결할 수 있습니다. 이 옵션은 모든 소스 데이터를 대상으로 마이그레이션한 후에 실패가 해결되기를 기다리는 것보다 더 효율 적일 수 있습니다. 기본값은 false입니다. 246
작업 설정 예를 들어 다음 JSON은 스레드의 기본 수를 두 배로 늘려 데이터 검증을 활성합니다. 또한 PostgreSQL 엔드 포인트에서 열 기준 데이터 정렬 차이로 야기된 레코드 순서의 차이도 고려합니다. 또한 검증 실패를 처리할 추가 시간을 고려하도록 검증 보고 지연을 제공합니다. "ValidationSettings": "EnableValidation": true, "ThreadCount": 10, "HandleCollationDiff": true, "RecordFailureDelayLimitInMinutes": 30 Note Oracle 엔드포인트의 경우, AWS DMS에서는 DBMS_CRYPTO를 사용하여 BLOB을 검증합니다. Oracle 엔드포인트에 BLOB이 사용되는 경우 Oracle 엔드포인트에 액세스하는 데 사용되는 사용자 계정에 DBMS_CRYPTO에 대한 실행 권한을 부여해야 합니다. 다음 명령문을 실행하여 이 작업을 수행합니다. grant execute on sys.dbms_crypto to <dms_endpoint_user>; 변경 처리 DDL을 다루기 위한 작업 설정 다음 설정은 AWS DMS에서 CDC(변경 데이터 캡처) 중에 대상 테이블의 데이터 정의 언어( DDL) 변경 사항 을 처리하는 방법을 결정합니다. 변경 처리 DDL을 다루기 위한 작업 설정은 다음과 같습니다. HandleSourceTableDropped 이 옵션을 true로 설정하면 원본 테이블을 삭제할 때 대상 테이블을 삭제합니다. HandleSourceTableTruncated 이 옵션을 true(으)로 설정하면 원본 테이블을 자를 때 대상 테이블 을 자릅니다. HandleSourceTableAltered 원본 테이블을 변경할 때 대상 테이블을 변경하려면 이 옵션을 true(으)로 설정합니다. 오류 처리 작업 설정 다음 설정을 사용하여 변경 데이터 캡처(CDC) 중에 복제 작업의 오류 처리 동작을 설정할 수 있습니다. DataErrorPolicy 레코드 수준에서 데이터 처리와 관련된 오류가 있을 때 AWS DMS에서 수행할 작업 을 결정합니다. 일부 데이터 처리 오류 예제에는 전환 오류, 변환 오류, 잘못된 데이터가 포함됩니다. 기본 값은 LOG_ERROR입니다. IGNORE_RECORD 작업은 계속되고 해당 레코드의 데이터는 무시됩니다. DataErrorEscalationCount 속성의 오류 카운터가 증가합니다. 따라서 테이블에 대한 오류 한도를 설정하면 이 오류는 한도를 향해 증가합니다. LOG_ERROR 작업은 계속되고 오류가 작업 로그에 기록됩니다. SUSPEND_TABLE 작업은 계속되지만 오류 레코드가 있는 테이블의 데이터는 오류 상태로 이동하고 데이터가 복제되지 않습니다. STOP_TASK 작업은 중지되고 수동 개입이 필요합니다. DataTruncationErrorPolicy 데이터를 자를 때 AWS DMS에서 수행하는 작업을 결정합니다. 기본 값은 LOG_ERROR입니다. IGNORE_RECORD 작업은 계속되고 해당 레코드의 데이터는 무시됩니다. DataErrorEscalationCount 속성의 오류 카운터가 증가합니다. 따라서 테이블에 대한 오류 한도를 설정하면 이 오류는 한도를 향해 증가합니다. 247
작업 설정 LOG_ERROR 작업은 계속되고 오류가 작업 로그에 기록됩니다. SUSPEND_TABLE 작업은 계속되지만 오류 레코드가 있는 테이블의 데이터는 오류 상태로 이동하고 데이터가 복제되지 않습니다. STOP_TASK 작업은 중지되고 수동 개입이 필요합니다. DataErrorEscalationPolicy 최대 오류 수(DataErrorsEscalationCount 파라미터에서 설정 됨)에 도달할 때 AWS DMS에서 수행하는 작업을 결정합니다. 기본값은 SUSPEND_TABLE입니다. SUSPEND_TABLE 작업은 계속되지만 오류 레코드가 있는 테이블의 데이터는 오류 상태로 이동하고 데이터가 복제되지 않습니다. STOP_TASK 작업은 중지되고 수동 개입이 필요합니다. DataErrorEscalationCount 특정 레코드의 데이터에 발생할 수 있는 최대 오류 수를 설정합니다. 이 수치에 도달하면, 오류 레코드를 포함하는 테이블의 데이터는 DataErrorEscalationCount에 설정된 정책에 따라 처리됩니다. 기본값은 0입니다. TableErrorPolicy 특정 테이블의 데이터 또는 메타데이터를 처리할 때 오류가 발생하는 경우 AWS DMS에서 수행할 작업을 결정합니다. 이 오류는 일반 테이블 데이터에만 적용되고 특정 레코드와 관련된 오류가 아닙니다. 기본값은 SUSPEND_TABLE입니다. SUSPEND_TABLE 작업은 계속되지만 오류 레코드가 있는 테이블의 데이터는 오류 상태로 이동하고 데이터가 복제되지 않습니다. STOP_TASK 작업은 중지되고 수동 개입이 필요합니다. TableErrorEscalationPolicy 최대 오류 수(TableErrorEscalationCount 파라미터를 사용 하여 설정됨)에 도달할 때 AWS DMS에서 수행하는 작업을 결정합니다. 기본값과 유일한 사용자 설정은 STOP_TASK이고, 여기에서 작업은 중지되고 수동 개입이 필요합니다. TableErrorEscalationCount 특정 테이블의 일반 데이터 또는 메타데이터에 발생할 수 있는 최대 오류 수입니다. 이 수치에 도달하면, 테이블의 데이터는 TableErrorEscalationPolicy에 설정된 정 책에 따라 처리됩니다. 기본값은 0입니다. RecoverableErrorCount 환경 오류가 발생할 때 작업을 다시 시작하기 위한 최대 시도 횟수입니다. 시스템이 작업을 지정된 횟수만큼 다시 시작하려고 시도하고 나면, 이 작업은 중지되고 수동 개입이 필요 합니다. 기본값은 -1이며, AWS DMS가 무기한 작업 재시작을 시도하도록 합니다. 이 값을 0으로 설정하면 작업을 다시 시작하기 위한 시도를 하지 않습니다. 치명적인 오류가 발생할 경우 AWS DMS는 6번 시도한 후에 작업 재시작 시도를 중단합니다. RecoverableErrorInterval 작업을 다시 시작하기 위한 다음 시도까지 AWS DMS이(가) 대기하는 시간(초)입니다. 기본값은 5입니다. RecoverableErrorThrottling 활성화되면 다시 시작을 시도할 때마다 작업을 다시 시작하기 위한 다음 시도까지의 간격이 증가합니다. 기본값은 true입니다. RecoverableErrorThrottlingMax RecoverableErrorThrottling이(가) 활성화되는 경우에 작 업을 다시 시작하기 위한 다음 시도까지 AWS DMS이(가) 대기하는 최대 시간(초)입니다. 기본값은 1800 입니다. ApplyErrorDeletePolicy DELETE 작업과 충돌이 있을 때 AWS DMS에서 수행하는 작업을 결정합 니다. 기본값은 IGNORE_RECORD입니다. IGNORE_RECORD 작업은 계속되고 해당 레코드의 데이터는 무시됩니다. ApplyErrorEscalationCount 속성의 오류 카운터가 증가합니다. 따라서 테이블에 대한 오류 한도 를 설정하면 이 오류는 한도를 향해 증가합니다. LOG_ERROR 작업은 계속되고 오류가 작업 로그에 기록됩니다. SUSPEND_TABLE 작업은 계속되지만 오류 레코드가 있는 테이블의 데이터는 오류 상태로 이동하고 데이터가 복제되지 않습니다. STOP_TASK 작업은 중지되고 수동 개입이 필요합니다. ApplyErrorInsertPolicy INSERT 작업과 충돌이 있을 때 AWS DMS에서 수행하는 작업을 결정합 니다. 기본값은 LOG_ERROR입니다. IGNORE_RECORD 작업은 계속되고 해당 레코드의 데이터는 무시됩니다. ApplyErrorEscalationCount 속성의 오류 카운터가 증가합니다. 따라서 테이블에 대한 오류 한도 를 설정하면 이 오류는 한도를 향해 증가합니다. LOG_ERROR 작업은 계속되고 오류가 작업 로그에 기록됩니다. 248
작업 설정 SUSPEND_TABLE 작업은 계속되지만 오류 레코드가 있는 테이블의 데이터는 오류 상태로 이동하고 데이터가 복제되지 않습니다. STOP_TASK 작업은 중지되고 수동 개입이 필요합니다. INSERT_RECORD 삽입한 원본 레코드와 동일한 기본 키를 사용하는 기존 대상 레코드가 있으면 대상 레코드가 업데이트됩니다. ApplyErrorUpdatePolicy UPDATE 작업과 충돌이 있을 때 AWS DMS에서 수행하는 작업을 결정합 니다. 기본값은 LOG_ERROR입니다. IGNORE_RECORD 작업은 계속되고 해당 레코드의 데이터는 무시됩니다. ApplyErrorEscalationCount 속성의 오류 카운터가 증가합니다. 따라서 테이블에 대한 오류 한도 를 설정하면 이 오류는 한도를 향해 증가합니다. LOG_ERROR 작업은 계속되고 오류가 작업 로그에 기록됩니다. SUSPEND_TABLE 작업은 계속되지만 오류 레코드가 있는 테이블의 데이터는 오류 상태로 이동하고 데이터가 복제되지 않습니다. STOP_TASK 작업은 중지되고 수동 개입이 필요합니다. UPDATE_RECORD 대상 레코드가 누락되는 경우 누락된 대상 레코드가 대상 테이블에 삽입됩니다. 이 옵션을 선택하는 경우 Oracle이 원본 데이터베이스이면 모든 원본 테이블 열에서 전체 보충 로깅을 활성 화해야 합니다. ApplyErrorEscalationPolicy 최대 오류 수(ApplyErrorsEscalationCount 파라미터를 사용 하여 설정됨)에 도달할 때 AWS DMS에서 수행하는 작업을 결정합니다. LOG_ERROR 작업은 계속되고 오류가 작업 로그에 기록됩니다. SUSPEND_TABLE 작업은 계속되지만 오류 레코드가 있는 테이블의 데이터는 오류 상태로 이동하고 데이터가 복제되지 않습니다. STOP_TASK 작업은 중지되고 수동 개입이 필요합니다. ApplyErrorEscalationCount 변경 프로세스 작업 중에 특정 테이블에서 발생 할 수 있는 최대 APPLY 충돌 수를 설정합니다. 이 개수에 도달하면, 테이블의 데이터는 ApplyErrorEscalationPolicy 파라미터에 설정된 정책에 따라 처리됩니다. 기본값은 0입니다. ApplyErrorFailOnTruncationDdl CDC 중에 추척되는 테이블에 대해 잘림이 수행될 때 작업이 실 패하도록 하려면 이 값을 true(으)로 설정합니다. 실패 메시지는 "Truncation DDL detected(잘림 DDL 감 지됨)"입니다. 기본값은 false입니다. 이 방법은 DDL 테이블 잘림을 복제하지 않는 PostgreSQL이나 다른 소스 엔드포인트에서는 사용할 수 없 습니다. FailOnNoTablesCaptured 작업이 시작될 때 작업에 대해 정의된 변환 규칙이 테이블을 찾지 못하는 경우 작업이 실패하도록 하려면 이 값을 true(으)로 설정합니다. 기본값은 false입니다. FailOnTransactionConsistencyBreached 이 옵션은 CDC와 함께 사용하기 위한 원본으로 Oracle을 사용하는 작업에 적용됩니다. 트랜잭션이 지정된 제한 시간보다 더 오래 동안 열려 있고 삭제될 수 있는 경우 작업이 실패하도록 하려면 true로 설정합니다. CDC 작업이 Oracle로 시작되는 경우 AWS DMS는 CDC를 시작하기 전에 가장 오래된 열린 트랜잭션이 닫힐 때까지 기다립니다. 제한 시간에 도달할 때까지 가장 오래된 열린 트랜잭션이 닫히지 않는 경우 일반 적으로 해당 트랜잭션이 무시되고 CDC가 시작됩니다. 이 설정이 true로 설정되면 작업이 실패합니다. FullLoadIgnoreConflicts 캐시된 이벤트를 적용할 때 AWS DMS가 "zero rows affected" 및 "duplicates" 오류를 무시하도록 하려면 이 값을 false로 설정합니다. true로 설정하면 AWS DMS가 이 러한 오류를 무시하지 않고 모든 오류를 보고합니다. 기본값은 true입니다. 작업 설정 저장 다른 작업의 설정을 다시 사용해야 하는 경우에 작업 설정을 JSON 파일로 저장할 수 있습니다. 예를 들어, 다음 JSON 파일에는 작업에 대해 저장된 설정이 포함됩니다. 249
작업 설정 "TargetMetadata": "TargetSchema": "", "SupportLobs": true, "FullLobMode": false, "LobChunkSize": 64, "LimitedSizeLobMode": true, "LobMaxSize": 32, "BatchApplyEnabled": true "FullLoadSettings": "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, "StopTaskCachedChangesApplied": false, "StopTaskCachedChangesNotApplied": false, "MaxFullLoadSubTasks": 8, "TransactionConsistencyTimeout": 600, "CommitRate": 10000 "Logging": "EnableLogging": false "ControlTablesSettings": "ControlSchema":"", "HistoryTimeslotInMinutes":5, "HistoryTableEnabled": false, "SuspendedTablesTableEnabled": false, "StatusTableEnabled": false "StreamBufferSettings": "StreamBufferCount": 3, "StreamBufferSizeInMB": 8 "ChangeProcessingTuning": "BatchApplyPreserveTransaction": true, "BatchApplyTimeoutMin": 1, "BatchApplyTimeoutMax": 30, "BatchApplyMemoryLimit": 500, "BatchSplitSize": 0, "MinTransactionSize": 1000, "CommitTimeout": 1, "MemoryLimitTotal": 1024, "MemoryKeepTime": 60, "StatementCacheSize": 50 "ChangeProcessingDdlHandlingPolicy": "HandleSourceTableDropped": true, "HandleSourceTableTruncated": true, "HandleSourceTableAltered": true "ErrorBehavior": "DataErrorPolicy": "LOG_ERROR", "DataTruncationErrorPolicy":"LOG_ERROR", "DataErrorEscalationPolicy":"SUSPEND_TABLE", "DataErrorEscalationCount": 50, "TableErrorPolicy":"SUSPEND_TABLE", "TableErrorEscalationPolicy":"STOP_TASK", "TableErrorEscalationCount": 50, "RecoverableErrorCount": 0, "RecoverableErrorInterval": 5, "RecoverableErrorThrottling": true, "RecoverableErrorThrottlingMax": 1800, "ApplyErrorDeletePolicy":"IGNORE_RECORD", "ApplyErrorInsertPolicy":"LOG_ERROR", "ApplyErrorUpdatePolicy":"LOG_ERROR", "ApplyErrorEscalationPolicy":"LOG_ERROR", 250
LOB 지원 설정 "ApplyErrorEscalationCount": 0, "FullLoadIgnoreConflicts": true AWS DMS 작업의 원본 데이터베이스에 대한 LOB 지 원 설정 대용량 이진 객체(LOB)는 때때로 시스템 간에 마이그레이션하기 어려울 수 있습니다. AWS DMS에는 LOB 열을 튜닝할 때 도움이 되는 다양한 옵션이 있습니다. AWS DMS에서 어느 데이터 형식을 언제 LOB로 고려 하는지 확인하려면 AWS DMS 설명서를 참조하십시오. 다른 데이터베이스로 데이터를 마이그레이션할 때에는 LOB 저장 방법을 재고해 볼 수 있으며, 특히 이종 마 이그레이션에서 그러합니다. 이 작업을 수행할 경우, LOB 데이터를 마이그레이션할 필요가 없습니다. LOB를 포함하기로 결정하는 경우 다른 LOB 설정을 결정할 수 있습니다. LOB는 LOB가 처리되는 방식을 결정합니다. 전체 LOB 모드 전체 LOB 모드에서 AWS DMS는 크기와 상관없이 모든 LOB를 원본에서 대상으로 마 이그레이션합니다. 이 구성에서 AWS DMS에는 예상할 수 있는 최대 크기의 LOB 정보가 없습니다. 또 한, LOB는 한 번에 하나씩, 조각별로 마이그레이션됩니다. 전체 LOB 모드는 매우 느릴 수 있습니다. 제한적 LOB 모드 제한적 LOB 모드에서 AWS DMS가 수용해야 하는 최대 크기의 LOB를 설정합니다. 이렇게 하면 AWS DMS이(가) 메모리를 미리 할당하고 LOB 데이터를 대량으로 로드할 수 있습니다. 최 대 LOB 크기를 초과하는 LOB는 잘리고 경고가 로그 파일에 발행됩니다. 제한적 LOB 모드는 전체 LOB 모드에 비해 상당한 성능 이점이 있습니다. 가능하다면 [limited LOB mode] 사용을 권장합니다. Note Oracle을 통해 LOB는 가능할 때마다 VARCHAR 데이터 형식으로 처리됩니다. 이 접근 방식은 AWS DMS가 데이터베이스에서 데이터를 대량으로 가져오므로, 다른 메서드보다 훨씬 빠릅니다. Oracle에서 VARCHAR의 최대 크기는 64K이므로, Oracle이 원본 데이터베이스일 때 64K 미만의 제한적인 LOB 크기가 최적입니다. 작업이 제한적 LOB 모드에서 실행되도록 구성된 경우 최대 LOB 크기(K) 옵션은 AWS DMS이(가) 허용하 는 최대 크기의 LOB를 설정합니다. 이 값보다 큰 LOB는 이 값으로 잘립니다. 작업이 전체 LOB 모드를 사용하도록 구성된 경우 AWS DMS은(는) LOB를 여러 조각으로 가져옵니다. [LOB chunk size (K)] 옵션은 각 조각의 크기를 결정합니다. 이 옵션을 설정하면, 네트워크 구성에서 허용 된 최대 패킷 크기에 특히 유의해야 합니다. LOB 청크 크기가 최대 허용 패킷 크기를 초과하면, 연결 해제 오류가 나타날 수 있습니다. 이 옵션을 지정하는 작업 설정에 대한 자세한 내용은 대상 메타데이터 작업 설정 (p. 240) 단원을 참조하십 시오. 여러 작업 생성 일부 마이그레이션 시나리오에서는 여러 마이그레이션 작업을 생성해야 할 수도 있습니다. 작업은 독립적으 로 수행되며 동시에 실행할 수 있습니다. 각 작업에는 자체 초기 로드, CDC, 로그 읽기 프로세스가 있습니다. 데이터 조작 언어(DML)를 통해 관련된 테이블은 동일한 작업의 일부여야 합니다. 마이그레이션에서 여러 작업을 생성해야 하는 이유는 주로 다음과 같습니다. 작업용 대상 테이블은 시스템을 팬아웃하거나 여러 시스템으로 나눌 경우 등 각기 다른 데이터베이스에 상 주합니다. 대규모 테이블의 마이그레이션을 여러 작업으로 나누려면 필터링을 사용해야 합니다. 251
지속적 복제 작업 Note 각 작업에는 자체 변경 캡처와 로그 읽기 프로세스가 있기 때문에 변경 사항은 여러 작업에서 조정 되지 않습니다. 따라서 여러 작업을 사용하여 마이그레이션을 수행할 때에는 원본 트랜잭션이 단일 작업 내에 완전히 포함되도록 해야 합니다. AWS DMS를 사용하여 지속 복제를 위한 작업 생성 소스 데이터 스토어에 대한 지속적 변경 사항을 캡처하는 AWS DMS 작업을 생성할 수 있습니다. 데이터를 마이그레이션하는 동안에도 이 변경 사항을 캡처할 수 있습니다. 작업을 생성하여 지원된 대상 데이터 스토 어로 초기 마이그레이션을 완료한 후 지속적 변경 사항을 캡처할 수도 있습니다. 이 프로세스를 지속적인 복 제 또는 CDC(변경 데이터 캡처)라고 부릅니다. AWS DMS에서는 원본 데이터 스토어에서 지속적인 변경 사 항을 복제할 때 이 프로세스를 사용합니다. 이 프로세스는 데이터베이스 엔진의 기본 API를 사용하여 데이터 베이스 로그에 대한 변경 사항을 수집합니다. 각 소스 엔진에는 이 변경 스트림을 지정된 사용자 계정에 노출하기 위한 특정 구성 요구 사항이 있습니다. 대다수 엔진에서는 데이터 손실 없이 캡처 프로세스를 지원할 수 있도록 유의미한 방식으로 변경 데이터 를 소모하도록 해주는 일부 추가 구성이 필요합니다. 예를 들어, Oracle은 보충 로깅 추가를 필요로 하고, MySQL은 행 수준의 2진법 로깅(빈 로깅)을 필요로 합니다. AWS DMS에서는 소스 데이터베이스의 지속적인 변경 사항을 읽기 위해 엔진별 API 작업을 사용하여 소스 엔진의 트랜잭션 로그에서 변경 사항을 읽습니다. 다음은 AWS DMS 작동 방식에 대한 몇 가지 예입니다. Oracle의 경우 AWS DMS는 Oracle LogMiner API나 bfile API(binary reader API) 중 하나를 사용하여 지속 적 변경 사항을 읽습니다. AWS DMS는 시스템 변경 수(SCN)에 따라 온라인 또는 아카이브 다시 실행 로 그를 읽습니다. Microsoft SQL Server의 경우 AWS DMS은(는) MS-Replication 또는 MS-CDC를 사용해 SQL 서버 트랜잭 션 로그에 정보를 기록합니다. 그러면 SQL 서버에서 fn_dblog() 또는 fn_dump_dblog() 함수를 사 용해 로그 시퀀스 번호(LSN)에 토대를 둔 트랜젝션 로그의 변경 사항을 읽습니다. MySQL의 경우, AWS DMS은(는) 행 기반 바이너리 로그(binlogs)의 변경 사항을 읽고, 이 변경 사항을 대 상으로 마이그레이션 합니다. PostgreSQ의 경우, AWS DMS은(는) 논리적 복제 슬롯을 설정하고, test_decoding 플러그인을 사용해 원본의 변경 사항을 읽고, 이를 대상으로 마이그레이션 합니다. Amazon RDS를 소스로 할 경우, CDC를 설정할 수 있는 백업을 권장합니다. 충분한 시간 (대개 24시간이 면 충분함) 동안 원본 데이터베이스가 변경 로그를 유지하도록 구성하는 것이 좋습니다. 다음은 진행 중인 복제 작업의 두 가지 유형입니다. 전체 로딩 및 CDC - 이 작업은 기존 데이터를 마이그레이션하고 원본 데이터베이스의 변경 사항에 따라 대상 데이터베이스를 업데이트합니다. CDC만 - 이 작업은 대상 데이터베이스에 데이터를 갖은 후 지속적인 변경 사항을 마이그레이션합니다. CDC 시작 포인트에서 복제를 시작합니다. 몇몇 지점에서 AWS DMS 지속적인 복제 작업(변경 데이터 캡처만 해당)을 시작할 수 있습니다. 다음을 포함 합니다. 사용자 지정 CDC 시작 시간부터 AWS Management 콘솔 또는 AWS CLI를 사용하여 복제를 시작하고 싶은 지점에 타임스탬프로 AWS DMS를 제공합니다. AWS DMS는 사용자 지정 CDC 시작 시간부터 지속 적 복제 작업을 시작합니다. AWS DMS는 주어진 타임스탬프(UTC 시간)를 SQL 서버용 LSN 또는 Oracle 용 SCN 등과 같은 원래 시작 포인트로 변환합니다. AWS DMS는 엔진별 방법을 사용하여 소스 엔진의 변 경 스트림에 따른 마이그레이션 작업을 어디서 정확히 시작할지 결정합니다. 252
CDC 시작 포인트에서 복제 시작 Note PostgreSQL을 소스로 사용할 경우 사용자 지정 CDC 시작 시간을 지원하지 않습니다. PostgreSQL 데이터베이스 엔진에는 타임스탬프를 SCN 또는 SCN으로 매핑하는 방법이 없기 때 문입니다. Oracle 및 SQL Server에는 그러한 방법이 있습니다. CDC 원래 시작 지점부터 소스 엔진 트랜잭션 로그의 원래 포인트에서 시작할 수도 있습니다. 타임스탬 프는 트랜잭션 로그에 여러 네이티브 지점을 나타낼 수 있기 때문에 경우에 따라 이 방법이 좋을 수 있습니 다. AWS DMS는 다음 소스 엔드포인트에 대해 이 기능을 지원합니다. SQL 서버 Oracle MySQL CDC 네이티브 시작 지점 결정 CDC 고유 시작 지점은 CDC를 시작할 수 있는 장소의 시간을 정의하는 데이터베이스 엔진 로그의 지점입니 다. 한 예로 대량 데이터 덤프가 지정 시점부터 대상에 적용되었다고 가정합니다. 이 경우 기본 시작 지점을 찾아 덤프 실행 전의 시점에서 진행 중인 복제 전용 작업을 확인할 수 있습니다. 다음은 지원되는 소스 엔진에서 CDC 네이티브 시작 지점을 찾는 방법에 대한 예입니다. SQL 서버 SQL Server의 로그 시퀀스 번호(LSN)는 세 부분으로 구성되어 있습니다. 가상 로그 파일(VLF) 시퀀스 번호 로그 블록의 시작 오프셋 슬롯 번호 LSN의 예는 다음과 같습니다. 00000014:00000061:0001 트랜잭션 로그 백업 설정에 따라 SQL Server 마이그레이션 작업의 시작 지점을 확인하려면 SQL Server 의 fn_dblog() 또는 fn_dump_dblog() 함수를 사용합니다. SQL Server와 함께 CDC 네이티브 시작 시점을 사용하려면 지속 복제에 참여하는 모든 테이블에 대한 게시를 생성합니다. 게시를 생성하는 자세한 방법은 복제를 계속 진행하기 위한 SQL 서버 발행물을 생 성합니다. (p. 102) 단원을 참조하십시오. 네이티브 시작 시점 없이 CDC를 사용할 경우, AWS DMS는 자 동으로 게시를 생성합니다. Oracle 시스템 변경 번호(SCN)은 Oracle 데이터베이스에서 사용하는 논리적 내부 타임스탬프입니다. SCN은 트랜젝션의 ACID 속성을 충족하는 데 필요한 (데이터베이스 내부에서 발생하는)이벤트를 배열합니다. Oracle 데이터베이스는 SCN를 사용하여 디스크에 작성된 모든 변화가 진행된 위치를 표시합니다. 그리 하여 복원 작업이 이미 작성된 변경 사항을 적용하지 않습니다. Oracle은 또한 SCN을 사용하여 복구가 중지되지 않도록 데이터 세트에 다시 실행이 없는 지점을 표시합니다. Oracle SCN에 대한 자세한 내용 은 Oracle 설명서를 참조하십시오. 다음을 실행해 Oracle 데이터베이스의 현재 SCN을 가져옵니다. SELECT current_scn FROM V$DATABASE MySQL MySQL 버전 5.6.3이 출시되기 전에는 MySQL 로그 시퀀스 번호(LSN)는 4바이트의 부호 없는 정수였습 니다. 다시 실행 로그 파일 크기 한도가 4GB에서 512GB로 증가한 MySQL 5.6.3부터 LSN이 8바이트의 253
작업 수정 부호 없는 정수가 되었습니다. 추가 사이즈 정보를 저장하기 위해 증가되면 바이트 추가가 요청됩니다. LSN 값을 사용하는 MySQL 5.6.3 이후 버전에 빌드된 애플리케이션은 LSN 값을 저장해 비교하기 위해 32비트 대신 64비트 변수를 사용해야 합니다. MySQL LSN에 대한 자세한 내용은 MySQL 설명서를 참 조하십시오. 다음을 실행해 MySQL 데이터베이스의 현재 LSN을 가져옵니다. mysql> show master status; 쿼리는 binlog 파일 이름, 위치 및 기타 값을 반환합니다. CDC 네이티브 시작 지점은 binlogs 파일 이름 과 위치가 조합되어 있습니다. 예를 들어, mysql-bin-changelog.000024:373입니다. 이 예제에서 mysql-bin-changelog.000024는 binlogs 파일 이름이고, 373은 AWS DMS가 변경 캡처를 시작하 는 데 필요한 위치입니다. 체크포인트를 CDC 시작 지점으로 사용 지속적 복제 작업이 변경 사항을 마이그레이션하는 동안, AWS DMS는 때때로 AWS DMS에 대한 체크포인 트 정보를 캐싱합니다. AWS DMS가 생성한 체크포인트에는 정보가 포함되어 복제 엔진이 변경 스트림의 복 구 지점을 파악할 수 있습니다. 체크포인트를 사용하여 변경 타임라인으로 되돌아가거나 실패한 마이그레이 션 작업을 복구합니다. 또한 이 체크포인트를 사용해 특정 시간에 다른 대상으로 다른 지속적 복제 작업을 시 작할 수 있습니다. 다음 방법 중 하나로 체크포인트 정보를 얻을 수 있습니다. API 명령문 DescribeReplicationTasks을 실행하고 결과를 검토합니다. 작업 별로 정보를 필터링을 하고, 체크포인트를 검색할 수 있습니다. 작업이 중지/실패 상태일 때 마지막 체크포인트를 검색할 수 있습 니다. 대상 인스턴스에 awsdms_txn_state이라는 메타데이터를 봅니다. 테이블을 쿼리하여 체 크포인트 정보를 얻을 수 있습니다. 메타데이터 테이블을 생성하기 위해서 작업을 생성할 때 TaskRecoveryTableEnabled 파라미터를 Yes로 설정합니다. 이 설정은 AWS DMS가 대상 메타데이터 테이블에 체크포인트 정보를 계속 기록하도록 합니다. 작업이 삭제되면 이 정보는 없어집니다. 예를 들어, 다음은 메타데이터 테이블의 체크포인트 예입니 다.checkpoint:V1#34#00000132/0F000E48#0#0#*#0#121 약정 또는 서버 시점에서 작업을 중지합니다 CDC 네이티브 시작 지점의 소개와 함께, AWS DMS는 다음 지점에서 작업을 중지할 수도 있습니다. 소스의 약정 시간 복제 인스턴스의 서버 시간 요청에 따른 작업을 중지할 수 있도록 작업을 수정하고 시간을 UTC로 설정합니다. 설정한 약정 또는 서버 시 간에 따라 작업은 자동적으로 중지됩니다. 또한, 작성 생성 시 마이그레이션 작업을 중지할 적절한 시점을 알 고 있다면, 작업을 생성할 때 중지 시간을 설정할 수 있습니다. 작업 수정 작업 설정, 테이블 매핑 또는 기타 설정을 변경해야 하는 경우 작업을 수정할 수 있습니다. DMS 콘솔 에서 작업을 수정하려면 작업을 선택하고 [Modify]를 선택합니다. AWS CLI 또는 AWS DMS API 명령 ModifyReplicationTask를 사용할 수도 있습니다. 254
작업 중 테이블 다시 로드 작업을 수정하는 몇 가지 제한 사항이 있습니다. 다음이 포함됩니다. 작업의 원본 또는 대상 엔드포인트를 수정할 수 없습니다. 작업의 마이그레이션 유형은 변경할 수 없습니다. 실행한 작업의 상태는 [Stopped] 또는 [Failed]여야만 수정할 수 있습니다. 작업 중 테이블 다시 로드 작업을 실행하는 동안 원본의 데이터를 사용하여 대상 데이터베이스 테이블을 다시 로드할 수 있습니다. 작 업 중에 파티션 작업으로 인해 오류가 발생하거나 데이터가 변경될 경우(예: Oracle을 사용하는 경우) 테이블 을 다시 로드해야 할 수도 있습니다. 작업에서 최대 10개 테이블을 다시 로드할 수 있습니다. 테이블을 다시 로드하려면, 다음 조건을 적용해야 합니다. 작업이 실행 중이어야 합니다. 작업의 마이그레이션 방법이 [Full Load] 또는 [Full Load with CDC]여야 합니다. 중복 테이블은 허용되지 않습니다. AWS DMS는 이전에 읽은 테이블 정의를 보관하며 재로드 작업 중에 이를 다시 생성하지 않습니다. ALTER TABLE ADD COLUMN, DROP COLUMN 등 테이블이 다시 로드되기 전에 테이블에 만들어진 DDL 문으로 인해 다시 로드 작업이 실패할 수 있습니다. AWS Management 콘솔 AWS DMS 콘솔을 사용하여 테이블을 다시 로드하려면 다음을 수행합니다. 1. AWS Management 콘솔에 로그인하고 AWS DMS 선택을 수행합니다. AWS Identity and Access Management(IAM) 사용자로 로그인한 경우에는 AWS DMS에 액세스하기 위한 적절한 권한이 있어야 합니다. 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 (p. 32) 섹션을 참조하십 시오. 2. 탐색 창에서 [Tasks]를 선택합니다. 3. 다시 로드할 테이블이 있는 실행 중인 작업을 선택합니다. 4. 테이블 통계 탭을 선택합니다. 255
AWS Management 콘솔 5. 다시 로드할 테이블을 선택합니다. 작업이 더 이상 실행되고 있지 않으면 테이블을 다시 로드할 수 없습 니다. 6. Reload table data(테이블 데이터 다시 로드)를 선택합니다. 256
테이블 매핑 AWS DMS이(가) 테이블을 다시 로드하려고 준비하고 있는 경우 콘솔은 테이블 상태를 Table is being reloaded(테이블 다시 로드 중)로 변경합니다. 작업 설정을 지정하기 위한 테이블 매핑 사용 테이블 매핑에서는 여러 유형의 규칙을 사용하여 데이터 원본, 원본 스키마, 데이터, 작업 중 발생하는 모든 변환을 지정합니다. 테이블 매핑을 사용하여 마이그레이션할 데이터베이스의 개별 테이블과 마이그레이션 에 사용할 스키마를 지정할 수 있습니다. 또한, 필터를 사용하여 필요한 지정된 테이블 열에서 복제할 데이터 를 지정할 수 있습니다. 변환을 사용하여 대상 데이터베이스에 기록된 데이터를 수정할 수 있습니다. 콘솔에서 테이블 매핑을 통해 테이블 선택 및 변환 지정 테이블 선택과 변환 지정을 포함하여 AWS Management 콘솔을 사용하여 테이블 매핑을 수행할 수 있습니 다. 콘솔에서 위치 섹션을 사용하여 스키마, 테이블, 작업을 지정합니다(포함 또는 제외). 필터 섹션을 사용하 여 테이블에서 열 이름과 복제 작업에 적용할 조건을 지정합니다. 이와 함께 이 두 작업은 선택 규칙을 생성 합니다. 1개 이상의 선택 규칙을 지정한 후 테이블 매핑에 변환을 포함시킬 수 있습니다. 변환을 사용하여 스키마나 테이블 이름을 변경하거나, 스키마나 테이블에 접두사나 접미사를 추가하거나, 또는 테이블 열을 제거할 수 있습니다. 다음 예제는 EntertainmentAgencySample이라는 스키마에서 Customers라는 테이블의 선택 규칙을 설 정하는 방법을 보여줍니다. 가이드 탭에서 선택 규칙과 변환을 만듭니다. 이 탭은 소스 엔드포인트에 스키마 와 테이블 정보가 있을 경우에만 표시됩니다. AWS 콘솔을 사용하여 테이블 선택, 필터 기준, 변환을 지정하려면 1. AWS Management 콘솔에 로그인하고 AWS DMS 선택을 수행합니다. AWS Identity and Access Management(IAM) 사용자로 로그인한 경우에는 AWS DMS에 액세스하기 위한 적절한 권한이 있어야 합니다. 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 (p. 32) 섹션을 참조하십 시오. 2. [Dashboard] 페이지에서 [Tasks]를 선택합니다. 3. [Create Task]를 선택합니다. 4. [Task name], [Replication instance], [Source endpoint], [Target endpoint], [Migration type]을 포함하여 작업 정보를 입력합니다. 테이블 매핑 섹션에서 가이드를 선택합니다. 257
콘솔에서 테이블 매핑을 통해 테이블 선택 및 변환 지정 5. 테이블 매핑 섹션에서 스키마 이름과 테이블 이름을 선택합니다. 테이블 이름을 지정할 때 "%"를 와일드 카드 값으로 사용할 수 있습니다. 수행할 작업을 지정하여 필터에서 정의한 데이터를 포함하거나 제외합 니다. 258
콘솔에서 테이블 매핑을 통해 테이블 선택 및 변환 지정 6. 열 필터 추가와 조건 추가 링크를 사용하여 필터 정보를 지정합니다. a. 열 필터 추가를 선택하여 열과 조건을 지정합니다. b. 조건 추가를 선택하여 조건을 추가할 수 있습니다. 다음은 01 및 85 사이에 AgencyIDs을(를) 포함하는 Customers 테이블에 대한 필터를 보여주는 예입 니다. 259
콘솔에서 테이블 매핑을 통해 테이블 선택 및 변환 지정 7. 원하는 대로 선택하고 선택 규칙 추가를 선택합니다. 8. 최소 1개 이상의 선택 규칙을 생성한 후 작업에 변환을 추가할 수 있습니다. 변환 규칙 추가를 선택합니 다. 9. 변환할 대상을 선택하고 요청된 추가 정보를 입력합니다. 다음은 Customer 테이블에서 AgencyStatus 열을 삭제하는 변환을 보여주는 예입니다. 260
콘솔에서 테이블 매핑을 통해 테이블 선택 및 변환 지정 10. 변환 규칙 추가를 선택합니다. 11. (선택 사항) 선택 규칙 추가 또는 변환 규칙 추가를 선택하여 선택 규칙 또는 변환 규칙을 추가합니다. 모 두 마쳤으면 [Create task]를 선택합니다. 261
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 JSON을 사용하여 테이블 매핑을 통해 테이블 선택 및 변환 지정 테이블 매핑을 JSON 형식으로 생성할 수 있습니다. AWS DMS Management Console을 사용하여 마이그레 이션 작업을 생성할 경우 테이블 매핑 상자에 JSON을 직접 입력할 수 있습니다. CLI 또는 API를 사용해 마이 그레이션을 수행할 경우, JSON 파일을 생성하여 마이그레이션 중에 적용하려는 테이블 매핑을 지정할 수 있 습니다. 사용할 테이블이나 스키마를 지정하고, 스키마와 테이블 변환을 수행할 수 있습니다. selection 및 transformation 규칙 유형을 사용하여 테이블 매핑 규칙을 생성합니다. Note Amazon S3 대상의 경우 post-processing 규칙 유형과 add-tag 규칙 작업을 사용하여 선택된 테이블 및 스키마로 매핑된 S3 객체에 태그를 지정할 수도 있습니다. 자세한 내용은 Amazon S3 객 체 태깅 (p. 176) 단원을 참조하십시오. 선택 규칙 및 작업 테이블 매핑을 사용하여 사용할 테이블이나 스키마를 지정하기 위해 선택 규칙과 작업을 이용할 수 있습니 다. 선택 규칙 유형을 사용하는 테이블 매핑 규칙의 경우, 다음 값을 적용할 수 있습니다. 파라미터 가능한 값 설명 rule-type selection 테이블 매핑을 지정할 때에는 1개 이상의 선택 규칙을 정의합니다. rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값. rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름. rule-action include, exclude, explicit 규칙에서 선택한 객체 또는 객체들을 포 함하거나 제외합니다. explicit가 지정 되면 명시적으로 지정된 테이블 및 스키 마에 해당하는 객체 하나만을 선택 및 포 함할 수 있습니다. object-locator 객체는 다음 파라미터를 사용합니다. 규칙이 적용되는 각 스키마와 테이 블의 이름입니다. rule-action이 include이거나 exclude인 경우 각 object-locator 파라미터의 값의 전 부 또는 일부에 대한 와일드카드로 "%" 퍼센트 기호를 사용할 수 있습니다. 따라 서 다음 항목들을 일치시킬 수 있습니다. schema-name 스키마의 이름입니 다. table-name 테이블의 이름입니다. 단일 스키마의 단일 테이블 일부 또는 전체 스키마의 단일 테이블 단일 스키마의 일부 또는 전체 테이블 일부 또는 전체 스키마의 일부 또는 전 체 테이블 rule-action이 explicit인 경우 단 일 테이블 및 스키마의 정확한 이름만을 지정할 수 있습니다(와일드카드 없음). 262
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 파라미터 가능한 값 설명 load-order 양의 정수입니다. 최댓값은 2147483647 입니다. 테이블 로드 우선순위를 지정합니다. 우 선순위 값이 높은 테이블이 먼저 로드됩 니다. filters 객체의 배열. 소스를 필터링하기 위한 하나 이상의 객 체입니다. 소스의 단일 열에서 필터링할 객체 파라미터를 지정합니다. 여러 열에 서 필터링할 여러 객체를 지정합니다. 자 세한 내용은 소스 필터 사용 (p. 286) 단 원을 참조하십시오. Example 스키마에서 모든 테이블 마이그레이션 다음은 소스에서 이름이 Test인 스키마의 모든 테이블을 대상 엔드포인트로 마이그레이션하는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%" "rule-action": "include" ] Example 스키마에서 일부 테이블 마이그레이션 다음은 소스에서 이름이 Test인 스키마에서 DMS로 시작하는 테이블을 제외한 모든 테이블을 대상 엔드포인 트로 마이그레이션하는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%" "rule-action": "include" "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "Test", "table-name": "DMS%" "rule-action": "exclude" ] 263
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 Example 단일 스키마에서 지정된 단일 테이블을 마이그레이션 다음은 소스의 NewCust 스키마에서 Customer 테이블을 대상 엔드포인트로 마이그레이션하는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "NewCust", "table-name": "Customer" "rule-action": "explicit" ] Note 여러 선택 규칙을 지정하여 여러 테이블 및 스키마에서 명시적으로 선택할 수 있습니다. Example 설정된 순서로 테이블 마이그레이션 다음은 테이블을 두 개를 마이그레이션하는 예제입니다. 테이블loadfirst(우선순위 2)은 loadsecond 테 이블 전에 마이그레이션됩니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "loadfirst" "rule-action": "include", "load-order": "2" "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "Test", "table-name": "loadsecond" "rule-action": "include", "load-order": "1" ] 변환 규칙 및 작업 변환 작업을 사용하여 선택한 스키마 또는 테이블에 적용할 변환을 지정합니다. 변환 규칙은 선택적입니다. 264
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 변환 규칙 유형을 사용하는 테이블 매핑 규칙의 경우, 다음 값을 적용할 수 있습니다. 파라미터 가능한 값 설명 rule-type transformation 선택 규칙에서 지정한 각 객체에 규칙을 적용하는 값입니다. 달리 지정되지 않는 한 transformation을 사용합니다. rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값. rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름. object-locator 객체는 다음 파라미터를 사용합니다. 규칙이 적용되는 각 스키마, 테이블, 테이 블 테이블스페이스, 인덱스 테이블스페이 스의 이름입니다. 각 object-locator 파라미터 값의 전부 또는 일부에 '%'(퍼센 트 기호)를 와일드카드로 사용할 수 있습 니다. 따라서 다음 항목들을 일치시킬 수 있습니다. schema-name 스키마의 이름입니 다. table-name 테이블의 이름입니다. table-tablespace-name 기존 테 이블 테이블스페이스의 이름입니다. index-tablespace-name 기존 인 덱스 테이블스페이스의 이름입니다. 단일 스키마의 단일 테이블 일부 또는 전체 스키마의 단일 테이블 단일 스키마의 일부 또는 전체 테이블 일부 또는 전체 스키마의 일부 또는 전 체 테이블 또한 table-tablespace-name 또는 index-tablespace-name 파라미터 는 Oracle 소스 엔드포인트와 일치시키 는 데만 사용할 수 있습니다. 단일 규칙 에서 table-tablespace-name 또는 index-tablespace-name를 지정할 수 있지만 둘 다 지정할 수는 없습니다. 따라서 다음 항목 중 하나와 일치시킬 수 있습니다. 하나의, 일부 또는 모든 테이블 테이블 스페이스 하나의, 일부 또는 모든 인덱스 테이블 스페이스 rule-action rename remove-column convert-lowercase, convertuppercase add-prefix, remove-prefix, replace-prefix add-suffix, remove-suffix, replace-suffix 객체에 적용할 변환. 모든 변환 규칙 작업 은 대소문자를 구분합니다. define-primary-key rule-target schema, table, column, tabletablespace, index-tablespace 265 변환 중인 객체 유형입니다. table-tablespace 또는 indextablespace 값은 Oracle 대상 엔
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 파라미터 가능한 값 설명 드포인트에만 사용할 수 있습니다. 또한 object-locator: tabletablespace-name 또는 indextablespace-name의 일부로 지정하는 해당 파라미터와 일치하는 값을 지정합니 다. value 대상 유형에서 명명 규칙을 따르는 영숫 자 값입니다. rename과 같이 입력이 필요한 작업의 새 값입니다. old-value 대상 유형에서 명명 규칙을 따르는 영숫 자 값입니다. replace-prefix와 같이 대체가 필요 한 작업의 이전 값입니다. primary-keydef 객체는 다음 파라미터를 사용합니다. 규칙 작업이 define-primary-key로 설정되고 규칙 대상이 table로 설정된 경우 이 파라미터는 변환된 테이블에서 고유 키의 이름, 유형 및 내용을 정의합니 다. 기본적으로 고유 키는 기본 키로 정의 됩니다. name 테이블에 대한 새 기본 키 또는 고유 인덱스의 이름입니다. (선택 사항) origin 정의할 고유 키 의 유형: primary-key(기본값) 또는 unique-index. columns 기본 키 또는 고유 인덱스 에서 나타나는 순서대로 열의 이름을 나열하는 문자열 배열입니다. Example 스키마 이름 바꾸기 다음은 소스의 스키마 이름 Test를 대상 엔드포인트의 Test1로 변경하는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": "schema-name": "Test" "value": "Test1" ] Example 테이블 이름 바꾸기 다음은 소스의 테이블 이름 Actor를 대상 엔드포인트의 Actor1로 변경하는 예입니다. 266
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": "schema-name": "Test", "table-name": "Actor" "value": "Actor1" ] Example 열 이름 바꾸기 다음은 Actor 테이블에서 소스의 열 이름 first_name을 대상 엔드포인트의 fname으로 변경하는 예입니 다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": "schema-name": "test", "table-name": "Actor", "column-name" : "first_name" "value": "fname" ] 267
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 Example Oracle 테이블 테이블스페이스의 이름 바꾸기 다음은 Oracle 소스에서 Actor라는 테이블에 대해 SetSpace라는 테이블 테이블스페이스의 이름을 Oracle 대상 엔드포인트의 SceneTblSpace로 바꾸는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Play", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": "schema-name": "Play", "table-name": "Actor", "table-tablespace-name: "SetSpace" "value": "SceneTblSpace" ] Example Oracle 인덱스 테이블스페이스의 이름 바꾸기 다음은 Oracle 소스에서 Actor라는 테이블에 대해 SetISpace라는 인덱스 테이블스페이스의 이름을 Oracle 대상 엔드포인트의 SceneIdxSpace로 바꾸는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "Play", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": "schema-name": "Play", "table-name": "Actor", "table-tablespace-name: "SetISpace" "value": "SceneIdxSpace" ] 268
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 Example 열 제거 다음은 소스의 Actor라는 테이블을 변환하여 col 문자로 시작하는 모든 열을 대상 엔드포인트에서 제거하 는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": "schema-name": "test", "table-name": "Actor", "column-name": "col%" ] Example 소문자로 변환 다음은 소스의 테이블 이름 ACTOR를 대상 엔드포인트의 actor로 변환하는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": "schema-name": "test", "table-name": "ACTOR" ] Example 대문자로 변환 다음은 모든 테이블의 전체 열과 모든 스키마를 원본의 소문자에서 대상 엔드포인트의 대문자로 전환하는 예 제입니다. 269
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": "schema-name": "%", "table-name": "%", "column-name": "%" ] Example 접두사 추가 다음은 소스의 모든 테이블을 변환하여 대상 엔드포인트에서 테이블에 DMS_ 접두사를 추가하는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": "schema-name": "test", "table-name": "%" "value": "DMS_" ] Example 접두사 바꾸기 다음은 원본에서 Pre_ 접두사를 포함하는 모든 열을 변환하여 이 접두사를 대상 엔드포인트의 NewPre_ 접 두사로 대체하는 예입니다. "rules": [ 270
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 ] "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": "schema-name": "%", "table-name": "%", "column-name": "%" "value": "NewPre_", "old-value": "Pre_" Example 접미사 제거 다음은 소스의 모든 테이블을 변환하여 대상 엔드포인트의 테이블에서 _DMS 접미사를 제거하는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": "schema-name": "test", "table-name": "%" "value": "_DMS" ] Example 기본 키 정의 대상 엔드포인트로 마이그레이션된 ITEM 테이블의 세 열에서 ITEM-primary-key라는 기본 키를 정의하 는 예입니다. "rules": [ "rule-type": "selection", 271
JSON을 사용하여 테이블 매핑 을 통해 테이블 선택 및 변환 지정 "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "inventory", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": "schema-name": "inventory", "table-name": "ITEM" "primary-key-def": "name": ITEM-primary-key, "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] ] Example 고유 인덱스 정의 대상 엔드포인트로 마이그레이션된 ITEM 테이블의 세 열에서 ITEM-unique-idx라는 고유 인덱스를 정의 하는 예입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "inventory", "table-name": "%" "rule-action": "include" "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": "schema-name": "inventory", "table-name": "ITEM" "primary-key-def": "name": ITEM-unique-idx, "origin": unique-index, "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] ] 272
테이블 설정 규칙 및 작업 테이블 설정 규칙 및 작업 테이블 설정을 사용하여 지정된 작업에서 선택한 테이블에 적용할 설정을 지정합니다. 테이블 설정 규칙은 선택 사항입니다. 테이블 설정 규칙 유형을 사용하는 테이블 매핑 규칙의 경우, 다음 값을 적용할 수 있습니다. 파라미터 가능한 값 설명 rule-type table-settings 선택 규칙에서 지정한 테이블에 규칙을 적용하는 값입니다. rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값. rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름. object-locator 객체는 다음 파라미터를 사용합니다. 특정 스키마 및 테이블의 이름입니다(허 용되는 와일드카드 없음). schema-name 스키마의 이름입니 다. table-name 테이블의 이름입니다. parallel-load 객체는 다음 파라미터를 사용합니다. object-locator 옵션으로 식별되는 테이블에서 병렬 로드(다중 스레드) 작 type 병렬 로딩의 활성화 여부, 그리 업을 지정합니다. 사용 가능한 모든 파티 고 병렬로 로드할 테이블 파티션, 하위 션 또는 하위 파티션, 선택한 파티션 및 파티션 또는 다른 세그먼트를 식별하 하위 파티션 또는 지정한 범위 기반 세 는 데 사용되는 메커니즘을 지정합니 그먼트에 지정된 세그먼트에 따라 테이 다. 파티션 및 하위 파티션(Oracle 엔 블을 병렬로 로드할 수 있습니다. 자세 드포인트 전용)은 소스 테이블에서 이 한 내용은 선택한 테이블에 병렬 로드 사 미 이름별로 정의되고 식별되는 세그먼 용 (p. 276) 단원을 참조하십시오. 트입니다. 하나 이상의 테이블 열에 대 한 값 범위의 경계를 지정하여 tablesettings 규칙에서 식별할 수 있는 다른 세그먼트입니다. partitions type이 partitions-list일 때 병렬로 로드 할 모든 파티션을 지정합니다. subpartitions (Oracle 엔드포인트 전용) type이 partitions-list일 때 병렬로 로드할 모든 하위 파티션을 지정합니다. columns type이 ranges일 때 병렬 로 로드할 범위 기반 세그먼트를 식별 하는 데 사용되는 열을 지정합니다. boundaries type이 ranges일 때 병렬로 로드할 범위 기반 세그먼트를 식별하는 데 사용되는 columns의 값 을 지정합니다. type parallel-load에 다음 중 하나를 수행 하십시오. partitions-auto 테이블의 모든 파티션이 병렬로 로드됩니다. 모든 파 티션은 자체 스레드에 할당됩니다. 273 병렬로 로드할 테이블 파티션, 하위 파티 션 또는 세그먼트를 식별하는 메커니즘을 지정합니다.
테이블 설정 규칙 및 작업 파라미터 가능한 값 설명 subpartitions-auto (Oracle 엔 드포인트 전용) 테이블의 모든 하위 파 티션이 병렬로 로드됩니다. 모든 하위 파티션은 자체 스레드에 할당됩니다. partitions-list 테이블의 모든 지정된 파티션과 하위 파티션이 병렬 로 로드됩니다. 지정한 각 파티션 및 하위 파티션 (Oracle 엔드포인트 전 용)은 자체 스레드에 할당됩니다. 지 정한 partitions(파티션 이름) 및 subpartitions(하위 파티션 이름)에 따라 병렬로 로드할 파티션과 하위 파 티션을 식별합니다. ranges 테이블의 모든 지정된 세그 먼트가 병렬로 로드됩니다. 식별하는 각 테이블 세그먼트는 자체 스레드에 할당됩니다. 이러한 세그먼트는 지정한 columns(열 이름) 및 boundaries(열 값)로 식별합니다. none 테이블은 파티션 또는 하위 파 티션에 관계없이 단일 스레드 작업(기 본값)으로 로드됩니다. 자세한 내용은 작업 생성 (p. 230) 단원을 참조하십 시오. partitions type이 partitions-list일 때, 이것 은 병렬로 로드되는 파티션의 이름을 지 정하는 문자열 배열입니다. subpartitions (Oracle 엔드포인트 전용) type이 병렬로 로드할 하위 파티션의 이름을 지 partitions-list일 때, 병렬로 로드되 정합니다. 는 하위 파티션의 이름을 지정하는 문자 열 배열입니다. columns type이 ranges일 때 병렬로 로드되는 범위 기반 테이블 세그먼트를 식별하는 데 사용되는 열 이름으로 설정된 문자열 배열입니다. 병렬로 로드할 범위 기반 테이블 세그먼 트를 식별하는 데 사용되는 열의 이름을 지정합니다. boundaries type이 ranges일 때, 열 값 배열의 배열 입니다. 각 열 값 배열은 columns에 의 해 지정된 수량과 순서로 열 값을 포함합 니다. 열 값 배열은 테이블 세그먼트의 상 위 경계를 지정합니다. 각 추가 열 값 배 열은 하나의 추가 테이블 세그먼트에 대 한 상위 경계를 추가합니다. 이러한 모든 범위 기반 테이블 세그먼트는 병렬로 로 드됩니다. 병렬로 로드할 범위 기반 테이블 파티션 을 식별하는 데 사용되는 열 값을 지정합 니다. 274 병렬로 로드할 파티션의 이름을 지정합니 다.
테이블 설정 규칙 및 작업 파라미터 가능한 값 설명 lob-settings 객체는 다음 파라미터를 사용합니다. mode 다음 값을 사용하여 선택한 테이블의 LOB를 마이그레이션하는 데 사용되는 메 LOB에 대한 일반적인 마이그레이션 처리 커니즘을 지정합니다. 를 지정합니다. object-locator 옵션으로 식별된 테 이블에 대한 LOB 처리를 지정하여 단 mode LOB 데이터 항목(LOB)에 대한 일 테이블에 대한 작업 LOB 설정을 재 마이그레이션 처리 모드를 지정합니다. 정의합니다. LOB 설정 파라미터에 대한 bulk-max-size mode 설정에 따라 자세한 내용은 선택한 테이블의 LOB 설 정 (p. 279) 단원을 참조하십시오. LOB 데이터 항목의 최대 크기를 지정 합니다. limited (기본값) 주로 작은 LOB(즉 100MB 이하)를 복제하는 경우 지정합 니다. 또한 bulk-max-size 값을 지 정합니다(0은 유효하지 않습니다). 이 값보다 큰 크기의 LOB는 설정된 크기 로 잘립니다. 이 모드의 LOB는 제한적 LOB 모드, 즉 테이블의 다른 모든 열 데이터 유형과 함께 인라인으로 마이그 레이션됩니다. unlimited 복제하려는 LOB 전체 또는 대부분이 큰 경우(즉 1GB 초과) 지정합니다. bulk-max-size 값을 0 으로 지정하면 모든 LOB가 표준 전체 LOB 모드로 마이그레이션됩니다. 즉, 모든 LOB가 크기와 상관 없이 소스 테 이블의 조회를 사용하여 다른 열 데이 터 유형과 별도로 마이그레이션됩니다. 0보다 큰 bulk-max-size 값을 지정 하면, 표준 전체 LOB 모드와 유사한 소 스 테이블 조회를 사용하여 이 크기보 다 큰 LOB가 마이그레이션됩니다. 그 렇지 않으면 제한적 LOB 모드와 유사 하게 이 크기 이하의 LOB가 인라인으 로 마이그레이션됩니다. bulk-maxsize 값 설정에 관계없이 unlimited 모드에서는 LOB가 절대 잘리지 않습니 다. none 모든 테이블 LOB는 작업 LOB 설정에 따라 마이그레이션됩니다. 작업 LOB 설정에 대한 자세한 내용은 대상 메타데이터 작업 설정 (p. 240) 단원 을 참조하십시오. LOB를 마이그레이션 하는 방법 및 이러한 작업 LOB 설정을 지정하는 방법에 대한 자세한 정보는 AWS DMS 작업의 원본 데이터베이스 에 대한 LOB 지원 설정 (p. 251) 단원 을 참조하십시오. 그런 다음 선택한 테 이블에 대해 다른 마이그레이션 방식을 지정할 것인지도 결정할 수 있습니다. 275
테이블 설정 규칙 및 작업 파라미터 가능한 값 설명 bulk-max-size LOB의 최대 크기를 킬로바이트 단위로 작은 LOB를 복제해야 하거나 taret 엔드 지정합니다. 이 값의 효과는 mode에 따라 포인트가 무제한 LOB 크기를 지원하지 다릅니다. 않는 경우에만 이 옵션을 지정하십시오. 선택한 테이블에 병렬 로드 사용 AWS DMS는 여러 스레드를 병렬로 사용하여 단일 세그먼트 테이블을 마이그레이션하기 위해 논리적으로 전체 로드 작업을 스레드로 분할할 수 있으며 각 세그먼트는 자체 스레드에 할당됩니다. 이 병렬 로드 프로세 스를 사용하면 여러 스레드가 소스 엔드포인트에서 여러 테이블을 병렬로 언로드한 다음, 여러 스레드가 병 렬로 동일한 테이블을 대상 엔드포인트로 마이그레이션하고 로드하도록 할 수 있습니다. 일부 데이터베이스 엔진의 경우 기존 파티션이나 하위 파티션별로 테이블을 조각화할 수 있습니다. 그렇지 않으면, 지정한 열 값 범위로 테이블을 조각화할 수 있습니다. 다음 소스 엔드포인트에 병렬 로드가 지원됩니다. Oracle Microsoft SQL Server MySQL PostgreSQL IBM Db2 SAP Adaptive Server Enterprise(ASE) 다음 대상 엔드포인트에 병렬 로드가 지원됩니다. Oracle Microsoft SQL Server MySQL PostgreSQL Amazon Redshift SAP Adaptive Server Enterprise(ASE) Note ParallelLoadThreads 및 ParallelLoadBufferSize 작업 설정을 사용하면 병렬 로드를 위 해 작업에서 사용 가능한 스레드 수 및 버퍼 크기를 각각 지정할 수 있습니다. 이러한 설정은 엔드포 인트에 따라 다를 수 있습니다. 자세한 내용은 대상 메타데이터 작업 설정 (p. 240) 단원을 참조하 십시오. 병렬 로드를 사용하려면 parallel-load 옵션을 사용하여 table-settings 유형의 테이블 매핑 규칙을 만듭니다. table-settings 규칙 내에서 병렬로 로드하려는 단일 테이블의 조각화 기준을 지정할 수 있습 니다. 이 조각화 기준을 지정하려면 병렬 로드를 위해 테이블을 조각화할 방법에 따라 parallel-load 옵 션의 type 파라미터를 여러 옵션 중 하나로 설정하십시오. 파티션 기준 partitions-auto 유형을 사용하여 기존 테이블 파티션을 모두 로드하거나, 지정된 partitions 배열이 있는 partitions-list 유형을 사용하여 선택한 파티션만 로드할 수 있습니다. (Oracle 엔드포인트 전용) 하위 파티션 기준 subpartitions-auto 유형을 사용하여 기존 테이블 하위 파티션을 모두 로드하거나, 지정된 subpartitions 배열이 있는 partitions-list 유형을 사용하여 선택한 하위 파티션만 로드할 수 있습니다. 열 값 경계를 사용하여 정의한 세그먼트 기준 지정된 columns 및 boundaries 배열의 ranges 유형을 사용하여 정의한 테이블 세그먼트를 로드할 수 있습니다. 276
테이블 설정 규칙 및 작업 그런 다음 연결된 parallel-load 옵션의 추가 table-settings 객체를 지정하여 병렬로 로드할 추가 테 이블을 식별할 수 있습니다. 다음 절차는 가장 간단한 것부터 가장 복잡한 것까지 각 병렬 로드 유형별로 JSON을 코드화하는 방법을 설 명합니다. 모든 테이블 파티션 또는 모든 테이블 하위 파티션을 지정하려면 parallel-load를 partitions-auto 유형 또는 subpartitions-auto 유형으로 지정하십시오(동 시 지정은 불가). 그러면 모든 테이블 파티션 또는 하위 파티션은 자동으로 자체 스레드에 할당됩니다. Note 파티션 또는 하위 파티션은 테이블에 이미 정의된 경우에만 병렬 로드에 참여합니다. 선택한 테이블 파티션, 하위 파티션 또는 둘 다 지정하려면 1. partitions-list 유형으로 parallel-load를 지정하십시오. 2. 파티션을 포함하려면 파티션 이름 배열의 값을 partitions로 지정하십시오. 그러면 지정된 각 파티션이 자체 스레드에 할당됩니다. 3. 하위 파티션(Oracle 엔드포인트 전용)을 포함하려면 하위 파티션 이름 배열의 값을 subpartitions로 지정하십시오. 그러면 지정된 각 하위 파티션이 자체 스레드에 할당됩니다. Note 파티션 및 하위 파티션은 테이블에 이미 정의된 경우에만 병렬 로드에 참여합니다. 테이블 세그먼트를 열 값의 범위로 지정하려면 1. ranges 유형으로 parallel-load를 지정하십시오. 2. 테이블 세그먼트 사이의 경계를 정의하려는 모든 열에 대해 테이블 열 이름 배열의 값을 columns로 지 정하십시오. 열의 순서는 중요합니다. 여기에서는 다음 단계 및 단락에서 설명하는 것처럼 각 경계를 정 의하는 데 첫 번째 열이 가장 중요하고 마지막 열은 가장 덜 중요합니다. Note 인덱싱된 열을 지정하면 성능이 크게 향상됩니다. 열을 최대 10개까지 지정할 수 있습니다. 다음 AWS DMS 데이터 유형의 열을 사용하여 DOUBLE, FLOAT 및 LOB(BLOB, CLOB 또는 NCLOB) 세그먼트 경계를 정의할 수 없습니다. Null 값의 레코드는 복제되지 않습니다. 3. 모든 테이블 세그먼트의 데이터 범위를 정의하려면 경계 배열의 값을 boundaries로 지정하십시오. 경계 배열은 열-값 배열의 배열입니다. 여기서 각 열-값 배열는 다음과 같이 정의하려는 각 테이블 세그 먼트의 상위 경계를 나타냅니다. a. 열-값 배열의 각 요소는 columns 배열로 해당 열을 지정한 순서와 동일하게 각 열에 맞는 값으로 지정합니다. Note 소스가 지원하는 형식으로 DATE277 열의 값을 입력하십시오.
테이블 설정 규칙 및 작업 b. 테이블의 맨 아래에서 맨 위의 옆 세그먼트까지 각 세그먼트의 순서에 따라 각 열-값 배열을 상위 경 계로 지정합니다. 지정한 맨 위 경계 위에 테이블 행이 있으면 이 행은 테이블의 맨 위 세그먼트를 완료합니다. 따라서 범위 기반 세그먼트의 수가 경계 배열의 세그먼트 경계 수보다 하나 더 많을 수 있습니다. 이러한 범위 기반 세그먼트는 각각 자체 스레드에 할당됩니다. Note 테이블의 모든 열에 데이터 범위를 정의하지 않더라도 null이 아닌 모든 테이블 데이터가 복제됩니다. 예를 들어, 다음과 같이 열 COL1, COL2 및 COL3에 세 개의 열-값 배열을 정의한다고 가정합니다. COL1 COL2 COL3 10 30 105 20 20 120 100 12 99 가능한 총 4개 세그먼트에 세 개의 세그먼트 경계를 정의했습니다. 각 세그먼트별로 복제할 행의 범위를 식별하기 위해, 복제 인스턴스는 각각의 4개 세그먼트에서 이 3개 열에 다음 검색 알고리즘을 적용합니다. Segment 1 첫 번째 두 열의 값이 해당 세그먼트 1 상위 경계 값 이하이고 세 번째 열의 값이 세그먼트 1 상위 경 계 값 미만인 경우 모든 행을 복제합니다. Segment 2 첫 번째 두 열의 값이 해당 세그먼트 2 상위 경계 값 이하이고 세 번째 열의 값이 세그먼트 2 상위 경 계 값 미만인 경우 모든 행을 복제합니다(세그먼트 1 행은 제외). Segment 3 첫 번째 두 열의 값이 해당 세그먼트 3 상위 경계 값 이하이고 세 번째 열의 값이 세그먼트 3 상위 경 계 값 미만인 경우 모든 행을 복제합니다(세그먼트 2 행은 제외). Segment 4 나머지 모든 행을 복제합니다( 세그먼트 1, 2 및 3 행은 제외). 이 경우 복제 인스턴스는 다음과 같이 WHERE 절을 작성하여 각 세그먼트를 로드합니다. Segment 1 ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) Segment 2 NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) 278
테이블 설정 규칙 및 작업 Segment 3 NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99))) Segment 4 NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99))) 선택한 테이블의 LOB 설정 table-settings 규칙 유형 객체의 lob-settings 옵션을 지정하여 단일 테이블의 작업 LOB 설정을 재 정의할 수 있습니다. 추가 table-settings 객체에 lob-settings 옵션을 지정하여 추가 테이블의 작업 LOB 설정을 재정의할 수 있습니다. 다음 소스 및 대상 엔드포인트의 조합에는 선택한 테이블의 LOB 설정이 지원됩니다. Oracle Microsoft SQL Server MySQL PostgreSQL IBM Db2(다음 단락에서 설명하는 mode 및 bulk-max-size 설정에 따라 소스만) SAP Adaptive Server Enterprise(ASE)(mode 및 bulk-max-size 설정에 따라 소스 또는 대상) Note LOB 데이터 형식은 기본 키를 포함하는 테이블에서만 지원됩니다. 선택한 테이블의 LOB 설정을 사용하려면 lob-settings 옵션을 사용하여 table-settings 유형의 테 이블 맵핑 규칙을 생성하십시오. 이것은 객체 로케이터 옵션으로 식별된 테이블에 LOB 처리를 지정합니다. table-settings 규칙 내에서 다음 파라미터를 사용하여 lob-settings 객체를 지정할 수 있습니다. mode 다음과 같이 선택한 테이블에 LOB 마이그레이션 처리 메커니즘을 지정합니다. limited 기본 모드인 이 제한적 LOB 모드는 가장 빠르고 효율적입니다. 모든 LOB의 크기가 작거나 (100MB 이내) 대상 엔드포인트가 무제한 LOB 크기를 지원하지 않고 모든 LOB가 bulk-max-size에 설정한 크기 이내인 경우에만 이 모드를 사용하십시오. 이 모드에서 복제 인스턴스는 기본 테이블 스토 리지의 일부로 다른 열 데이터 유형과 함께 모든 LOB를 인라인으로 마이그레이션합니다. 그러나 인스턴 스는 bulk-max-size 값보다 큰 모든 LOB를 지정된 크기로 자릅니다. Note CDC(Change Data Capture) 로드의 경우, 인스턴스는 표준 전체 LOB 모드에서처럼 LOB 크 기에 관계없이 소스 테이블 조회를 사용하여 모든 LOB를 마이그레이션합니다. 인스턴스는 LOB를 2진 형식으로 변환합니다. 따라서 복제해야 하는 가장 큰 LOB를 지정 하려면 크기에 3을 곱하십시오. 예를 들어, 가장 큰 LOB가 2MB라면 bulk-max-size를 6000(6MB)으로 설정하십시오. unlimited 이 전체 LOB 모드의 마이그레이션 메커니즘은 다음과 같이 bulk-max-size에 설정한 값에 따라 다릅니다. 표준 전체 LOB 모드 bulk-max-size를 0으로 설정하면 복제 인스턴스가 표준 전체 LOB 모드를 사용하여 모든 LOB를 마이그레이션합니다. 이 모드에서는 크기에 관계없이 모든 LOB를 마이그레이 션하기 위해 소스 테이블에서 조회가 필요합니다. 이 경우 일반적으로 제한적 LOB 모드보다 마이그 레이션 속도가 훨씬 느립니다. 대부분 또는 모든 LOB가 큰 경우에만(1GB 이상) 이 모드를 사용하십시 오. 279
테이블 설정 규칙 및 작업 Note 복제에 포함된 LOB가 테이블에 있는 경우 limited 모드 사용 시 작업 설정 BatchApplyEnabled를 true로만 설정할 수 있습니다. 또한 BatchApplyEnabled를 true로 설정하고 BatchApplyPreserveTransaction을 false로 설정하면 인스턴스가 BatchApplyPreserveTransaction을 true로 설정합니다(테이블에 LOB가 있고 소스 및 대상 엔드포인트가 Oracle인 경우). 조합 전체 LOB 모드 bulk-max-size를 0이 아닌 값으로 설정하면 이 전체 LOB 모드는 제한적 LOB 모드와 표준 전체 LOB 모드를 조합하여 사용합니다. 즉, LOB 크기가 bulk-max-size값 이내 에 있는 경우, 인스턴스는 제한적 LOB 모드에서처럼 LOB를 인라인으로 마이그레이션합니다. LOB 크기가 이 값보다 큰 경우, 인스턴스는 표준 전체 LOB 모드에서와 같이 소스 테이블 조회를 사용하여 LOB를 마이그레이션합니다. 이 모드의 마이그레이션 속도는 빠른 제한적 LOB 모드와 느린 표준 전체 LOB 모드 사이에서 절충한 수준이 됩니다. 작고 큰 LOB가 혼합되어 있지만 대부분의 LOB가 작은 경 우에만 이 모드를 사용하십시오. Note 이전에 설명한 SQL 엔드포인트 외에, 다음 엔드포인트의 경우 이 전체 LOB 조합 모드만 사용할 수 있습니다. IBM Db2 소스로만 사용 SAP Adaptive Server Enterprise (ASE) 소스 또는 대상으로 사용 CDC(Change Data Capture) 로드의 경우, 인스턴스는 항상 표준 전체 LOB 모드에서처럼 소스 테이블 조회를 사용하여 작고 큰 LOB를 모두 마이그레이션합니다. unlimited 모드를 지정하는 방법과 관계없이, 인스턴스는 모든 LOB를 자르지 않고 온전히 마이그레 이션합니다. none 복제 인스턴스는 작업 LOB 설정을 사용하여 선택한 테이블의 LOB를 마이그레이션합니다. 이 옵션을 사용하면 선택한 테이블의 LOB 설정 유무와 관계없이 마이그레이션 결과를 쉽게 비교할 수 있습 니다. bulk-max-size 이전 항목에서 설명한 대로, mode에 따라 이 값을 0 또는 0이 아닌 값(킬로바이트)으 로 설정합니다. limited 모드에서는 0이 아닌 값을 설정해야 합니다. 테이블 설정 예제 Example 파티션으로 조각화한 테이블 로드 다음 예제는 모든 파티션을 기반으로 병렬로 소스의 SALES 테이블을 로드하기 때문에 보다 효율적입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "HR", "table-name": "SALES" 280
테이블 설정 규칙 및 작업 ] "parallel-load": "type": "partitions-auto" Example 하위 파티션으로 조각화한 테이블 로드 다음 예제는 모든 하위 파티션을 기반으로 병렬로 Oracle 소스의 SALES 테이블을 로드하기 때문에 보다 효 율적입니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "HR", "table-name": "SALES" "parallel-load": "type": "subpartitions-auto" ] Example 파티션 목록으로 조각화한 테이블 로드 다음 예제는 특정 파티션 목록별로 병렬로 소스의 SALES 테이블을 로드합니다. 여기서 지정된 파티션은 영 어 알파벳의 일부(예: ABCD, EFGH 등)로 시작하는 값을 따라 이름이 지정됩니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "HR", "table-name": "SALES" 281
테이블 설정 규칙 및 작업 ] "parallel-load": "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] Example 선택한 파티션 및 하위 파티션 목록으로 조각화한 Oracle 테이블 로드 다음 예제는 선택한 파티션 및 하위 파티션 목록별로 병렬로 Oracle 소스의 SALES 테이블을 로드합니다. 여 기서 지정된 파티션은 영어 알파벳의 일부(예: ABCD, EFGH 등)로 시작하는 값을 따라 이름이 지정됩니다. 지 정된 하위 파티션은 아라비아 숫자의 일부인 01234 및 56789로 시작하는 값을 따라 이름이 지정됩니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "HR", "table-name": "SALES" "parallel-load": "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] ] Example 열 값 범위로 조각화한 테이블 로드 다음 예에서는 SALES_NO 및 REGION 열 값의 범위로 지정된 세그먼트별로 소스의 SALES 테이블을 병렬로 로드합니다. 282
테이블 설정 규칙 및 작업 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "HR", "table-name": "SALES" "parallel-load": "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] ] 여기에서는 이름이 SALES_NO 및 REGION인 세그먼트 범위에 두 개의 열이 지정됩니다. 두 경계는 두 열 값 집합(["1000","NORTH"] 및 ["3000","WEST"])으로 지정됩니다. 따라서 이 두 경계는 병렬로 로드할 다음 세 개 테이블 세그먼트를 식별합니다. Segment 1 SALES_NO가 1000 이하이고 REGION이 "NORTH"보다 작은 행. 즉, EAST 리전에서 1,000 이하의 매출 수치입니다. Segment 2 SALES_NO가 3000 이하이고 REGION이 "WEST"보다 작은 세그먼트 1 이외의 행. 즉, NORTH 및 SOUTH 리전에서 1000보다 큰 3000 이하의 매출 수치. Segment 3 세그먼트 1 및 세그먼트 2 이외의 모든 나머지 행. 즉, WEST 리전에서 3000을 초과하는 매출 수치입니 다. Example 두 개의 테이블 로드: 하나는 범위별로 조각화, 다른 하나는 파티션별로 조각화 다음 예는 사용자가 식별한 세그먼트 경계별로 SALES 테이블을 병렬 로드하고 이전 예에서와 같이 그에 속 한 모든 파티션별로 ORDERS 테이블을 병렬 로드합니다. 283
테이블 설정 규칙 및 작업 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "HR", "table-name": "SALES" "parallel-load": "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": "schema-name": "HR", "table-name": "ORDERS" "parallel-load": "type": "partitions-auto" ] Example 제한적 LOB 모드를 사용하여 LOB 포함 테이블 로드 다음 예제는 제한적 LOB 모드(기본값)를 사용하여 소스의 LOB를 포함하는 ITEMS 테이블을 로드하며, 잘리 지 않는 최대 크기로 100MB를 지원합니다. 이 크기보다 큰 LOB는 100MB로 잘립니다. 모든 LOB는 다른 모 든 열 데이터 유형과 인라인으로 로드됩니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": 284
테이블 설정 규칙 및 작업 "schema-name": "%", "table-name": "%" ] "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "INV", "table-name": "ITEMS" "lob-settings": "bulk-max-size": "100000" Example 표준 전체 LOB 모드를 사용하여 LOB 포함 테이블 로드 다음 예제는 표준 전체 LOB 모드를 사용하여 절단하지 않은 모든 LOB를 포함하여 소스의 ITEMS 테이블을 로드합니다. 크기에 관계없이 모든 LOB는 소스 테이블의 각 LOB 조회를 사용하여 다른 데이터 유형과 별도 로 로드됩니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "INV", "table-name": "ITEMS" "lob-settings": "mode": "unlimited" "bulk-max-size": "0" ] Example 조합 전체 LOB 모드를 사용하여 LOB 포함 테이블 로드 다음 예제는 조합 전체 LOB 모드를 사용하여 절단하지 않은 모든 LOB를 포함하여 소스의 ITEMS 테이블을 로드합니다. 제한적 LOB 모드에서와 같이, 크기 100MB 이내의 모든 LOB는 다른 데이터 유형과 함께 인라인 으로 로드됩니다. 크기가 100MB를 초과하는 모든 LOB는 표준 전체 LOB 모드에서와 같이, 소스 테이블의 이 러한 각 LOB 조회를 사용하여 다른 데이터 유형과 별도로 로드됩니다. "rules": [ "rule-type": "selection", 285
소스 필터 사용 ] "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "INV", "table-name": "ITEMS" "lob-settings": "mode": "unlimited" "bulk-max-size": "100000" Example 작업 LOB 설정을 사용하여 LOB 포함 테이블 로드 다음 예제는 작업 LOB 설정을 사용하여 모든 LOB를 포함하여 소스의 ITEMS 테이블을 로드합니다. 100MB 의 bulk-max-size 설정은 무시되며 limited 또는 unlimited 모드로 신속하게 재설정하는 경우에만 유 지됩니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "%", "table-name": "%" "rule-action": "include" "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": "schema-name": "INV", "table-name": "ITEMS" "lob-settings": "mode": "none" "bulk-max-size": "100000" ] 소스 필터 사용 원본 필터를 사용하여 원본에서 대상으로 전송되는 레코드의 수와 유형을 제한할 수 있습니다. 예를 들어, 본 사 사업장에서 근무하는 직원만이 대상 데이터베이스로 이동되도록 지정할 수 있습니다. 필터는 선택 규칙의 일부입니다. 데이터 열에서 필터를 적용합니다. 286
소스 필터 사용 소스 필터는 다음 제약 조건을 준수해야 합니다. 선택 규칙에는 필터가 전혀 없거나 필터가 하나 이상 있을 수 있습니다. 모든 필터에는 하나 이상의 필터 조건이 있을 수 있습니다. 필터를 2개 이상 사용하는 경우, 필터 사이에서 AND 연산자를 사용하는 것처럼 필터 목록이 결합됩니다. 단일 필터 내에서 필터 조건을 2개 이상 사용하면, 필터 조건 사이에서 OR 연산자를 사용하는 것처럼 필터 조건 목록이 결합됩니다. rule-action = 'include'인 경우 필터만이 적용됩니다. 필터에는 열 이름과 필터 조건 목록이 필요합니다. 필터 조건에는 필터 연산자와 값이 있어야 합니다. 열 이름, 테이블 이름, 스키마 이름은 대소문자를 구분합니다. JSON에서 원본 필터 규칙 생성 선택 규칙의 JSON filters 파라미터를 사용하여 소스 필터를 생성할 수 있습니다. filters 파라미터는 1 개 이상의 JSON 객체 배열을 지정합니다. 각 객체는 소스 필터 유형, 열 이름 및 필터 조건을 지정하는 파라 미터를 가지고 있습니다. 이러한 필터 조건에는 하나 이상의 필터 연산자 및 필터 값이 포함됩니다. 다음 표에는 filters 객체에서 소스 필터링을 지정하기 위한 파라미터가 나와 있습니다. 파라미터 값 filter-type source column-name 필터를 적용할 원본 열의 이름입니다. 이름은 대/소문자를 구분합니다. filter-conditions filter-operator 값에 따라 달라지는 filter-operator 파라미터 및 적절한 값 파라미터가 포함된 하나 이상의 객체 배열입니다. filter-operator 이 파라미터는 다음 값 중 하나를 가질 수 있습니다. ste 작거나 같음 gte 크거나 같음 eq 같음 between 같음 또는 두 값 사이 value 또는 filter-operator 파라미터의 값입니다. filter-operator에 between 이외의 값이 있는 경우 value를 사용합니다. filteroperator가 between으로 설정된 경우 값 2개(start-value 1개와 end-value 1개)를 제공합니다. start-value end-value 다음 예제에서는 원본 필터를 사용하는 일반적인 방법에 대해 다룹니다. Example 단일 필터 다음 필터는 empid >= 100인 모든 직원을 대상 데이터베이스로 복제합니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", 287
소스 필터 사용 "table-name": "employee" "rule-action": "include", "filters": [ "filter-type": "source", "column-name": "empid", "filter-conditions": [ "filter-operator": "gte", "value": "100" ] ] ] Example 여러 필터 연산자 다음 필터는 여러 필터 연산자를 단일 데이터 열에 적용합니다. 이 필터는 (empid <=10) OR (empid is between 50 and 75) OR (empid >= 100)인 모든 직원을 대상 데이터베이스로 복제합니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "employee" "rule-action": "include", "filters": [ "filter-type": "source", "column-name": "empid", "filter-conditions": [ "filter-operator": "ste", "value": "10" "filter-operator": "between", "start-value": "50", "end-value": "75" "filter-operator": "gte", "value": "100" ] ] ] Example 여러 필터 다음 필터는 여러 필터를 테이블의 열 2개에 적용합니다. 이 필터는 (empid <= 100) AND (dept= tech)인 모든 직원을 대상 데이터베이스로 복제합니다. "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", 288
소스 필터 사용 "table-name": "employee" "rule-action": "include", "filters": [ "filter-type": "source", "column-name": "empid", "filter-conditions": [ "filter-operator": "ste", "value": "100" ] "filter-type": "source", "column-name": "dept", "filter-conditions": [ "filter-operator": "eq", "value": "tech" ] ] ] 시간과 날짜로 필터링 가져올 데이터를 선택할 때 필터 기준의 일부로 날짜 또는 시간을 지정할 수 있습니다. AWS DMS에서는 필 터링에 YYYY-MM-DD 날짜 형식과 YYYY-MM-DD HH:MM:SS 시간 형식을 사용합니다. AWS DMS 비교 기 능은 SQLite 규칙을 준수합니다. SQLite 데이터 형식과 날짜 비교에 대한 자세한 내용은 SQLite 설명서의 SQLite 버전 3의 데이터 형식을 참조하십시오. 다음은 날짜에서 필터링하는 방법을 보여주는 예제입니다. 이 필터는 empstartdate >= January 1, 2002인 모든 직원을 대상 데이터베이스로 복제합니다. Example 단일 날짜 필터 "rules": [ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "test", "table-name": "employee" "rule-action": "include", "filters": [ "filter-type": "source", "column-name": "empstartdate", "filter-conditions": [ "filter-operator": "gte", "value": "2002-01-01" ] ] ] 289
작업 상태 AWS DMS 작업 모니터링 작업 상태를 확인하고 작업의 제어 테이블을 확인하여 작업 진행률을 모니터링할 수 있습니다. 제어 테이블 에 대한 자세한 내용은 제어 테이블 작업 설정 (p. 242) 섹션을 참조하십시오. 또한 Amazon CloudWatch를 사용하여 작업 진행률을 모니터링할 수도 있습니다. AWS Management Console, AWS 명령줄 인터페이스(CLI) 또는 AWS DMS API를 사용하여 작업 진행률뿐 아니라 사용되는 리 소스와 네트워크 연결도 모니터링할 수 있습니다. 마지막으로 테이블 상태를 확인하여 작업의 원본 테이블 상태를 모니터링할 수 있습니다. DMS 콘솔은 "last updated" 열에 AWS DMS에서 테이블의 테이블 통계 레코드를 마지막으로 업데이트한 시 간만 표시합니다. 테이블에 대한 마지막 업데이트 시간을 표시하지 않습니다. 자세한 내용은 다음 주제를 참조하십시오. 주제 작업 상태 (p. 290) 작업 중 테이블 상태 (p. 291) Amazon CloudWatch를 사용한 복제 작업 모니터링 (p. 292) 데이터 마이그레이션 서비스 지표 (p. 294) AWS DMS 작업 로그 관리 (p. 296) AWS CloudTrail을 사용하여 AWS DMS API 호출 로깅 (p. 297) 작업 상태 작업 상태는 말 그대로 작업의 상태를 나타냅니다. 다음 테이블은 작업이 가질 수 있는 가능한 상태를 나타냅 니다. 작업 상태 설명 [Creating] AWS DMS가 작업을 생성하고 있습니다. [Running] 작업이 지정된 마이그레이션 업무를 수행하고 있습니다. [Stopped] 작업이 중지됩니다. [Stopping] 작업이 중지되고 있습니다. 대개 작업에서 사용자 개입을 나타 냅니다. [Deleting] 보통 사용자 개입 요청을 통해 작업이 삭제되고 있습니다. [Failed] 작업에 실패했습니다. 자세한 내용은 작업 로그 파일을 참조하 십시오. [Starting] 작업이 복제 인스턴스와 원본 및 대상 엔드포인트에 연결되고 있습니다. 모든 필터와 변환이 적용되고 있습니다. [Ready] 작업을 실행할 준비가 되어 있습니다. 이 상태 다음에는 대개 "생성" 상태가 나옵니다. 290
작업 중 테이블 상태 작업 상태 설명 [Modifying] 작업이 수정되고 있습니다. 대개 작업 설정을 수정한 사용자 작업으로 인한 것입니다. 작업 상태 표시줄은 작업 진행률의 추정치를 나타냅니다. 이 추정치의 품질은 원본 데이터베이스의 테이블 통계 품질에 따라 달라지며, 테이블 통계 품질이 좋을수록 추정 정확도가 높아집니다. 추정 행 통계 없이 단 하나의 테이블을 사용하는 작업의 경우, 모든 유형의 완료율 추정치를 제공할 수 없습니다. 이 경우에 작업 상태와 로드되는 행 표시를 사용하여 작업이 실제로 실행되고 진행되고 있음을 확인할 수 있습니다. 작업 중 테이블 상태 AWS DMS 콘솔은 마이그레이션 중에 테이블 상태에 대한 정보를 업데이트합니다. 다음 표에는 가능한 상태 값이 나와 있습니다. 상태 설명 [Table does not exist] AWS DMS에서 소스 엔드포인트로부터 테이블을 찾을 수 없습 니다. [Before load] 전체 로드 프로세스가 활성화되었지만, 아직 시작되지 않았습 니다. [Full load] 전체 로드 프로세스가 진행되고 있습니다. [Table completed] 전체 로드가 완료되었습니다. 291
Amazon CloudWatch를 사용한 복제 작업 모니터링 상태 설명 [Table cancelled] 테이블 로드가 취소되었습니다. [Table error] 테이블을 로드하는 동안 오류가 발생했습니다. Amazon CloudWatch를 사용한 복제 작업 모니터링 Amazon CloudWatch 경보 또는 이벤트를 사용하여 마이그레이션을 더욱 면밀하게 추적할 수 있습니다. Amazon CloudWatch에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서의 Amazon CloudWatch, Amazon CloudWatch 이벤트 및 Amazon CloudWatch Logs란 무엇입니까?를 참조하십시오. Amazon CloudWatch 사용 시 비용이 청구됩니다. AWS DMS 콘솔에는 다음 그림과 같이 작업 상태, 완료율, 경과 시간 및 테이블 통계 등 각 작업별로 기본 CloudWatch 통계가 표시됩니다. 복제 작업을 선택하고 나서 [Task monitoring] 탭을 선택합니다. AWS DMS 콘솔에서 테이블 통계 탭을 선택하면 삽입, 삭제, 업데이트 개수 등 각 테이블별로 성능 통계가 표 시됩니다. 292
Amazon CloudWatch를 사용한 복제 작업 모니터링 또한, [Replication Instance] 페이지에서 복제 인스턴스를 선택하는 경우 인스턴스의 성능 지표를 확인하려면 [Monitoring] 탭을 선택합니다. 293
데이터 마이그레이션 서비스 지표 데이터 마이그레이션 서비스 지표 AWS DMS는 다음 항목의 통계를 제공합니다. 호스트 지표 Amazon CloudWatch에서 제공하는 복제 호스트에 대한 성능과 사용률 통계. 사용 가능한 전체 측정치 목록은 복제 인스턴스 지표 (p. 294) 섹션을 참조하십시오. 복제 작업 지표 들어오는 변경 사항과 커밋된 변경 사항, 복제 호스트와 소스 및 대상 데이터베이스 사이 의 지연 시간을 포함한 복제 작업 통계. 사용 가능한 전체 측정치 목록은 복제 작업 지표 (p. 295) 섹션을 참조하십시오. 테이블 지표 완료된 삽입, 업데이트, 삭제 및 DDL 문 개수를 포함하여 마이그레이션 중인 테이블에 대한 통계. 작업 지표는 복제 호스트와 원본 엔드포인트 간의 통계, 그리고 복제 호스트와 대상 엔드포인트 간의 통계로 나뉩니다. 관련 통계 2개를 모두 추가하여 작업의 총 통계를 확인할 수 있습니다. 예를 들어, [CDCLatencySource]와 [CDCLatencyTarget] 값을 결합하여 작업의 총 지연 시간 또는 복제 지연을 확인할 수 있습니다. 작업 지표 값은 원본 데이터베이스에서 현재 작업의 영향을 받을 수 있습니다. 예를 들어, 트랜잭션이 시작되 었지만 커밋되지 않은 경우, [CDCLatencySource] 지표는 트랜잭션이 커밋될 때까지 계속 증가합니다. 복제 인스턴스의 경우, [FreeableMemory] 측정치에 대한 명확한 이해가 필요합니다. 여유 메모리는 사용 가 능한 실제 여유 메모리를 나타내지 않습니다. 해제하여 다른 용도로 사용할 수 있는 현재 사용 중인 메모리 로, 여유 복제 인스턴스에 사용 중인 버퍼 및 캐시의 조합입니다. [FreeableMemory] 측정치에는 사용 가능한 실제 여유 메모리가 반영되지 않지만, [FreeableMemory] 및 [SwapUsage] 측정치를 보고 복제 인스턴스가 오버로드되었는지 여부를 알 수 있습니다. 다음 두 가지 측정치에 대해 다음 상태를 모니터링합니다. [FreeableMemory] 측정치가 0에 가까움. [SwapUsage] 측정치가 증가하거나 변동이 있는 경우. 이러한 두 가지 상태 중 하나에 해당하는 경우 이는 대규모 복제 인스턴스로 전환하는 것을 고려해야 함을 나 타냅니다. 또한 복제 인스턴스에서 실행 중인 작업 수와 유형을 줄이기는 것도 고려해 보아야 합니다. 전체 로드 작업에는 변경 내용만을 복제하는 작업보다 더 많은 메모리가 요구됩니다. 복제 인스턴스 지표 복제 인스턴스 모니터링에는 다음 통계의 Amazon CloudWatch 지표가 포함됩니다. CPUUtilization 사용된 CPU의 양. 단위: 바이트 FreeStorageSpace 사용 가능한 스토리지 공간 크기. 단위: 바이트 FreeableMemory 사용 가능한 RAM 크기. 단위: 바이트 294
복제 작업 지표 WriteIOPS 초당 평균 디스크 I/O 연산 수. 단위: 수/초 ReadIOPS 초당 평균 디스크 I/O 연산 수. 단위: 수/초 WriteThroughput 초당 디스크에 쓴 평균 바이트 수. 단위: 바이트/초 ReadThroughput 초당 디스크에서 읽은 평균 바이트 수. 단위: 바이트/초 WriteLatency 디스크 I/O (출력) 연산당 평균 처리 시간. 단위: 밀리초 ReadLatency 디스크 I/O (입력) 연산당 평균 처리 시간. 단위: 밀리초 SwapUsage 복제 인스턴스에서 사용된 스왑 공간 크기. 단위: 바이트 NetworkTransmitThroughput 복제 인스턴스에서 송신 네트워크 트래픽(고객 데이터베이스 트래픽과 모니터링과 복제에 사용되는 AWS DMS 트래픽 포함). 단위: 바이트/초 NetworkReceiveThroughput DB 인스턴스 수신 네트워크 트래픽(고객 데이터베이스 트래픽과 모니터링 및 복제에 사용된 AWS DMS 트래픽을 모두 포함). 단위: 바이트/초 복제 작업 지표 복제 작업 모니터링에는 다음 통계의 지표가 포함됩니다. FullLoadThroughputBandwidthSource 원본 전체 로드의 수신 네트워크 대역폭(초당 KB 단위). FullLoadThroughputBandwidthTarget 대상 전체 로드의 발신 네트워크 대역폭(초당 KB 단위). 295
AWS DMS 로그 관리 FullLoadThroughputRowsSource 원본 전체 로드의 수신 변경 사항(초당 행 수 단위). FullLoadThroughputRowsTarget 대상 전체 로드의 발신 변경 사항(초당 행 수 단위). CDCIncomingChanges 대상에 적용되기를 기다리고 있는 특정 시점의 총 변경 이벤트 수입니다. 이 값은 소스 엔드포인트의 트 랜잭션 변경 비율 측정치와 같지 않습니다. 이 측정치의 값이 크면 일반적으로 AWS DMS가 캡처한 변경 내용을 적시에 적용할 수 없어서 대상 지연 시간이 길어짐을 의미합니다. CDCChangesMemorySource 메모리에서 누적되면서 원본에서 커밋되기를 대기하는 행 개수. CDCChangesMemoryTarget 메모리에서 누적되면서 대상으로 커밋되기를 대기하는 행 개수. CDCChangesDiskSource 디스크에서 누적되면서 원본에서 커밋되기를 대기하는 행 개수. CDCChangesDiskTarget 디스크에서 누적되면서 대상으로 커밋되기를 대기하는 행 개수. CDCThroughputBandwidthSource 대상에서 초당 KB 단위의 네트워크 대역폭. CDCThroughputBandwidth는 샘플 포인트의 대역폭을 기록 합니다. 어떠한 네트워크 트래픽도 찾을 수 없다면 이 값은 0입니다. CDC는 장시간 트랜잭션을 할 수 없 기 때문에 네트워크 트래픽은 기록되지 않을 수 있습니다. CDCThroughputBandwidthTarget 대상에서 초당 KB 단위의 네트워크 대역폭. CDCThroughputBandwidth는 샘플 포인트의 대역폭을 기록 합니다. 어떠한 네트워크 트래픽도 찾을 수 없다면 이 값은 0입니다. CDC는 장시간 트랜잭션을 할 수 없 기 때문에 네트워크 트래픽은 기록되지 않을 수 있습니다. CDCThroughputRowsSource 원본의 수신 작업 수신 변경 사항 개수(초당 행 수 단위). CDCThroughputRowsTarget 대상의 발신 작업 변경 사항 개수(초당 행 수 단위). CDCLatencySource 소스 엔드포인트에서 캡처한 마지막 이벤트와 AWS DMS 인스턴스의 현재 시스템 타임스탬프 간의 간 격(초)입니다. 작업 범위에서 변경 내용이 캡처되지 않은 경우 AWS DMS가 이 값을 0으로 설정합니다. CDCLatencyTarget 대상에 커밋되기를 대기하는 첫 이벤트 타임스탬프와 AWS DMS 인스턴스의 현재 타임스탬프 사이의 간격(초)입니다. 대상에 의해 처리되지 않은 트랜잭션이 있는 경우 이 값이 발생합니다. 그렇지 않고 모 든 트랜잭션이 적용되는 경우 대상 지연 시간이 소스 지연 시간과 동일합니다. 대상 지연 시간은 소스 지 연 시간보다 작지 않아야 합니다. AWS DMS 작업 로그 관리 AWS DMS에서는 마이그레이션 프로세스 중에 Amazon CloudWatch를 사용하여 작업을 로그합 니다. AWS CLI나 AWS DMS API를 사용하여 작업 로그에 대한 정보를 볼 수 있습니다. 그러려 296
AWS CloudTrail을 사용하여 AWS DMS API 호출 로깅 면 describe-replication-instance-task-logs AWS CLI 명령이나 AWS DMS API 작업 DescribeReplicationInstanceTaskLogs를 사용하십시오. 예를 들어, 다음 AWS CLI 명령은 JSON 형식의 작업 로그 메타데이터를 보여줍니다. $ aws dms describe-replication-instance-task-logs \ --replication-instance-arn arn:aws:dms:us-east-1:237565436:rep:cdsfsfsfffssufcay 명령의 샘플 응답은 다음과 같습니다. "ReplicationInstanceTaskLogs": [ "ReplicationTaskArn": "arn:aws:dms:useast-1:237565436:task:my34u6z4msy52grtix3o4ay", "ReplicationTaskName": "mysql-to-ddb", "ReplicationInstanceTaskLogSize": 3726134 ], "ReplicationInstanceArn": "arn:aws:dms:us-east-1:237565436:rep:cdsfsfsfffssufcay" 이 응답에 복제 인스턴스와 관련된 한 가지 작업 로그(mysql-to-ddb)가 있습니다. 이 로그의 크기는 3,726,124바이트입니다. describe-replication-instance-task-logs에서 반환한 정보를 사용하여 작업 로그 문제를 진단하 고 해결할 수 있습니다. 예를 들어, 작업의 상세 디버그 로깅을 활성화하면 작업 로그가 빠르게 증가하게 되어 복제 인스턴스에서 사용 가능한 스토리지를 모두 소비하고 인스턴스 상태가 storage-full로 변경될 수 있습니다. 작업 로그를 기술하면 더 이상 필요 없는 항목을 파악해 삭제하여 스토리지 공간을 확보할 수 있습니다. 작업의 작업 로그를 삭제하려면 작업 설정 DeleteTaskLogs를 true로 설정하십시오. 예를 들어, AWS CLI modify-replication-task 명령 또는 AWS DMS API ModifyReplicationTask 작업을 사용하여 작 업을 수정할 때 다음 JSOM이 작업 로그를 삭제합니다. "Logging": "DeleteTaskLogs":true AWS CloudTrail을 사용하여 AWS DMS API 호출 로 깅 AWS DMS는 AWS DMS의 사용자, 역할 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비 스인 AWS CloudTrail과 통합됩니다. CloudTrail은 AWS DMS 콘솔의 호출 및 AWS DMS API 코드 호출 등 AWS DMS에 대한 모든 API 호출을 이벤트로 캡처합니다. 추적을 생성하면 CloudTrail 이벤트를 비롯하여 AWS DMS 이벤트를 Amazon S3 버킷으로 지속적으로 배포할 수 있습니다. 추적을 구성하지 않은 경우 이벤 트 기록에서 CloudTrail 콘솔의 최신 이벤트를 볼 수도 있습니다. CloudTrail에서 수집하는 정보를 사용하여 297
CloudTrail의 AWS DMS 정보 AWS DMS에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정 보를 확인할 수 있습니다. CloudTrail에 대한 자세한 내용은 AWS CloudTrail User Guide을 참조하십시오. CloudTrail의 AWS DMS 정보 CloudTrail은 계정 생성 시 AWS 계정에서 활성화됩니다. AWS DMS에서 활동이 수행되면 해당 활동은 이벤 트 기록에서 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최신 이벤트 를 확인, 검색 및 다운로드할 수 있습니다. 자세한 내용은 CloudTrail 이벤트 기록에서 이벤트 보기를 참조하 십시오. AWS DMS 이벤트를 비롯하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성하십시오. 추적은 CloudTrail이 Amazon S3 버킷으로 로그 파일을 전송할 수 있도록 합니다. 콘솔에서 추적을 생성하면 기본 적으로 모든 리전에 추적이 적용됩니다. 추적은 AWS 파티션에 있는 모든 리전의 이벤트를 로깅하고 지정된 Amazon S3 버킷으로 로그 파일을 전송합니다. 또는 CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석 및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음을 참조하십시오. 추적 생성 개요 CloudTrail 지원 서비스 및 통합 CloudTrail에 대한 Amazon SNS 알림 구성 여러 리전에서 CloudTrail 로그 파일 받기 및 여러 계정에서 CloudTrail 로그 파일 받기 모든 AWS DMS 작업이 CloudTrail에서 로깅되고 AWS Database Migration Service API Reference에 문서화 됩니다. 예를 들어, CreateReplicationInstance, TestConnection 및 StartReplicationTask 작 업을 호출하면 CloudTrail 로그 파일에 항목이 생성됩니다. 모든 이벤트 및 로그 항목에는 요청을 생성한 사용자에 대한 정보가 들어 있습니다. 자격 증명 정보를 이용하 면 다음을 쉽게 판단할 수 있습니다. 요청을 루트로 했는지 아니면 IAM 사용자 자격 증명으로 했는지 여부 역할 또는 연합된 사용자에 대한 임시 보안 자격 증명을 사용하여 요청이 생성되었는지 여부. 다른 AWS 서비스에서 요청했는지 여부. 자세한 정보는 CloudTrail useridentity 요소를 참조하십시오. AWS DMS 로그 파일 항목 이해 추적은 지정한 Amazon S3 버킷에 이벤트를 로그 파일로 제공할 수 있도록 해 주는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함됩니다. 이벤트는 어떤 소스로부터의 단일 요청을 나타내며 요 청된 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보가 들어 있습니다. CloudTrail 로그 파일은 퍼블릭 API 호출의 주문 스택 추적이 아니기 때문에 특정 순서로 표시되지 않습니다. 다음은 RebootReplicationInstance 작업을 보여 주는 CloudTrail 로그 항목이 나타낸 예제입니다. "eventversion": "1.05", "useridentity": "type": "AssumedRole", "principalid": "AKIAIOSFODNN7EXAMPLE:johndoe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/johndoe", "accountid": "123456789012", "accesskeyid": "ASIAYFI33SINADOJJEZW", "sessioncontext": "attributes": 298
AWS DMS 로그 파일 항목 이해 "mfaauthenticated": "false", "creationdate": "2018-08-01T16:42:09Z" "sessionissuer": "type": "Role", "principalid": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:role/admin", "accountid": "123456789012", "username": "admin" "eventtime": "2018-08-02T00:11:44Z", "eventsource": "dms.amazonaws.com", "eventname": "RebootReplicationInstance", "awsregion": "us-east-1", "sourceipaddress": "72.21.198.64", "useragent": "console.amazonaws.com", "requestparameters": "forcefailover": false, "replicationinstancearn": "arn:aws:dms:useast-1:123456789012:rep:ex4mbj2nmrdl3bmayjoxugypue" "responseelements": "replicationinstance": "replicationinstanceidentifier": "replication-instance-1", "replicationinstancestatus": "rebooting", "allocatedstorage": 50, "replicationinstanceprivateipaddresses": [ "172.31.20.204" ], "instancecreatetime": "Aug 1, 2018 11:56:21 PM", "autominorversionupgrade": true, "engineversion": "2.4.3", "publiclyaccessible": true, "replicationinstanceclass": "dms.t2.medium", "availabilityzone": "us-east-1b", "kmskeyid": "arn:aws:kms:us-east-1:123456789012:key/f7bc0f8e-1a3a-4ace-9faae8494fa3921a", "replicationsubnetgroup": "vpcid": "vpc-1f6a9c6a", "subnetgroupstatus": "Complete", "replicationsubnetgrouparn": "arn:aws:dms:useast-1:123456789012:subgrp:edhrvrbaaaponqaiywp4nuw22m", "subnets": [ "subnetidentifier": "subnet-cbfff283", "subnetavailabilityzone": "name": "us-east-1b" "subnetstatus": "Active" "subnetidentifier": "subnet-d7c825e8", "subnetavailabilityzone": "name": "us-east-1e" "subnetstatus": "Active" "subnetidentifier": "subnet-6746046b", "subnetavailabilityzone": "name": "us-east-1f" "subnetstatus": "Active" 299
AWS DMS 로그 파일 항목 이해 "subnetidentifier": "subnet-bac383e0", "subnetavailabilityzone": "name": "us-east-1c" "subnetstatus": "Active" "subnetidentifier": "subnet-42599426", "subnetavailabilityzone": "name": "us-east-1d" "subnetstatus": "Active" "subnetidentifier": "subnet-da327bf6", "subnetavailabilityzone": "name": "us-east-1a" "subnetstatus": "Active" ], "replicationsubnetgroupidentifier": "default-vpc-1f6a9c6a", "replicationsubnetgroupdescription": "default group created by console for vpc id vpc-1f6a9c6a" "replicationinstanceeniid": "eni-0d6db8c7137cb9844", "vpcsecuritygroups": [ "vpcsecuritygroupid": "sg-f839b688", "status": "active" ], "pendingmodifiedvalues": "replicationinstancepublicipaddresses": [ "18.211.48.119" ], "replicationinstancepublicipaddress": "18.211.48.119", "preferredmaintenancewindow": "fri:22:44-fri:23:14", "replicationinstancearn": "arn:aws:dms:useast-1:123456789012:rep:ex4mbj2nmrdl3bmayjoxugypue", "replicationinstanceeniids": [ "eni-0d6db8c7137cb9844" ], "multiaz": false, "replicationinstanceprivateipaddress": "172.31.20.204", "patchingprecedence": 0 "requestid": "a3c83c11-95e8-11e8-9d08-4b8f2b45bfd5", "eventid": "b3c4adb1-e34b-4744-bdeb-35528062a541", "eventtype": "AwsApiCall", "recipientaccountid": "123456789012" 300
AWS DMS 작업 검증 주제 복제 작업 통계 (p. 302) 작업 중 테이블 다시 검증 (p. 304) 문제 해결 (p. 304) 제한 (p. 305) AWS DMS는 데이터가 원본에서 대상으로 정확히 마이그레이션되었는지 확인하기 위한 데이터 검증을 지원 합니다. 작업에 대해 활성화하면 테이블에 대해 전체 로드가 수행된 직후 AWS DMS가 원본 및 대상 데이터 를 비교하기 시작합니다. 데이터 검증은 선택 사항입니다. AWS DMS는 원본 레코드와 대상 레코드를 비교하고 일치하지 않는 사항이 있으면 보고합니다. 또한 CDC 지원 작업의 경우 AWS DMS는 증분 변경 사항을 비교하고 일치하지 않는 사 항이 있으면 보고합니다. 데이터를 검증하는 동안 AWS DMS는 원본의 각 행과 대상의 해당 행을 비교한 후 이 행의 데이터가 동일한 지 확인합니다. 이 작업을 수행하기 위해 AWS DMS는 적절한 쿼리를 실행하여 데이터를 검색합니다. 이러 한 쿼리는 원본 및 대상의 추가 리소스와 추가 네트워크 리소스를 사용합니다. 데이터 검증은 AWS DMS가 소스 및 대상 엔드포인트로서 다음 데이터베이스를 지원할 때마다 해당 데이터 베이스와 연동합니다. Oracle PostgreSQL MySQL MariaDB Microsoft SQL Server Amazon Aurora(MySQL) Amazon Aurora(PostgreSQL) 지원되는 엔드포인트에 대한 자세한 내용은 AWS DMS 엔드포인트 작업 (p. 83) 단원을 참조하십시오. 데이터 검증에는 마이그레이션 자체에 소요되는 시간 외에도 추가 시간이 요구됩니다. 필요한 추가 시간은 마이그레이션되는 데이터의 양에 따라 달라집니다. 데이터 검증 설정에는 다음이 포함됩니다. EnableValidation 데이터 검증을 활성화하거나 비활성화합니다. FailureMaxCount 작업에 대한 검증이 일시 중지되기 전에 검증에 실패할 수 있는 최대 레코드 수를 지정합니다. HandleCollationDiff 비교할 소스 및 대상 레코드 식별 시 PostgreSQL 엔드포인트의 열 기준 데이 터 정렬 차이를 고려합니다. RecordFailureDelayLimitInMinutes 검증 실패 세부 정보를 보고하기 전에 지연을 지정합니다. TableFailureMaxCount 작업에 대한 검증이 일시 중지되기 전에 검증에 실패할 수 있는 최대 테이블 수를 지정합니다. ThreadCount 검증 중 AWS DMS에서 사용하는 실행 스레드 수를 조정합니다. ValidationOnly 데이터 마이그레이션이나 복제를 수행하지 않고 작업에 대한 검증을 미리 봅니다. 301
복제 작업 통계 예를 들어 다음 JSON은 검증을 활성화하고 스레드 수를 8로 늘리며, 테이블 검증 실패가 있는 경우 검증을 일시 중지합니다. ValidationSettings": "EnableValidation":true, "ThreadCount":8, "TableFailureMaxCount":1 이러한 설정에 대한 자세한 내용은 데이터 검증 작업 설정 (p. 246) 단원을 참조하십시오. 복제 작업 통계 데이터 검증이 활성화되면 AWS DMS는 테이블 수준에서 다음 통계를 제공합니다. ValidationState 테이블의 검증 상태입니다. 이 파라미터의 값은 다음과 같습니다. Not enabled 마이그레이션 작업의 테이블에 대해 검증이 활성화되지 않습니다. Pending records 테이블의 일부 레코드가 검증 대기 중입니다. Mismatched records 테이블의 일부 레코드가 원본과 대상 간에 일치하지 않습니다. 불일치가 발생하는 이유에는 여러 가지가 있으므로 자세한 내용은 대상 엔드포인트의 awsdms_validation_failures 테이블을 참조하십시오. Suspended records 테이블의 일부 레코드를 검증할 수 없습니다. No primary key 기본 키가 없어 테이블을 검증할 수 없습니다. Table error 테이블이 오류 상태이고 일부 데이터가 마이그레이션되지 않아 테이블이 검증되지 않았습 니다. Validated 테이블의 모든 행이 검증되었습니다. 테이블이 업데이트된 경우 상태가 Validated에서 변경 할 수 있습니다. Error 예상치 못한 오류로 인해 테이블을 검증할 수 없습니다. ValidationPending 대상에 마이그레이션되었지만 아직 검증되지 않은 레코드 수입니다. ValidationSuspended AWS DMS에서 비교할 수 없는 레코드 수입니다. 예를 들어, 원본의 레코드를 지속 적으로 업데이트하고 있는 경우 AWS DMS가 원본과 대상을 비교할 수 없습니다. 자세한 내용은 오류 처 리 작업 설정 (p. 247) 단원을 참조하십시오. ValidationFailed 데이터 검증 단계를 통과하지 않은 레코드 수입니다. 자세한 내용은 오류 처리 작업 설 정 (p. 247) 단원을 참조하십시오. ValidationSucceededRecordCount AWS DMS에서 검증한 분당 행 수입니다. ValidationAttemptedRecordCount 검증이 시도된 분당 행 수입니다. ValidationFailedOverallCount 검증이 실패한 행 수입니다. ValidationSuspendedOverallCount 검증이 일시 중지된 행 수입니다. ValidationPendingOverallCount 검증이 보류 중인 행 수입니다. ValidationBulkQuerySourceLatency AWS DMS는 변경이 많을 시 전체 복제나 지속적 복제 동안 특정 시 나리오를 중심으로 일괄적으로 데이터를 검증할 수 있습니다. 이 지표는 소스 엔드포인트 대량의 데이터 세트를 읽는 데 필요한 지연 시간을 나타냅니다. ValidationBulkQueryTargetLatency AWS DMS는 변경이 많을 시 전체 복제나 지속적 복제 동안 특정 시 나리오를 중심으로 일괄적으로 데이터를 검증할 수 있습니다. 이 지표는 대상 엔드포인트의 대량의 데이터 세트를 읽는 데 필요한 지연 시간을 나타냅니다. ValidationItemQuerySourceLatency 지속적 복제 동안 데이터 검증이 지속적 변경을 식별하고 이 변경을 검증합니다. 이 지표는 소스에서 이런 변경을 읽는 데 필요한 지연 시간을 나타냅니다. 검증은 변경의 수를 근거로, 검증 동안 오류가 있을 시 필요한 것보다 더 많은 쿼리를 실행할 수 있습니다. 302
복제 작업 통계 ValidationItemQueryTargetLatency 지속적 복제 동안 데이터 검증이 지속적 변경을 식별하고 행 단위로 변경을 검증할 수 있습니다. 이 지표는 대상에서 이런 변경을 읽는 데 필요한 지연 시간을 제공합니다. 검 증은 변경의 수를 근거로, 검증 동안 오류가 있을 시 필요한 것보다 더 많은 쿼리를 실행할 수도 있습니다. 콘솔, AWS CLI 또는 AWS DMS API를 사용하여 데이터 검증 정보를 볼 수 있습니다. 콘솔에서 작업을 생성하거나 수정할 때 작업을 검증하도록 선택할 수 있습니다. 콘솔을 사용하여 데이터 검증 보고서를 보려면 [Tasks] 페이지에서 작업을 선택하고 세부 정보 섹션에서 [Table statistics] 탭을 선 택합니다. 데이터 검증을 시작하도록 작업을 생성하거나 수정하려는 경우 CLI를 사용하여 EnableValidation 파 라미터를 [true]로 설정합니다. 다음 예제에서는 작업을 생성하고 데이터 검증을 활성화합니다. create-replication-task --replication-task-settings '"ValidationSettings":"EnableValidation":true' --replication-instance-arn arn:aws:dms:us-east-1:5731014: rep:36kwvmb7q --source-endpoint-arn arn:aws:dms:us-east-1:5731014: endpoint:cszaefqurfymm --target-endpoint-arn arn:aws:dms:us-east-1:5731014: endpoint:cgpp7mf6wt4jq --migration-type full-load-and-cdc --table-mappings '"rules": ["rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": "schema-name": "data_types", "table-name": "%" "rule-action": "include"]' describe-table-statistics 명령을 사용하여 JSON 형식의 데이터 검증 보고서를 받습니다. 다음 명령은 데이터 검증 보고서를 표시합니다. aws dms describe-table-statistics --replication-task-arn arn:aws:dms:us-east-1:5731014: rep:36kwvmb7q 이 보고서는 다음과 비슷합니다. "ReplicationTaskArn": "arn:aws:dms:us-west-2:5731014:task:vfpftykk2rysi", "TableStatistics": [ "ValidationPendingRecords": 2, "Inserts": 25, "ValidationState": "Pending records", "ValidationSuspendedRecords": 0, "LastUpdateTime": 1510181065.349, "FullLoadErrorRows": 0, "FullLoadCondtnlChkFailedRows": 0, "Ddls": 0, "TableName": "t_binary", "ValidationFailedRecords": 0, "Updates": 0, "FullLoadRows": 10, "TableState": "Table completed", "SchemaName": "d_types_s_sqlserver", "Deletes": 0 AWS DMS API에서 [CreateReplicationTask] 작업을 사용하여 작업 하나를 생성하며 EnableValidation 파라미터를 [true]로 설정하여 작업을 통해 마이그레이션되는 데이터를 검증합니다. [DescribeTableStatistics] 작업을 사용하여 JSON 형식의 데이터 검증 보고서를 받습니다. 303
작업 중 테이블 다시 검증 작업 중 테이블 다시 검증 작업 실행 중에 AWS DMS를 요청하여 데이터 검증을 수행할 수 있습니다. AWS Management 콘솔 1. AWS Management 콘솔에 로그인하고 AWS DMS 선택을 수행합니다. AWS Identity and Access Management(IAM) 사용자로 로그인한 경우에는 AWS DMS에 액세스하기 위한 적절한 권한이 있어야 합니다. 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 (p. 32) 섹션을 참조하십 시오. 2. 탐색 창에서 [Tasks]를 선택합니다. 3. 다시 검증할 테이블이 있는 실행 중인 작업을 선택합니다. 4. 테이블 통계 탭을 선택합니다. 5. 다시 검증할 테이블을 선택합니다. 작업이 더 이상 실행되고 있지 않으면 테이블을 다시 검증할 수 없습 니다. 6. Revalidate(다시 검증)를 선택합니다. 문제 해결 검증하는 동안 AWS DMS는 대상 엔드포인트에서 새 테이블인 awsdms_validation_failures_v1을 생성합니다. 레코드 상태가 ValidationSuspended 또는 ValidationFailed가 되면 AWS DMS는 awsdms_validation_failures_v1에 진단 정보를 씁니다. 이 테이블을 쿼리하여 검증 오류 문제를 해결 할 수 있습니다. 다음은 awsdms_validation_failures_v1 테이블에 대한 설명입니다. 열 이름 데이터 형식 설명 TASK_NAME VARCHAR(128) NOT NULL AWS DMS 작업 식별자 TABLE_OWNER VARCHAR(128) NOT NULL 테이블의 스키마(소유자). TABLE_NAMEVARCHAR(128) NOT NULL 테이블 이름 FAILURE_TIME DATETIME(3) NOT NULL 실패가 발생한 시간. KEY 이 키는 행 레코드 유형의 기본 키입니다. TEXT NOT NULL FAILURE_TYPE VARCHAR(128) NOT NULL 검증 오류의 심각도. Failed 또는 Suspended입니다. 다음 쿼리는 awsdms_validation_failures_v1 테이블을 쿼리하여 작업에 대한 모든 실패를 표시합니 다. 작업 이름은 작업의 외부 리소스 ID여야 합니다. 작업의 외부 리소스 ID는 작업 ARN의 마지막 값입니다. 예를 들어, ARN 값이 arn:aws:dms:us-west-2:5599:task: VFPFKH4FJR3FTYKK2RYSI인 작업의 경우, 작업 의 외부 리소스 ID는 VFPFKH4FJR3FTYKK2RYSI입니다. 304
제한 select * from awsdms_validation_failures_v1 where TASK_NAME = 'VFPFKH4FJR3FTYKK2RYSI' 실패한 레코드의 기본 키가 있으면 소스 및 대상 엔드포인트를 쿼리하여 레코드에서 일치하지 않는 부분을 찾아낼 수 있습니다. 제한 데이터를 검증하려면 테이블에 기본 키나 고유한 인덱스가 있어야 합니다. 기본 키 열은 CLOB, BLOB 또는 BYTE 형식이 아니어야 합니다. VARCHAR 또는 CHAR 형식의 기본 키 열은 길이가 1024보다 작아야 합니다. 대상 PostgreSQL 인스턴스의 기본 키 열의 콜레이션이 "C"로 설정되어 있지 않으면 기본 키의 정렬 순서 가 Oracle의 정렬 순서와 달라집니다. PostgreSQL과 Oracle의 정렬 순서가 다르면 데이터 검증을 통해 레 코드를 검증할 수 없습니다. 데이터 검증을 수행하면 원본 및 대상 데이터베이스에 대해 추가 쿼리가 생성됩니다. 두 데이터베이스에 이 추가 로드를 처리할 수 있을 만큼 충분한 리소스가 확보되었는지 확인해야 합니다. 마이그레이션에 사용자 지정 필터링이 사용되는 경우나 여러 데이터베이스를 하나로 통합할 때는 데이터 검증이 지원되지 않습니다. 원본 또는 대상 Oracle 엔드포인트의 경우 AWS DMS에서는 DBMS_CRYPTO를 사용하여 BLOB을 검증 합니다. Oracle 엔드포인트에 BLOB이 사용되는 경우 Oracle 엔드포인트에 액세스하는 데 사용되는 사용 자 계정에 dbms_crypto에 대한 실행 권한을 부여해야 합니다. 다음 명령문을 실행하여 이 권한을 호출할 수 있습니다. grant execute on sys.dbms_crypto to <dms_endpoint_user>; 검증하는 동안 대상 데이터베이스를 AWS DMS 외부에서 수정하는 경우 불일치 사항이 정확히 보고되지 않을 수도 있습니다. AWS DMS가 동일한 테이블을 검증하는 동안 애플리케이션 중 하나가 데이터를 대상 테이블에 쓰는 경우에 이 결과가 발생할 수 있습니다. 검증하는 동안 하나 이상의 행이 지속적으로 수정되면 AWS DMS가 이 행을 검증할 수 없습니다. 하지만 작업이 완료된 후 그런 행을 수동으로 검증할 수 있습니다. AWS DMS에서 10,000개가 넘는 실패 또는 일시 중지된 레코드를 검색하면 검증이 중지됩니다. 계속 진행 하기 전에 데이터에 잠재된 문제를 해결하십시오. 305
AWS Database Migration Service에 리소스 태그 지정 AWS Database Migration Service(AWS DMS)에서 태그를 사용하여 리소스에 메타데이터를 추가할 수 있습 니다. 또한 AWS Identity and Access Management(IAM) 정책과 함께 이러한 태그를 사용하여 AWS DMS 리 소스에 대한 액세스를 관리하고 AWS DMS 리소스에 적용 가능한 작업을 제어할 수 있습니다. 마지막으로 비슷하게 태그가 지정된 리소스에 대한 비용을 그룹화하여 이러한 태그로 비용을 추적할 수 있습니다. 모든 AWS DMS 리소스에 태그를 지정할 수 있습니다. 복제 인스턴스 엔드포인트 복제 작업 인증서 AWS DMS 태그는 사용자가 정의하고 AWS DMS 리소스와 연결하는 이름-값 페어입니다. 이 이름을 키라고 합니다. 키 값을 제공하는 것은 선택 사항입니다. 태그를 사용하여 AWS DMS 리소스에 임의의 정보를 배정 할 수 있습니다. 범주 정의 등에 태그 키를 사용할 수 있으며 태그 값은 해당 범주의 항목일 수 있습니다. 예를 들어, 태그 키를 "project"로 정의하고 태그 값을 "Salix"로 정의하여 AWS DMS 리소스가 Salix 프로젝트에 할 당됨을 나타냅니다. environment=test나 environment =production 등의 키를 사용하여 태그로 AWS DMS 리 소스를 테스트나 프로덕션에 사용되는 것으로 지정할 수도 있습니다. AWS DMS 리소스와 연결된 메타데이 터를 더 쉽게 추적할 수 있게 일관성 있는 태그 키 세트를 사용하는 것이 좋습니다. 태그를 사용하여 비용 구조를 반영하도록 AWS 대금을 구성하십시오. 이렇게 하려면 가입하여 태그 키 값이 포함된 AWS 계정을 가져옵니다. 그런 다음 같은 태그 키 값을 가진 리소스에 따라 결제 정보를 구성하여 리 소스 비용의 합을 볼 수 있습니다. 예를 들어, 특정 애플리케이션 이름으로 여러 리소스에 태그를 지정한 다 음 결제 정보를 구성하여 여러 서비스에 걸친 해당 애플리케이션의 총 비용을 볼 수 있습니다. 자세한 내용은 About AWS Billing and Cost Management의 Cost Allocation and Tagging을 참조하십시오. 각 AWS DMS 리소스에는 해당 AWS DMS 리소스에 배정되는 모든 태그를 포함하는 태그 세트가 있습니다. 태그 세트는 최대 10개의 태그를 포함하거나 비어 있을 수 있습니다. AWS DMS 리소스의 기존 태그와 동일 한 키를 갖는 태그를 리소스에 추가하면 새 값이 이전 값을 덮어씁니다. AWS에서는 태그에 의미론적 의미를 적용하지 않습니다. 태그는 엄격히 문자열로 해석됩니다. AWS DMS에 서는 사용자가 리소스를 만들 때 사용하는 설정에 따라 AWS DMS 리소스에서 태그를 설정할 수 있습니다. 다음 목록에서는 AWS DMS 태그의 특징을 설명합니다. 태그 키는 태그의 필수 이름입니다. 문자열 값은 길이가 1~128자(유니코드 문자)이며 "aws:" 또는 "dms:"로 시작할 수 없습니다. 문자열에는 유니코드 문자, 숫자, 공백, '_', '.', '/', '=', '+', '-'(Java regex: "^([\ \pl\\pz\\pn_.:/=+\\-]*)$")만을 사용할 수 있습니다. 태그 값은 태그의 선택적 문자열 값입니다. 문자열 값은 길이가 1~256자(유니코드 문자)이며 "aws:" 또는 "dms:"로 시작할 수 없습니다. 문자열에는 유니코드 문자, 숫자, 공백, '_', '.', '/', '=', '+', '-'(Java regex: "^([\ \pl\\pz\\pn_.:/=+\\-]*)$")만을 사용할 수 있습니다. 값은 태그 세트에서 고유할 필요는 없으며 null일 수 있습니다. 예를 들어, project/trinity 및 cost-center/ Trinity의 태그 세트에 키-값 페어가 있을 수 있습니다. AWS CLI 또는 AWS DMS API를 사용하여 AWS DMS 리소스에서 태그를 추가, 나열 및 삭제할 수 있습니다. AWS CLI 또는 AWS DMS API를 사용할 때 사용할 AWS DMS 리소스에 대한 Amazon 리소스 이름(ARN)을 306
API 제공해야 합니다. ARN 생성에 대한 자세한 내용은 AWS DMS용 Amazon 리소스 이름(ARN) 생성 (p. 12) 주 제를 참조하십시오. 권한 부여 목적으로 태그가 캐시됩니다. 이 때문에 AWS DMS 리소스의 태그에 대한 추가나 업데이트가 제 공되는 데 몇 분 정도 걸릴 수 있습니다. API AWS DMS API를 사용한 AWS DMS 리소스에 대한 태그를 추가, 나열 또는 제거할 수 있습니다. AWS DMS 리소스에 태그를 추가하려면 AddTagsToResource 작업을 사용합니다. AWS DMS 리소스에 할당된 태그를 나열하려면 ListTagsForResource 작업을 사용합니다. AWS DMS 리소스에서 태그를 제거하려면 RemoveTagsFromResource 작업을 사용합니다. 필수 ARN을 생성하는 방법에 대해 자세히 알아보려면 AWS DMS용 Amazon 리소스 이름(ARN) 생성 (p. 12) 단원을 참조하십시오. AWS DMS API를 사용한 XML 작업 시 다음 스키마를 사용하십시오. <Tagging> <TagSet> <Tag> <Key>Project</Key> <Value>Trinity</Value> </Tag> <Tag> <Key>User</Key> <Value>Jones</Value> </Tag> </TagSet> </Tagging> 다음 표에는 허용되는 XML 태그와 해당 특성의 목록이 나와 있습니다. Key 및 Value 값은 대/소문자를 구분 합니다. 예를 들어, project=trinity와 PROJECT=Trinity는 서로 다른 두 개의 태그입니다. 태그 지정 요소 설명 TagSet 태그 세트에는 Amazon RDS 리소스에 배정된 모든 태그가 들어 있습니다. 리소스당 하나의 태그 세트만 있을 수 있습니다. AWS DMS API를 통해서만 TagSet로 작업합니다. Tag 태그는 사용자가 정의하는 키-값 페어입니다. 태그 세트에 1~10개의 태그가 있 을 수 있습니다. 키 키는 태그의 필수 이름입니다. 문자열 값은 길이가 1~128자(유니코드 문자)이 며 "dms:" 또는 "aws:"로 시작할 수 없습니다. 문자열에는 유니코드 문자, 숫자, 공백, '_', '.', '/', '=', '+', '-'(Java regex: "^([\\pl\\pz\\pn_.:/=+\\-]*)$")만을 사용 할 수 있습니다. 키는 태그 집합에 대해 고유해야 합니다. 예를 들어, 태그 세트에 project/trinity 와 project/xanadu처럼 키는 같지만 값은 다른 키-페어가 있을 수 없습니다. 값 값은 태그의 선택적 값입니다. 문자열 값은 길이가 1~256자(유니코드 문자)이 며 "dms:" 또는 "aws:"로 시작할 수 없습니다. 문자열에는 유니코드 문자, 숫자, 공백, '_', '.', '/', '=', '+', '-'(Java regex: "^([\\pl\\pz\\pn_.:/=+\\-]*)$")만을 사용 할 수 있습니다. 307
API 태그 지정 요소 설명 값은 태그 세트에서 고유할 필요는 없으며 null일 수 있습니다. 예를 들어, project/trinity 및 cost-center/trinity의 태그 세트에 키-값 페어가 있을 수 있습니 다. 308
AWS DMS 이벤트 카테고리 및 이벤트 메시지 AWS Database Migration Service에 서 이벤트 및 알림 사용 AWS Database Migration Service(AWS DMS)는 Amazon Simple Notification Service(Amazon SNS)를 사용 하여 AWS DMS 이벤트(복제 인스턴스 생성이나 삭제 등)가 발생하면 알림을 제공합니다. AWS 리전에 따라 Amazon SNS에서 지원하는 형식으로 이메일 메시지, 문자 또는 HTTP 엔드포인트 호출 등의 알림을 사용할 수 있습니다. AWS DMS는 고객이 구독할 수 있는 카테고리로 이벤트를 그룹화합니다. 따라서 고객은 해당 카테고리의 이 벤트가 발생했을 때 이에 대한 알림을 받을 수 있습니다. 예를 들어 임의의 복제 인스턴스에 대한 생성 카테 고리를 구독할 경우 생성 관련 이벤트가 발생하여 복제 인스턴스에 영향을 끼칠 때마다 알림 메시지가 수신 됩니다. 복제 인스턴스에서 구성 변경 카테고리를 구독하면 복제 인스턴스의 구성이 변경될 때마다 메시지가 수신됩니다. 또한 이벤트 알림 메시지 구독이 변경되어도 알림 메시지가 수신됩니다. AWS DMS에서 제공하 는 이벤트 카테고리 목록은 아래에 나오는 AWS DMS 이벤트 카테고리 및 이벤트 메시지 (p. 309)를 참조 하십시오. AWS DMS는 사용자가 이벤트 구독을 생성할 때 제공한 주소로 이벤트 알림을 전송합니다. 모든 이벤트 알 림 메시지를 수신하거나 프로덕션 DMS 리소스의 중요 이벤트만 수신하는 등 다른 구독을 복수로 생성하는 것도 가능합니다. 알림 기능은 구독을 삭제할 필요 없이 AWS DMS 콘솔에서 활성화 옵션을 아니요로 설정 하거나, 혹은 AWS DMS API를 사용하여 Enabled 파라미터를 false로 설정하여 쉽게 끌 수 있습니다. Note SMS 문자 메시지를 사용한 AWS DMS 이벤트 알림 서비스는 현재 AWS DMS가 지원되는 모든 리전의 AWS DMS 리소스로 제공되고 있습니다. SNS 문자 메시지 사용에 대한 자세한 내용은 Amazon SNS를 통한 SMS 알림 메시지 전송 및 수신을 참조하십시오. AWS DMS는 구독 식별자를 사용하여 각 구독을 확인합니다. 동일한 Amazon SNS 주제에 게시된 여 러 AWS DMS 이벤트를 구독할 수 있습니다. 이벤트 알림을 사용하면 Amazon SNS 요금이 적용됩니다. Amazon SNS 비용 청구에 대한 자세한 내용은 Amazon SNS 요금 단원을 참조하십시오. AWS DMS 이벤트를 구독하려면, 다음 프로세스를 사용합니다. 1. Amazon SNS 주제를 만듭니다. 주제에서 수신할 알림 유형과 알림이 도달할 주소 또는 번호를 지정합니 다. 2. AWS Management 콘솔, AWS CLI 또는 AWS DMS API를 사용하여 AWS DMS 이벤트 알림 서비스 구독 을 생성합니다. 3. AWS DMS가 구독 생성 시 제출한 이메일 주소로 승인 이메일 또는 SMS 메시지를 전송합니다. 구독을 확 인하려면, 승인 이메일이나 SMS 메시지의 링크를 클릭합니다. 4. 구독 여부를 확인하면 AWS DMS 콘솔의 이벤트 구독 영역에 구독 상태가 업데이트됩니다. 5. 이제부터 이벤트 알림 메시지가 수신됩니다. 알림을 받을 수 있는 카테고리와 이벤트 목록은 다음 섹션을 참조하십시오. AWS DMS 이벤트 구독과 이 이 벤트 구독 사용에 대한 자세한 내용은 AWS DMS 이벤트 알림 구독 (p. 312)을 참조하십시오. AWS DMS 이벤트 카테고리 및 이벤트 메시지 AWS DMS는 AWS DMS 콘솔 또는 AWS DMS API를 사용하여 구독할 수 있는 이벤트 카테고리가 매우 많습 니다. 각 카테고리는 소스 형식에 적용됩니다. 즉, 현재 AWS DMS는 복제 인스턴스와 복제 작업 소스 형식을 지원합니다. 다음 표에는 복제 인스턴스 원본 형식에서 가능한 카테고리와 이벤트가 나와 있습니다. 309
AWS DMS 이벤트 카테고리 및 이벤트 메시지 카테고리 DMS 이벤트 ID 설명 구성 변경 DMS-EVENT-0012 REP_INSTANCE_CLASS_CHANGING 이 복제 인스 턴스의 복제 인스턴스 클래스가 변경되고 있습니다. 구성 변경 DMS-EVENT-0014 REP_INSTANCE_CLASS_CHANGE_COMPLETE 이 복제 인스턴스의 복제 인스턴스 클래스가 변경되었습니 다. 구성 변경 DMS-EVENT-0018 BEGIN_SCALE_STORAGE 복제 인스턴스의 스토리 지가 증가하고 있습니다. 구성 변경 DMS-EVENT-0017 FINISH_SCALE_STORAGE 복제 인스턴스의 스토리 지가 증가되었습니다. 구성 변경 DMS-EVENT-0024 BEGIN_CONVERSION_TO_HIGH_AVAILABILITY 복 제 인스턴스가 다중 AZ 구성으로 전환되고 있습니다. 구성 변경 DMS-EVENT-0025 FINISH_CONVERSION_TO_HIGH_AVAILABILITY 복 제 인스턴스가 다중 AZ 구성으로의 전환을 마쳤습니다. 구성 변경 DMS-EVENT-0030 BEGIN_CONVERSION_TO_NON_HIGH_AVAILABILITY 복제 인스턴스가 단일 AZ 구성으로 전환되고 있습니 다. 구성 변경 DMS-EVENT-0029 FINISH_CONVERSION_TO_NON_HIGH_AVAILABILITY 복제 인스턴스가 단일 AZ 구성으로의 전환을 마쳤습 니다. 생성 DMS-EVENT-0067 CREATING_REPLICATION_INSTANCE 복제 인스턴 스가 생성되고 있습니다. 생성 DMS-EVENT-0005 CREATED_REPLICATION_INSTANCE 복제 인스턴 스가 생성되었습니다. 삭제 DMS-EVENT-0066 DELETING_REPLICATION_INSTANCE 복제 인스턴 스가 삭제되고 있습니다. 삭제 DMS-EVENT-0003 DELETED_REPLICATION_INSTANCE 복제 인스턴 스가 삭제되었습니다. 유지 관리 DMS-EVENT-0047 FINISH_PATCH_INSTANCE 복제 인스턴스의 관리 소프트웨어가 업데이트되었습니다. 유지 관리 DMS-EVENT-0026 BEGIN_PATCH_OFFLINE 복제 인스턴스의 오프라인 유지 관리가 진행 중입니다. 현재 복제 인스턴스를 사용 할 수 없습니다. 유지 관리 DMS-EVENT-0027 FINISH_PATCH_OFFLINE 복제 인스턴스의 오프라인 유지 관리가 완료되었습니다. 이제 복제 인스턴스를 사 용할 수 있습니다. 유지 관리 DMS-EVENT-0068 CANNOT_PATCH_INSTANCE 복제 인스턴스가 업그 레이드할 수 없는 상태입니다. LowStorage DMS-EVENT-0007 LOW_STORAGE 복제 인스턴스의 여유 스토리지가 부족합니다. 장애 조치 DMS-EVENT-0013 FAILOVER_STARTED 다중 AZ 복제 인스턴스에서 장 애 조치가 시작되었습니다. 310
AWS DMS 이벤트 카테고리 및 이벤트 메시지 카테고리 DMS 이벤트 ID 설명 장애 조치 DMS-EVENT-0049 FAILOVER_COMPLETED 다중 AZ 복제 인스턴스에 서 장애 조치가 완료되었습니다. Failover DMS-EVENT-0015 HM_SECONDARY_PROMOTION_COMPLETE MultiAZ를 대기 모드로 failover 완료했습니다. Failover DMS-EVENT-0050 MAZ_INSTANCE_ACTIVATION_STARTED 다중 AZ 활성화가 시작되었습니다. Failover DMS-EVENT-0051 MAZ_INSTANCE_ACTIVATION_COMPLETED 다중 AZ 활성화가 완료되었습니다. Failover DMS-EVENT-0034 FAILOVER_RECENTLY_OCCURED 장애 조치를 너 무 자주 요청하면 정기적인 장애 조치 이벤트 대신 이 이 벤트가 발생합니다. 결함 DMS-EVENT-0031 REPLICATION_INSTANCE_FAILURE 복제 인스턴스 에 스토리지 장애가 발생했습니다. 결함 DMS-EVENT-0036 INCOMPATIBLE_NETWORK 호환되지 않는 네트워 크로 인해 복제 인스턴스에 장애가 발생했습니다. 결함 DMS-EVENT-0037 INACCESSIBLE_ENCRYPTION_CREDS 데이터 볼 륨을 암호화하는 데 사용되는 KMS 키에 서비스가 액세 스할 수 없는 경우. 다음 표에는 복제 작업 원본 형식에서 가능한 카테고리와 이벤트가 나와 있습니다. 카테고리 DMS 이벤트 ID 설명 StateChange DMS-EVENT-0069 REPLICATION_TASK_STARTED 복제 인스턴스가 시 작되었습니다. StateChange DMS-EVENT-0077 REPLICATION_TASK_CDC_STARTED 복제 인스턴 스가 CDC를 시작했습니다. StateChange DMS-EVENT-0081 RELOAD_TABLES_EVENT 테이블 세부 정보 다시 로 드가 요청되었습니다. StateChange DMS-EVENT-0079 REPLICATION_TASK_STOPPED 복제 작업이 중지 되었습니다. Progress DMS-EVENT-0076 REPLICATION_TASK_FULL_LOAD_COMPLETED 복제 작업이 전체 로드를 완료했습니다. 결함 DMS-EVENT-0078 REPLICATION_TASK_FAILED 복제 인스턴스에 실패 했습니다. 결함 DMS-EVENT-0082 CLEAN_TASK_FAILED 작업 데이터 정리에 대한 호 출에 실패했습니다. ConfigurationChangeDMS-EVENT-0080 REPLICATION_TASK_MODIFIED 복제 작업이 수정 되었습니다. 삭제 REPLICATION_TASK_DELETED 복제 작업이 삭제되 었습니다. DMS-EVENT-0073 311
AWS DMS 이벤트 알림 구독 카테고리 DMS 이벤트 ID 설명 생성 DMS-EVENT-0074 REPLICATION_TASK_CREATED 복제 작업이 생성 되었습니다. AWS DMS 이벤트 알림 구독 AWS DMS 이벤트 알림 구독을 생성하여 AWS DMS 이벤트가 발생하면 알림을 받을 수 있습니다. 가장 간단 한 구독 생성 방법은 AWS DMS 콘솔을 이용하는 것입니다. AWS DMS API를 사용하여 이벤트 알림 구독을 생성하려면 먼저 Amazon SNS 주제를 만든 후 Amazon SNS 콘솔이나 API를 통해 해당 주제를 구독해야 합 니다. 이 경우에 이 ARN이 CLI 명령이나 API 작업을 제출할 때도 사용되기 때문에 해당 주제의 Amazon 리 소스 이름(ARN)도 적어두어야 합니다. Amazon SNS주제를 만들어 구독하는 방법은 Amazon SNS 시작하 기를 참조하십시오. 알림 구독에서 알림을 수신할 소스 유형과 이벤트를 트리거하는 AWS DMS 소스를 지정할 수 있습니 다. SourceType 값을 사용하여 AWS DMS 소스 형식을 정의합니다. [SourceIdentifier] 값을 사용하여 이벤트를 생성하는 원본을 정의합니다. SourceType = db-instance 및 SourceIdentifier = mydbinstance1과 같이 [SourceType]과 [SourceIdentifier]를 모두 지정하면, 지정된 원본에 대한 모든 DB 인스턴스 이벤트를 수신합니다. SourceType만 지정하고 SourceIdentifier를 지정하지 않으면, 모든 AWS DMS 소스에서 해당 소스 유형에 대한 이벤트 알림을 받습니다. SourceType 또는 SourceIdentifier를 지정하 지 않으면, 고객 계정에 속하는 모든 AWS DMS 소스에서 생성된 이벤트에 대한 알림을 수신합니다. AWS Management 콘솔 콘솔을 사용하여 AWS DMS 이벤트 알림을 구독하려면 1. AWS Management Console에 로그인하고 AWS DMS을 선택합니다. AWS Identity and Access Management(IAM) 사용자로 로그인한 경우 AWS DMS에 액세스하기 위한 적절한 권한이 있어야 합니 다. 2. 탐색 창에서 [Event Subscriptions]를 선택합니다;. 3. [Event Subscriptions] 페이지에서 [Create Event Subscription]을 선택합니다. 4. [Create Event Subscription] 페이지에서 다음을 수행합니다. a. [Name]에서 이벤트 알림 구독 이름을 입력합니다. b. 알림 전송에서 기존 Amazon SNS 주제를 선택하거나 주제 생성을 선택합니다. 알림을 전송할 기존 Amazon SNS 주제가 있거나 주제를 생성해야 합니다. [create topic]을 선택하는 경우, 알림이 전송 되는 이메일 주소를 입력하면 됩니다. c. [Source Type]에서 원본 형식을 선택합니다. 유일한 옵션은 [replication instance]입니다. d. [Yes]를 선택하여 구독을 활성화합니다. 구독만 생성하고 알림 메시지 전송은 아직 원하지 않을 경 우에는 [No]를 선택합니다. e. 선택한 소스 유형에 따라 이벤트 알림 메시지를 수신하고자 하는 이벤트 카테고리와 소스를 선택합 니다. 312
AWS DMS API f. Create를 선택합니다. AWS DMS 콘솔에 현재 구독 생성 중으로 나옵니다. AWS DMS API AWS DMS API를 사용하여 AWS DMS 이벤트 알림을 구독하려면 CreateEventSubscription을 호출합니다. 313
AWS Database Migration Service 및 AWS Snowball 엣지를 사용하여 대규 모 데이터 스토어를 마이그레이션 대규모 데이터 마이그레이션에는 수 테라바이트 가량의 정보가 포함될 수 있습니다. 이 프로세스는 네트 워크 대역폭 제한으로 인해 또는 다량의 데이터만으로도 번거로울 수 있습니다. AWS Database Migration Service(AWS DMS)는 AWS Snowball 엣지 및 Amazon S3를 사용하여 다른 방법보다 더 빠르게 대규모 데이 터베이스를 마이그레이션할 수 있습니다. AWS Snowball 엣지는 네트워크보다 빠른 속도로 클라우드에 데이터를 전송하는 데 사용할 수 있는 엣지 디 바이스를 제공하는 AWS 서비스입니다. 엣지 디바이스는 AWS 자체의 어플라이언스입니다. 엣지 디바이스 는 최대 100TB의 데이터를 유지할 수 있습니다. 이 디바이스는 256비트 암호화를 사용하며, 데이터의 보안 과 연계보관성(chain-of-custody)을 모두 보장하도록 설계된 산업 표준 TPM(Trusted Platform Module)을 사 용합니다. AWS Snowball 엣지는 많은 추가 기능을 제공합니다. 자세한 내용은 AWS Snowball Edge 개발자 안내서의 AWS Snowball Edge란 무엇입니까?를 참조하십시오. Amazon S3는 AWS 스토리지 및 검색 서비스입니다. Amazon S3에 객체를 저장하려면 저장할 파일을 버킷 에 업로드합니다. 파일을 업로드하면 객체 및 메타데이터에 권한을 설정할 수 있습니다. 자세한 내용은 S3 설명서를 참조하십시오. 엣지 디바이스를 사용하는 경우 데이터 마이그레이션 프로세스의 단계는 다음과 같습니다. 1. AWS Schema Conversion Tool(AWS SCT)를 사용하여 로컬에서 데이터를 추출하고 엣지 디바이스로 이 동합니다. 2. 엣지 디바이스 한 대 또는 여러 대를 다시 AWS로 배송합니다. 3. AWS에서 배송을 받은 후 엣지 디바이스는 데이터를 자동으로 Amazon S3 버킷으로 로드합니다. 4. AWS DMS는 파일을 가져오고 데이터를 대상 데이터 스토어에 마이그레이션합니다. 변경 데이터 캡처 (CDC)를 사용하는 경우 이러한 업데이트는 Amazon S3 버킷에 기록되고 대상 데이터 스토어에 적용됩니 다. 이어지는 이 단원에서는 AWS SCT 및 AWS DMS를 통해 엣지 디바이스를 사용하여 관계형 데이터베이스 를 마이그레이션하는 방법을 배울 수 있습니다. 또한 엣지 디바이스 및 AWS SCT를 사용하여 온프레미스 데 이터 웨어하우스를 AWS 클라우드로 마이그레이션할 수 있습니다. 데이터 웨어하우스 마이그레이션에 대한 자세한 내용은 AWS Schema Conversion Tool 사용 설명서의 온프레미스 데이터 웨어하우스에서 Amazon Redshift로 데이터 마이그레이션을 참조하십시오. 주제 DMS 및 Snowball 엣지를 사용한 대규모 데이터 스토어 마이그레이션의 개요 (p. 315) DMS 및 Snowball 엣지를 사용한 대규모 데이터 스토어 마이그레이션의 사전 조건 (p. 316) 마이그레이션 체크리스트 (p. 316) Snowball 엣지와 AWS DMS를 사용한 단계별 데이터 마이그레이션 절차 (p. 318) Snowball 엣지 및 AWS DMS 작업 시 제한 사항 (p. 333) 314
프로세스 개요 DMS 및 Snowball 엣지를 사용한 대규모 데이터 스 토어 마이그레이션의 개요 AWS DMS 및 AWS Snowball 엣지를 사용하는 프로세스는 온프레미스 애플리케이션과 Amazon 관리형 서 비스를 통합합니다. 로컬과 원격이라는 용어를 사용하여 이러한 구성 요소를 구분합니다. 로컬 구성 요소에 포함되는 사항들은 다음과 같습니다. AWS SCT AWS DMS 에이전트(온프레미스에서 작동하는 AWS DMS의 로컬 버전) Snowball 엣지 디바이스 원격 구성 요소에 포함되는 사항들은 다음과 같습니다. Amazon S3 AWS DMS 다음 단원에서는 엣지 디바이스 한 대 또는 여러 대를 사용하여 AWS DMS 마이그레이션을 구성, 설치 및 관 리하기 위한 단계별 안내를 확인할 수 있습니다. 다음 다이어그램은 마이그레이션 프로세스의 개요를 보여줍니다. 마이그레이션에는 DMS 에이전트를 사용하여 데이터를 엣지 디바이스로 이동하는 로컬 작업이 수반됩니다. 엣지 디바이스를 로드한 후 AWS에 반환합니다. 여러 엣지 디바이스가 있을 경우 동시에 또는 순차적으로 반 환할 수 있습니다. AWS에서 엣지 디바이스를 수령할 때 AWS DMS를 사용하는 원격 작업은 데이터를 AWS 의 대상 데이터 스토어로 로드합니다. 로컬 데이터 스토어에서 AWS 데이터 스토어로 마이그레이션하려면 다음 단계를 수행합니다. 1. AWS Snowball Management Console을 사용하여 Snowball Edge Storage Optimized(Snowball Edge 스 토리지 최적화) 디바이스로 데이터를 S3으로 가져오기 위한 새로운 작업을 생성합니다. 작업에는 디바이 스를 해당 주소로 보내도록 요청하는 것이 포함됩니다. 2. AWS에 액세스할 수 있는 로컬 시스템에 AWS SCT를 설정합니다. 다른 로컬 시스템에 Snowball Edge 클 라이언트 도구를 설치합니다. 3. 엣지 디바이스가 도착하면 전원을 켜고 연결한 다음에 클라이언트 도구를 사용하여 잠금을 해제합니다. 단계별 정보에 대한 자세한 내용은 AWS Snowball Edge 개발자 안내서의 AWS Snowball Edge 시작하 기를 참조하십시오. 4. 데이터 소스용 Open Database Connectivity(ODBC) 드라이버를 설치합니다. 엣지 클라이언트 도구를 사 용하여 시스템에 이를 설치합니다. 315
사전 조건 5. 엣지 클라이언트 도구를 사용하여 시스템에 AWS DMS 에이전트를 설치 및 구성합니다. DMS 에이전트는 원본 데이터베이스, AWS SCT, AWS 및 Snowball 엣지에 연결되어 있어야 합니다. DMS 에이전트는 다음 Linux 플랫폼에서만 지원됩니다. Red Hat Enterprise Linux 버전 6.2 ~ 6.8, 7.0 및 7.1(64비트) SUSE Linux 버전 12(64비트) DMS 에이전트는 AWS SCT 설치 패키지로 제공되지만 같은 장소에 두지 않는 것이 좋습니다. AWS SCT 을 설치하지 않은 다른 시스템에 DMS 에이전트를 설치하는 것이 좋습니다. 6. AWS SCT에서 새 프로젝트를 생성합니다. 7. AWS SCT를 구성하여 Snowball 엣지 디바이스를 사용합니다. 8. AWS SCT에 DMS 에이전트를 등록합니다. 9. SCT에서 로컬 및 DMS 작업을 생성합니다. 10.SCT에서 작업을 실행하고 모니터링합니다. DMS 및 Snowball 엣지를 사용한 대규모 데이터 스 토어 마이그레이션의 사전 조건 마이그레이션 프로세스를 시작하기 전에 다음 사전 조건이 필요합니다. AWS SCT의 기본 작업을 숙지하고 있습니다. 마이그레이션에 사용하는 S3 버킷(하나 또는 여러 개)을 가지고 있거나 생성할 수 있습니다. S3 버킷과 동일한 리전에서 AWS DMS 복제 인스턴스를 가지고 있습니다. AWS Command Line Interface(AWS CLI)을 사용하는 데 익숙합니다. Snowball Edge 개발자 안내서를 숙지하고 있습니다. 마이그레이션 체크리스트 마이그레이션 중에 작업을 더 간편하게 하려면 다음 체크리스트를 사용하여 마이그레이션 중에 필요한 항목 의 목록을 작성할 수 있습니다. ---------------------------------------------------------------DMS Migration Checklist ---------------------------------------------------------------This checklist is for my schemas named: The database engine that my schemas reside on is: ---------------------------------------------------------------AWS Region for the migration: Name of migration job that you created in the AWS Snowball Management Console: S3 bucket (and folder) for this job: IAM role that has access to the S3 Bucket and the target database on AWS: ---------------------------------------------------------------Path to the installation directory of AWS SCT (needed for a future step): 316
마이그레이션 체크리스트 Name/IP of Machine #1 (SCT): Name/IP of Machine #2 (Connectivity): ---------------------------------------------------------------IP address of your Snowball Edge: Port for the Snowball Edge: Unlock code for the Snowball Edge device: Path to the manifest file: Output of the command snowballedge get-secret-access-key: AWS access key ID: AWS secret access Key: ---------------------------------------------------------------Confirm ODBC drivers is installed on Machine #2 (Connectivity): ---------------------------------------------------------------Confirm DMS Agent is installed on Machine #2 (Connectivity): Confirm DMS Agent is running two processes: DMS Agent password: DMS Agent port number: Confirm that your firewall allows connectivity: ---------------------------------------------------------------Name of SCT project: ---------------------------------------------------------------Confirm that DMS Agent is registered with SCT: New agent or service profile name that you provided: ---------------------------------------------------------------Confirm local and DMS task exists: Task name that you provided: ---------------------------------------------------------------Confirm: DMS Agent The The The connects to the following: source database staging S3 bucket Edge device DMS task connects to the following: The staging S3 bucket The target database on AWS ---------------------------------------------------------------- 317
단계별 절차 Confirm the following: Stopped Edge client Powered off Edge device Returned Edge device to AWS Snowball 엣지와 AWS DMS를 사용한 단계별 데이 터 마이그레이션 절차 다음 단원에는 마이그레이션 단계에 대한 자세한 정보가 나와 있습니다. 1단계: Snowball 엣지 작업 생성 AWS Snowball Edge 개발자 안내서의 Snowball 엣지 디바이스 시작하기 단원에 설명된 단계를 따릅니다. AWS Snowball Management Console을 열고 Amazon S3으로 가져오기에 대한 새 작업을 만듭니다. Snowball 엣지 디바이스(Snowball Edge 스토리지 최적화)를 요청해야 합니다. 일반적인 Snowball 디바이스 는 AWS DMS를 지원하지 않기 때문입니다. 남은 설정에 대해서는 화면 프롬프트에 따릅니다. 작업을 생성 하기 전에 설정을 검토할 기회가 있습니다. 2단계: AWS Schema Conversion Tool(AWS SCT) 다 운로드 및 설치 이 프로세스를 실행하려면 엣지 디바이스 외에 로컬 시스템 2대가 필요합니다. AWS Schema Conversion Tool 앱을 다운로드하고 AWS에 액세스할 수 있는 로컬 시스템에 설치합니다. 호 환 운영 체제에 대한 정보가 포함된 지침은 AWS Schema Conversion Tool 설치 및 업데이트를 참조하십시 오. DMS 에이전트를 설치하려는 다른 시스템에, AWS Snowball Edge 리소스에서 Snowball 엣지 클라이언트를 다운로드하여 설치합니다. 이 단계를 마친 후에는 다음과 같이 두 시스템을 갖추어야 합니다. 시스템 #1(SCT), AWS SCT 설치됨 시스템 #2(연결), DMS 에이전트와 마이그레이션하는 데이터베이스에 대한 ODBC 드라이버를 설치하려 는 엣지 클라이언트 포함 3단계: Snowball 엣지 디바이스 잠금 해제 엣지 디바이스가 도착하면 사용 가능한 상태로 준비합니다. AWS Snowball Edge 개발자 안내서의 AWS Snowball Edge 디바이스 시작하기 단원에 설명된 단계를 따릅 니다. 또한 AWS Support에서 AWS Snowball Edge를 잠금 해제하려면 어떻게 해야 합니까?라는 가이드 투어를 확 인할 수 있습니다. 더 많은 리소스는 AWS Snowball Edge 시작하기 마케팅 페이지를 참조하십시오. 디바이스 전원을 켜고, 로컬 네트워크에 연결하고, 엣지 디바이스의 IP 주소를 기록하고, Snowball 엣지 콘솔 에서 잠금 해제 및 매니페스트 파일을 가져옵니다. 콘솔에서 작업을 선택하고, 작업 세부 정보 보기를 선택한 다음 자격 증명을 선택합니다. 클라이언트 잠금 해제 코드와 매니페스트 파일을 모두 저장합니다. 318
3단계: Snowball 엣지 디바이스 잠금 해제 엣지 디바이스 화면에서 연결 탭으로부터 엣지 디바이스의 IP를 가져옵니다. 그런 다음 snowballedge unlock 명령과 IP 및 자격 증명 정보를 사용하여 디바이스를 잠금 해제합니다. 다음 예제는 이 명령의 샘플 구문을 나타낸 것입니다. snowballedge unlock -i IP_Address -m Local_path_to_manifest_file u 29_character_unlock_code 다음은 예시 명령입니다. snowballedge unlock \ -i 192.0.2.0 \ -m /Downloads/JID2EXAMPLE-0c40-49a7-9f53-916aEXAMPLE81-manifest.bin \ -u 12345-abcde-12345-ABCDE-12345 마지막으로 엣지 클라이언트를 사용하여 디바이스에서 Snowball 엣지 액세스 키 및 보안 키를 검색합니다. 다음은 액세스 키를 가져오기 위한 명령의 입력 및 출력의 예시입니다. 입력 예 snowballedge list-access-keys \ --endpoint https://192.0.2.0 \ --manifest-file Path_to_manifest_file \ 319
4단계: ODBC 드라이버로 DMS 에이전트 호스트 구성 --unlock-code 12345-abcde-12345-ABCDE-12345 출력 예 "AccessKeyIds" : [ "AKIAIOSFODNN7EXAMPLE" ] 다음은 보안 키를 가져오기 위한 명령의 입력 및 출력의 예시입니다. 입력 예 snowballedge get-secret-access-key \ --access-key-id AKIAIOSFODNN7EXAMPLE \ --endpoint https://192.0.2.0 \ --manifest-file /Downloads/JID2EXAMPLE-0c40-49a7-9f53-916aEXAMPLE81-manifest.bin \ --unlock-code 12345-abcde-12345-ABCDE-12345 출력 예 [snowballedge] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wjalrxutnfemi/k7mdeng/bpxrficyexamplekey Snowball 엣지를 사용할 준비가 되면 AWS CLI 또는 S3 SDK Adapter for Snowball을 사용하여 직접 상호 작 용할 수 있습니다. 이 어댑터는 엣지 디바이스에서도 작동합니다. 4단계: ODBC 드라이버로 DMS 에이전트 호스트 구성 엣지 클라이언트가 이미 설치된 2단계에서 시스템 #2(연결)를 사용하여 필요한 ODBC 드라이버를 설치합니 다. 이러한 드라이버는 원본 데이터베이스에 연결하는 데 필요합니다. 필요한 드라이버는 데이터베이스 엔진 마다 다릅니다. 다음 단원에는 각 데이터베이스 엔진에 대한 정보가 나와 있습니다. 주제 Oracle (p. 320) Microsoft SQL Server (p. 321) ASE SAP Sybase (p. 321) MySQL (p. 321) PostgreSQL (p. 321) Oracle Linux(x86-64) 버전 11.2.0.3.0 이상용 Oracle Instant Client를 설치합니다. 또한 시스템에 아직 포함되지 않은 경우 $ORACLE_HOME\lib directory에 심볼 링크를 생성해야 합니 다. 이 링크는 libclntsh.so여야 하며 이 파일의 특정 버전을 가리켜야 합니다. 예를 들어 Oracle 12c 클라 이언트에서 다음을 사용합니다. lrwxrwxrwx 1 oracle oracle 63 Oct 2 14:16 libclntsh.so ->/u01/app/oracle/home/lib/ libclntsh.so.12.1 또한 LD_LIBRARY_PATH 환경 변수는 Oracle 라이브러리 디렉터리가 추가되어야 하고 설치의 lib 폴더 아래 에 site_arep_login.sh 스크립트에 추가해야 합니다. 이 스크립트를 추가합니다(없는 경우). 320
4단계: ODBC 드라이버로 DMS 에이전트 호스트 구성 vi /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/site_arep_login.sh export ORACLE_HOME=/usr/lib/oracle/12.2/client64; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib Microsoft SQL Server Microsoft ODBC 드라이버를 설치합니다. 다음 코드로 site_arep_login.sh 스크립트를 업데이트합니다. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/microsoft/msodbcsql/lib64/ ASE SAP Sybase SAP Sybase ASE ODBC 64비트 클라이언트를 설치해야 합니다. 설치 디렉터리가 /opt/sap인 경우 다음으로 site_arep_login.sh 스크립트를 업데이트합니다. export SYBASE_HOME=/opt/sap export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SYBASE_HOME/DataAccess64/ODBC/lib:$SYBASE_HOME/ DataAccess/ODBC/lib:$SYBASE_HOME/OCS-16_0/lib:$SYBASE_HOME/OCS-16_0/lib3p64:$SYBASE_HOME/ OCS-16_0/lib3p /etc/odbcinst.ini 파일에 다음 항목이 포함되어야 합니다. [Sybase] Driver=/opt/sap/DataAccess64/ODBC/lib/libsybdrvodb.so Description=Sybase ODBC driver MySQL Linux용 MySQL Connector/ODBC 버전 5.2.6 이상을 설치합니다. 다음 예에서처럼 /etc/odbcinst.ini 파일에 MySQL 관련 항목이 포함되어 있는지 확인합니다. [MySQL ODBC 5.2.6 Unicode Driver] Driver = /usr/lib64/libmyodbc5w.so UsageCount = 1 PostgreSQL postgresql94-9.4.4-1pgdg.<os Version>.x86_64.rpm를 설치합니다. 이 패키지는 psql 실행 파일 을 포함합니다. 예를 들어 postgresql94-9.4.4-1pgdg.rhel7.x86_64.rpm은 Red Hat 7에 필요한 패 키지입니다. Linux의 경우 ODBC 드라이버 postgresql94-odbc-09.03.0400-1pgdg.<os version>.x86_64 이상을 설치합니다. 이 경우 <OS version>은 에이전트 시스템의 OS입니다. 예를 들어 postgresql94odbc-09.03.0400-1pgdg.rhel7.x86_64은 Red Hat 7에 필요한 클라이언트입니다. 다음 예에서처럼 /etc/odbcinst.ini 파일에 PostgreSQL 관련 항목이 포함되어 있는지 확인합니다. 321
5단계: DMS 에이전트 설치 [PostgreSQL] Description = PostgreSQL ODBC driver Driver = /usr/pgsql-9.4/lib/psqlodbc.so Setup = /usr/pgsql-9.4/lib/psqlodbcw.so Debug = 0 CommLog = 1 UsageCount = 2 5단계: DMS 에이전트 설치 엣지 클라이언트 및 ODBC 드라이버가 이미 설치된 2단계에서 시스템 #2(연결)를 사용하여 DMS 에이전트 를 설치 및 구성합니다. DMS 에이전트는 AWS Schema Conversion Tool 사용 설명서에 설명된 AWS SCT 설치 패키지의 일부로 제공됩니다. 이 단계를 마친 후에는 다음과 같이 두 로컬 시스템을 준비하여 갖추어야 합니다. 시스템 #1(SCT), AWS SCT 설치됨 시스템 #2(연결), 엣지 클라이언트, ODBC 드라이버 및 DMS 에이전트 설치됨 DMS 에이전트를 설치하려면 1. AWS SCT 설치 디렉터리에서 aws-schema-conversion-tool-dms-agent-2.4.1r1.x86_64.rpm라고 하는 RPM 파일을 찾습니다. 이 파일을 DMS 에이전트 시스템인 시스템 #2(연결)에 복사합니다. SCT와 DMS 에이전트를 별도 시스 템에 설치해야 합니다. DMS 에이전트는 엣지 클라이언트와 ODBC 드라이버와 동일한 시스템에 위치해 야 합니다. 2. 시스템 #2(연결)에서 다음 명령을 실행하여 DMS 에이전트를 설치합니다. 권한을 간소화하려면 이 명령 을 root 사용자로 실행합니다. sudo rpm -i aws-schema-conversion-tool-dms-agent-2.4.0-r2.x86_64.rpm 이 명령은 /opt/amazon/aws-schema-conversion-tool-dms-agent의 기본 설치 위치를 사용합 니다. DMS 에이전트를 다른 위치에 설치하려면 다음 옵션을 사용합니다. sudo rpm --prefix <installation_directory> -i aws-schema-conversion-tool-dmsagent-2.4.0-r2.x86_64.rpm 3. DMS 에이전트가 실행 중인지 확인하려면 다음 명령을 사용합니다. ps -ef grep repctl 이 명령의 출력에 실행 중인 두 프로세스가 표시되어야 합니다. DMS 에이전트를 구성하려면 암호와 포트 번호를 지정해야 합니다. 나중에 암호를 사용하여 DMS 에이 전트를 AWS SCT에 등록해야 하므로 암호를 쉽게 찾아볼 수 있게 보관하십시오. AWS SCT 연결을 수 신 대기할 DMS 에이전트의 미사용 포트 번호를 선택합니다. 연결을 허용하도록 방화벽을 구성해야 합 니다. 이제 configure.sh 스크립트를 사용하여 DMS 에이전트를 구성합니다. sudo /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/configure.sh 다음 프롬프트가 나타납니다. 암호를 입력합니다. 메시지가 표시되면 암호를 다시 입력하여 확인합니다. 322
5단계: DMS 에이전트 설치 Configure the AWS Schema Conversion Tool DMS Agent server Note: you will use these parameters when configuring agent in AWS Schema Conversion Tool Please provide password for the server Use minimum 8 and up to 20 alphanumeric characters with at least one digit and one capital case character Password: 출력값은 다음과 같습니다. 포트 번호를 입력합니다. chown: missing operand after 'amazon:amazon' Try 'chown --help' for more information. /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libgssapi_krb5.so.2) /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libkrb5.so.3) [setserverpassword command] Succeeded Please provide port number the server will listen on (default is 3554) Note: you will have to configure your firewall rules accordingly Port: 다음과 같이 출력이 표시되어 서비스 시작을 확인합니다. Starting service... /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libgssapi_krb5.so.2) /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libkrb5.so.3) AWS Schema Conversion Tool DMS Agent was sent a stop signal AWS Schema Conversion Tool DMS Agent is no longer running [service command] Succeeded /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libgssapi_krb5.so.2) /opt/amazon/aws-schema-conversion-tool-dms-agent/bin/repctl: /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libcom_err.so.3: no version information available (required by /opt/amazon/aws-schema-conversion-tool-dms-agent/lib/libkrb5.so.3) AWS Schema Conversion Tool DMS Agent was started as PID 1608 AWS Command Line Interface(AWS CLI)를 설치하는 것이 좋습니다. 디바이스에 작성된 데이터 파일을 보 려면 AWS CLI를 사용하여 Snowball 엣지에서 정보를 얻을 수 있습니다. 엣지에서 검색한 AWS 자격 증명을 사용하여 엣지 디바이스에 액세스합니다. 예를 들어 다음과 같은 명령을 실행할 수 있습니다. aws s3 ls --profile SnowballEdge --endpoint https://192.0.2.0 :8080 bucket-name --recursive 이 명령으로 다음 출력이 생성됩니다. 323
6단계: 새 AWS SCT 프로젝트 생성 2018-08-20 10:55:31 53074692 streams/load00000001000573e166acf4c0/00000001.fcd.gz 2018-08-20 11:14:37 53059667 streams/load00000001000573e166acf4c0/00000002.fcd.gz 2018-08-20 11:31:42 53079181 streams/load00000001000573e166acf4c0/00000003.fcd.gz DMS 에이전트를 정지하려면 /opt/amazon/aws-schema-conversion-tool-dms-agent/bin 디렉터 리에서 다음 명령을 실행합니다../aws-schema-conversion-tool-dms-agent stop DMS 에이전트를 시작하려면 /opt/amazon/aws-schema-conversion-tool-dms-agent/bin 디렉터 리에서 다음 명령을 실행합니다../aws-schema-conversion-tool-dms-agent start 6단계: 새 AWS SCT 프로젝트 생성 다음에는 원본 및 대상 데이터베이스를 지정하는 새 AWS SCT 프로젝트를 생성합니다. 자세한 내용은 AWS Schema Conversion Tool 사용 설명서의 AWS Schema Conversion Tool 프로젝트 생성을 참조하십시오. AWS SCT에서 새 프로젝트를 생성하려면 1. AWS SCT를 시작하고 파일을 선택한 다음 새 프로젝트를 선택합니다. 새 프로젝트 대화 상자가 나타납 니다. 2. 다음 프로젝트 정보를 추가합니다. 이 파라미터의 경우... 수행할 작업 [프로젝트 이름] 컴퓨터에서 로컬로 저장되는 프로젝트의 이름을 입력합니 다. 위치 로컬 프로젝트 파일의 위치를 입력합니다. OLTP Transactional Database (OLTP)를 선택합니다. Source DB Engine(소스 DB 엔진) 원본 데이터 스토어를 선택합니다. Target DB Engine(대상 DB 엔진) 대상 데이터 스토어를 선택합니다. 3. OK를 선택하여 AWS SCT 프로젝트를 생성합니다. 4. 원본 및 대상 데이터베이스에 연결합니다. 7단계: AWS SCT를 구성하여 Snowball 엣지 디바이스 사용 온프레미스에서 작동하는 로컬 AWS DMS인 DMS 에이전트를 사용하려면 AWS SCT 서비스 프로필을 업데 이트해야 합니다. DMS 에이전트와 작동하도록 AWS SCT 프로필을 업데이트하려면 1. Start AWS SCT. 2. 설정, 글로벌 설정, AWS 서비스 프로필을 차례로 선택합니다. 3. AWS 서비스 프로필 새로 추가를 선택합니다. 324
7단계: AWS SCT를 구성하여 Snowball 엣지 디바이스 사용 4. 5. 다음 프로필 정보를 추가합니다. 이 파라미터의 경우... 수행할 작업 프로파일 이름 컴퓨터에서 로컬로 저장되는 프로젝트의 이름을 입력합니 다. AWS 액세스 키 마이그레이션에 사용하려는 AWS 계정 및 AWS 리전의 AWS 액세스 키를 입력합니다. 제공된 자격 증명에는 AWS 에서의 Snowball 엣지 작업에 대한 액세스 권한이 있어야 합 니다. AWS 보안 키 마이그레이션에 사용하려는 AWS 계정 및 AWS 리전의 AWS 보안 키를 입력합니다. 리전 사용 중인 계정의 AWS 리전을 선택합니다. DMS 복제 인스 턴스, S3 버킷 및 대상 데이터 스토어가 이 AWS 리전에 있 어야 합니다. S3 버킷 폴더 Snowball 엣지 작업을 생성할 때 할당된 S3 버킷의 이름을 입력합니다. 정보를 입력한 후에는 연결 테스트를 선택하여 AWS SCT에서 Amazon S3 버킷에 연결할 수 있는지 확 인합니다. 팝업 창의 OLTP Local & DMS Data Migration 섹션에는 상태가 Pass인 항목이 모두 표시됩니다. 테스트 가 실패하는 경우 아마도 Amazon S3 버킷에 액세스할 수 있는 권한이 사용 중인 계정에서 누락되었기 때문일 것입니다. 6. 테스트를 통과한 경우 OK를 선택한 다음 OK를 다시 선택하여 창과 대화 상자를 닫습니다. 7. 가져오기 작업을 선택하고 목록에서 Snowball 엣지 작업을 선택한 후 OK를 선택합니다. 325
7단계: AWS SCT를 구성하여 Snowball 엣지 디바이스 사용 이제 AWS SCT를 구성하여 Snowball 엣지를 사용합니다. Snowball 엣지의 IP 주소, 디바이스의 수신 포트 (기본값 8080), 이전에 검색한 Snowball 엣지 액세스 키 및 보안 키를 입력합니다. OK를 선택하여 변경 사항 을 저장합니다. 326
8단계: AWS SCT에서 DMS 에이전트 등록 8단계: AWS SCT에서 DMS 에이전트 등록 다음에는 AWS SCT에서 DMS 에이전트를 등록합니다. 그러고 나면 SCT는 에이전트에 연결하려고 시도하 며 상태를 표시합니다. 에이전트를 사용할 수 있으면 상태가 활성으로 전환됩니다. DMS 에이전트를 등록하려면 1. AWS SCT를 시작하고 보기를 선택한 다음 데이터베이스 마이그레이션 보기(로컬 및 DMS)를 선택합니 다. 2. 에이전트 탭을 선택한 다음 등록을 선택합니다. 새 에이전트 등록 대화 상자가 나타납니다. 327
9단계: 로컬 및 DMS 작업 생성 3. 4. 새 에이전트 등록 대화 상자에 정보를 입력합니다. 이 파라미터의 경우... 수행할 작업 설명 에이전트의 이름을 입력합니다. Host Name DMS 에이전트를 설치한 시스템의 IP 주소를 입력합니다. 포트 DMS 에이전트를 구성할 때 사용한 포트 번호를 입력합니 다. 암호 DMS 에이전트를 구성할 때 사용한 암호를 입력합니다. 등록을 선택하여 AWS SCT 프로젝트에 에이전트를 등록합니다. 9단계: 로컬 및 DMS 작업 생성 다음에는 엔드 투 엔드 마이그레이션 작업을 생성해 보겠습니다. 이 작업에는 하위 작업 두 개가 포함됩니다. 로컬 하위 작업 이 작업은 원본 데이터베이스에서 Snowball 엣지 어플라이언스로 데이터를 마이그레이 션합니다. DMS 하위 작업 이 작업은 데이터를 어플라이언스에서 Amazon S3 버킷으로 옮기고 대상 데이터베이스 로 마이그레이션합니다. Note Snowball 엣지 디바이스를 사용하기 전에 마이그레이션을 테스트하는 것이 좋습니다. 단일 테이블 같은 데이터를 Snowball 엣지 디바이스 대신에 Amazon S3 버킷으로 전송하는 작업을 설정하여 이 와 같이 할 수 있습니다. 엔드 투 엔드 마이그레이션 작업을 생성하려면 1. AWS SCT를 시작하고 보기를 선택한 다음 데이터베이스 마이그레이션 보기(로컬 및 DMS)를 선택합니 다. 328
9단계: 로컬 및 DMS 작업 생성 2. 원본 데이터베이스의 스키마를 표시하는 왼쪽 패널에서 마이그레이션할 스키마를 선택합니다. 스키마 의 컨텍스트(마우스 오른쪽 버튼 클릭)를 연 다음 로컬 및 DMS 작업 생성을 선택합니다. AWS DMS 및 Snowball 엣지를 사용하여 개별 테이블을 마이그레이션할 수 없습니다. 다음 화면이 나타납니다. 329
9단계: 로컬 및 DMS 작업 생성 3. 작업 정보를 추가합니다. 이 파라미터의 경우... 수행할 작업 Task Name 작업의 이름을 입력합니다. 에이전트 DMS 에이전트를 선택합니다. 복제 인스턴스 사용할 AWS DMS 복제 인스턴스를 선택합니다. Migration Type 원하는 마이그레이션 유형을 선택합니다. 선택한 스키마의 내용을 마이그레이션하려면 기존 데이터 마이그레이션을 선택합니다. 이 프로세스를 AWS DMS에서 는 전체 로드라고 합니다. 선택한 스키마의 내용을 마이그레이션하고 지속적인 변경 내용을 데이터베이스로 모두 캡처하려면 기존 데이터 마이 그레이션 및 지속적인 변경 사항 복제를 선택합니다. 이 프 로세스를 AWS DMS에서는 전체 로드 및 CDC라고 합니다. 대상 테이블 준비 모드 사용할 준비 모드를 선택합니다. 330
10단계: SCT에서 작업 실행 및 모니터링 이 파라미터의 경우... 수행할 작업 자르기 테이블 메타데이터에 영향을 주지 않고 테이블이 잘립니다. 대상에서 테이블 삭제 테이블이 삭제되고 그 자리에 새 테 이블이 생성됩니다. 아무 작업 안 함 대상 테이블의 데이터와 메타데이터가 변 경되지 않습니다. IAM 역할 Amazon S3 버킷과 대상 데이터베이스에 액세스할 수 있는 권한을 가진, 미리 정의된 IAM 역할을 선택합니다. Amazon S3 버킷을 액세스하는 데 필요한 권한에 대한 자세한 내용 은 S3를 AWS DMS에서 소스로 사용 시 사전 조건을 참조하 십시오. 압축 형식 업로드한 파일의 압축 여부를 선택합니다. GZIP 파일은 로드하기 전에 압축됩니다. 이 값이 기본값 입니다. 압축 없음 추출이 더 빠르지만 더 많은 공간을 차지합니다. 4. 로깅 Amazon CloudWatch에서 마이그레이션 로그를 생성하 도록 활성화를 선택합니다. 이 서비스에는 비용이 부과됩 니다. CloudWatch에 대한 자세한 내용은 How Amazon CloudWatch Works 단원을 참조하십시오. 설명 작업에 대한 설명을 입력합니다. S3 Bucket 이 Snowball 엣지 작업에 대해 구성된 S3 버킷의 이름을 Snowball 엣지 콘솔에 입력합니다. Snowball 엣지 사용 Snowball 엣지를 사용하려면 이 확인란을 선택합니다. 이 확 인란을 체크하지 않을 경우 데이터는 S3 버킷으로 바로 업 로드됩니다. Job Name 생성된 Snowball 엣지 작업 이름을 선택합니다. Snowball 엣지 IP Snowball 엣지 어플라이언스의 IP 주소를 입력합니다. 포트 Snowball 엣지 어플라이언스의 포트 값을 입력합니다. 로컬 Amazon S3 액세스 키 디바이스에서 검색한 로컬 Snowball 엣지 액세스 키를 입력 합니다. 로컬 Amazon S3 보안 키 디바이스에서 검색한 로컬 Snowball 엣지 보안 키를 입력합 니다. 생성을 선택하여 작업을 생성합니다. 10단계: SCT에서 작업 실행 및 모니터링 다음을 포함하여 모든 엔드포인트와 성공적으로 연결되면 마이그레이션 작업을 시작할 수 있습니다. 다음은 DMS 에이전트 연결과 함께 사용합니다. 원본 데이터베이스 331
10단계: SCT에서 작업 실행 및 모니터링 스테이징 Amazon S3 버킷 엣지 디바이스 다음은 DMS 작업 연결과 함께 사용합니다. 스테이징 Amazon S3 버킷 AWS에서의 대상 데이터베이스 모든 연결이 올바르게 작동할 경우 SCT 콘솔은 다음 스크린샷과 비슷하며 시작할 준비가 된 것입니다. 다음 절차에 따라 마이그레이션을 시작합니다. 마이그레이션 작업을 시작하려면 1. 마이그레이션 작업을 선택한 다음 시작을 선택합니다. 332
제한 2. DMS 에이전트를 모니터링하려면 Show Log(로그 표시)를 선택합니다. 로그 세부 정보에는 에이전트 서 버(에이전트 로그)와 로컬 실행 작업(작업 로그) 로그가 포함됩니다. 엔드포인트 연결은 서버에서 수행 합니다. 로컬 작업이 실행되고 있지 않으므로 작업 로그는 없습니다. 연결 문제는 에이전트 로그 탭 아래 에 나열됩니다. 3. 마이그레이션 작업 상태가 50%인지 확인합니다. Snowball 엣지 콘솔 또는 AWS SCT를 사용하여 디바 이스의 상태를 확인할 수 있습니다. 4. 원본 테이블이 Snowball 엣지 어플라이언스에 로드된 후, AWS SCT는 작업의 상태를 업데이트하여 50% 완료를 표시합니다. 이는 작업의 나머지 절반에 Amazon S3에서 대상 데이터 스토어로 데이터를 가져오는 AWS DMS가 포함되기 때문입니다. Snowball 클라이언트 중지 및 Snowball Edge 끄기라는 단원으로 시작하는 Snowball 엣지 설명서에 설 명된 단계를 따릅니다. 이 단계에는 다음 사항이 포함됩니다. Snowball Edge 클라이언트 중지 엣지 디바이스 끄기 엣지 디바이스를 AWS에 반환 5. 디바이스를 AWS에 반환 후 마이그레이션 종료에는 원격 작업 완료의 대기가 포함됩니다. Snowball 엣지 어플라이언스가 AWS에 도착하면 원격 (DMS) 작업의 실행이 시작됩니다. 선택한 마이그 레이션 유형은 기존 데이터 마이그레이션였으며, 데이터가 Amazon S3에서 대상 데이터 스토어로 전송 된 후에는 DMS 작업의 상태에 100% 완료가 표시됩니다. 지속적인 복제를 포함하도록 작업 모드를 설정하는 경우 전체 로드가 완료된 후에는 작업이 계속 실행되 는 동시에, AWS DMS에서 지속적인 변경 사항을 적용합니다. Snowball 엣지 및 AWS DMS 작업 시 제한 사항 AWS Snowball 엣지를 사용한 작업 시 몇 가지 제한 사항에 유의해야 합니다. 모든 AWS SCT 작업은 AWS DMS에서 두 가지 엔드포인트 연결을 생성합니다. 여러 작업을 생성하는 경 우 생성할 수 있는 엔드포인트 수에 대한 리소스 제한에 도달할 수 있습니다. 333