AWS DMS 태스크를 사용하여 마이그레이션할 수 있는 객체는 무엇입니까?

4분 분량
0

모든 데이터베이스 스키마 객체를 마이그레이션하지 않는 AWS Database Migration Service(AWS DMS) 태스크가 있습니다. AWS DMS 태스크는 어떤 객체를 마이그레이션하고 나머지 객체는 어떻게 마이그레이션해야 합니까?

간략한 설명

AWS DMS 태스크가 객체를 마이그레이션하지 않는 경우 AWS DMS 태스크가 이 유형의 객체를 마이그레이션하지 않기 때문일 수 있습니다. AWS DMS는 테이블 및 프라이머리 키와 같은 많은 객체를 생성하지만 소스에서 데이터를 마이그레이션하는 데 필요하지 않은 객체를 생성하지는 않습니다. AWS DMS에서 생성하지 않는 객체의 예로는 보조 인덱스, 데이터 기본값 및 비 프라이머리 키 제약 조건이 있습니다.

AWS DMS가 생성하는 객체에 대한 자세한 내용은 AWS 데이터베이스 마이그레이션 서비스의 마이그레이션 태스크 문제 해결을 참조하세요.

AWS DMS에서 마이그레이션하지 않는 나머지 객체를 마이그레이션하려면 다음 방법 중 하나를 사용합니다.

  • 동종 마이그레이션의 경우(동일한 엔진 유형의 두 데이터베이스 간) 엔진의 기본 도구를 사용해 스키마를 마이그레이션하여 데이터 없이 스키마 자체를 내보내고 가져옵니다.
  • 이기종 마이그레이션의 경우(서로 다른 엔진 유형을 사용하는 두 데이터베이스 간) AWS Schema Conversion Tool(AWS SCT)을 사용하여 전체 대상 스키마를 생성합니다.

해결 방법

AWS DMS 태스크에 의해 객체가 마이그레이션되었는지 확인

먼저 다음 지침을 사용하여 AWS DMS 태스크에 의해 객체가 마이그레이션되는지 확인합니다.

  • AWS DMS 태스크는 프라이머리 키 제약 조건 및 인덱스와 함께 대상에 테이블을 생성합니다.
  • 프라이머리 키가 없는 경우 태스크는 고유 키를 생성합니다(소스 테이블에 있는 경우).
  • 소스 테이블에 NOT NULL 제약 조건이 있는 경우 AWS DMS 태스크는 대상에 NOT NULL 제약 조건을 생성합니다. 여기에는 대형 객체(LOB) 열이 포함되지 않습니다. AWS DMS가 대상 테이블을 생성하는 경우 기본적으로 LOB 열을 null 가능으로 설정합니다. 자세한 내용은 대용량 이진 객체(LOB) 마이그레이션을 참조하세요.
  • 소스 테이블에 자동 증가 열이 있는 경우 자동 증가 속성은 마이그레이션되지 않습니다.
  • 외래 키 제약 조건, 검사, 데이터 기본값 및 주석과 같은 기타 테이블별 속성은 AWS DMS 태스크에 의해 복제되지 않습니다.
  • 보조 인덱스, 보기, 프로시저, 함수, 패키지 및 트리거와 같은 데이터베이스 객체는 AWS DMS 태스크에 의해 마이그레이션되지 않습니다. 이러한 객체는 개별적으로 마이그레이션합니다.

엔진의 기본 도구를 사용하여 객체 마이그레이션(동종 마이그레이션)

동종 데이터베이스 마이그레이션의 경우 기본 도구를 사용하여 데이터 없이 스키마 메타데이터를 내보냅니다. 그런 다음 이 메타데이터 전용 덤프를 대상 데이터베이스로 가져와 데이터 없이 데이터베이스 객체를 만듭니다. 그런 다음 TargetTablePrepMode 태스크 설정을 TRUNCATE_BEFORE_LOAD로 설정하여 AWS DMS 태스크를 실행합니다. 즉, 태스크가 대상의 테이블을 삭제했다가 다시 생성하지 않습니다.

Oracle

Oracle 데이터베이스를 사용하여 객체를 마이그레이션하려면 데이터 펌프 내보내기 유틸리티(expdp)를 사용하여 메타데이터 전용 덤프를 수행합니다. CONTENT=METADATA_ONLY 파라미터를 사용하면 데이터 펌프 유틸리티는 데이터베이스 객체 정의만 언로드합니다. 이 유틸리티는 테이블 행 데이터를 언로드하지 않습니다.

1.    메타데이터만 덤프하려면 스키마를 내보낼 파라미터 파일을 생성합니다.

$> cat export_sample_user.par 
userid=DMS_USER/password@SOURCE_DB
directory=DATA_PUMP_DIR
logfile=export_dms_sample_user_metadata.log
dumpfile=export_dms_sample_user_metadata_%U.dmp
schemas=DMS_SAMPLE
CONTENT=METADATA_ONLY
  1. expdp 유틸리티를 사용하여 내보내기를 실행합니다.
expdp parfile=export_sample_user.par

3.    소스 데이터베이스의 DATA_PUMP_DIR에서 덤프 파일을 생성한 후 대상 Oracle 데이터베이스의 DATA_PUMP_DIR에 복사합니다. 대상 Oracle 데이터베이스에 객체를 생성하려면 데이터 펌프 가져오기 유틸리티(impdp)를 실행하여 메타데이터를 가져옵니다.

impdp admin@TARGET_DB directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_user_metadata_%U.dmp

SQL Server

SQL Server를 사용하여 객체를 마이그레이션하려면 데이터베이스 스키마에 대한 SQL 스크립트를 생성합니다.

  1. SQL Server Management Studio(SSMS)를 사용하여 소스 데이터베이스에 로그인합니다.
  2. 스크립트를 생성할 데이터베이스를 마우스 오른쪽 단추로 클릭하고 [태스크(Tasks)]를 선택한 다음 [스크립트 생성(Generate Scripts)]을 선택합니다.
  3. [특정 데이터베이스 객체 선택(Select specific database objects)]에서 사용할 테이블, 보기 및 기타 객체를 선택한 후 [다음(Next)]을 선택합니다.
  4. [고급(Advanced)] 버튼을 선택한 다음 스크립팅할 데이터 유형을 선택합니다.
  5. 보조 인덱스에 대한 SQL을 가져오려면 [스크립트 인덱스(Script indexes)]를 true로 설정합니다. 스크립트 인덱스는 기본적으로 false로 설정됩니다.
  6. 스크립트를 저장할 방법을 선택합니다. 예를 들어 디스크에 SQL 파일을 생성하거나 SQL을 새 쿼리 창에 복사하거나 스크립트를 클립보드에 복사할 수 있습니다.
  7. [다음(Next)]을 선택합니다.
  8. 다시 [다음(Next)]을 선택한 후 [마침(Finish)]을 선택합니다.

대상 데이터베이스에 객체를 생성하려면 이 단계를 완료한 후 생성되는 SQL 스크립트를 실행합니다.

MySQL

MySQL을 사용하여 객체를 마이그레이션하려면 mysqldump 유틸리티를 사용하여 스키마 메타데이터만 포함하는 덤프 파일을 생성합니다. --no-data 옵션은 mysqldump에 테이블 데이터를 덤프하지 않도록 지시하므로 덤프 파일의 결과에는 테이블을 생성하는 명령문만 포함됩니다. 정의 전용 덤프의 경우 --routines--events 옵션을 추가하여 저장된 루틴 및 이벤트 정의도 포함합니다.

예:

mysqldump --no-data --routines --events -h SOURCE_DB_SERVER_NAME -u DMS_USER -p SOURCE_DB > path_to_dump_file.sql

대상 데이터베이스에 객체를 생성하려면 이전 명령을 실행한 후 생성된 SQL 스크립트를 실행합니다.

PostgreSQL

PostgreSQL 데이터베이스를 사용하여 객체를 마이그레이션하려면 pg_dump 유틸리티를 사용하여 스키마 메타데이터만 포함하는 덤프 파일을 생성합니다. -s 또는 --schema-only 옵션은 데이터가 아닌 객체 정의(스키마)를 덤프합니다.

예:

pg_dump --host SOURCE_DB_SERVER_NAME --port 5432 --username DMS_USER --schema-only --verbose SOURCE_DB > path_to_dump_file.sql

대상 데이터베이스에 객체를 생성하려면 이전 명령을 실행한 후 생성된 SQL 스크립트를 실행합니다.

AWS Schema Conversion Tool(AWS SCT)을 사용하여 객체 마이그레이션

AWS SCT를 사용하여 기존 데이터베이스 스키마를 한 데이터베이스 엔진에서 다른 데이터베이스 엔진으로 변환하고 마이그레이션합니다. 또는 AWS SCT를 사용하여 기존 온프레미스 데이터베이스 스키마를 동일한 엔진을 실행하는 Amazon Relational Database Service(RDS) DB 인스턴스로 복사합니다.

데이터베이스 스키마를 변환하려면 다음 단계를 수행합니다.

  1. AWS SCT에서 마이그레이션 규칙을 생성합니다.
  2. AWS SCT를 사용하여 스키마를 변환합니다.
  3. 변환된 스키마를 AWS SCT에 저장하고 적용합니다.

자세한 내용은 AWS SCT를 사용하여 데이터베이스 스키마 변환을 참조하세요.


관련 정보

AWS DMS의 상위 수준 보기

AWS 공식
AWS 공식업데이트됨 2년 전