객체를 마이그레이션하지 않는 AWS DMS 문제를 해결하려면 어떻게 해야 합니까?
AWS Database Migration Service(AWS DMS) 작업이 모든 데이터베이스 스키마 객체를 마이그레이션하지 않는 문제를 해결하려고 합니다.
간략한 설명
AWS DMS 작업이 객체를 마이그레이션하지 않는다면, 해당 AWS DMS 작업이 그 유형의 객체를 마이그레이션하지 않는 것일 수 있습니다. 예를 들어 AWS DMS는 보조 인덱스, 데이터 기본값, 비프라이머리 키 제약 조건을 만들지 않습니다.
AWS DMS가 마이그레이션하지 않은 나머지 객체를 마이그레이션하려면 동종 및 이기종 마이그레이션을 사용하십시오.
엔진 유형이 같은 두 데이터베이스 간에 마이그레이션하는 경우, 동종 마이그레이션을 사용합니다. 엔진의 기본 도구를 사용해 데이터 없이 스키마를 내보내고 가져옵니다.
서로 다른 엔진 유형을 사용하는 두 데이터베이스 간에 마이그레이션하는 경우, 이기종 마이그레이션을 사용합니다. AWS Schema Conversion Tool(AWS SCT) 또는 AWS DMS Schema Conversion을 사용하여 전체 대상 스키마를 생성합니다.
해결 방법
AWS DMS 작업이 객체를 마이그레이션하는지 확인
AWS DMS 작업은 대상에 테이블을 만들 때 프라이머리 키 제약 조건과 인덱스도 마이그레이션합니다. 프라이머리 키가 존재하지 않는 경우, 작업은 소스 테이블에 고유한 키가 있으면 고유한 키를 만듭니다.
소스 테이블에 NOT NULL 제약 조건이 존재하는 경우, AWS DMS 작업은 대상에 NOT NULL 제약 조건을 만듭니다. 여기에는 대형 바이너리 객체(LOB) 열을 포함하지 않습니다. AWS DMS가 대상 테이블을 만드는 경우, 기본적으로 LOB 열을 nullable로 설정합니다. 자세한 내용은 LOB 마이그레이션을 참조하십시오.
소스 테이블에 자동 증분 열이 있는 경우, 작업은 자동 증분 속성을 마이그레이션하지 않습니다. AWS DMS 작업은 외래 키 제약 조건, 검사, 데이터 기본값 및 코멘트와 같은 기타 테이블별 속성을 복제하지 않습니다.
AWS DMS 작업은 보조 인덱스, 보기, 프로시저, 함수, 패키지 및 트리거와 같은 데이터베이스 객체를 마이그레이션하지 않습니다. 이러한 객체는 별도로 마이그레이션하십시오.
엔진의 기본 도구를 사용하여 객체 마이그레이션(동종 마이그레이션)
동종 데이터베이스 마이그레이션의 경우, 기본 도구를 사용하여 데이터 없이 스키마 메타데이터 내보내기를 가져옵니다. AWS DMS는 이 메타데이터만 있는 덤프를 대상 데이터베이스에 가져와 데이터 없이 데이터베이스 객체를 만듭니다. 그런 다음TargetTablePrepMode 작업 설정을 TRUNCATE_BEFORE_LOAD로 설정하여 AWS DMS 작업을 실행합니다. 이렇게 하면 작업이 대상의 테이블을 삭제하고 다시 만들지 않습니다.
Oracle
Oracle 데이터베이스를 사용하여 객체를 마이그레이션하려면 내보내기 데이터 펌프 유틸리티(expdp)를 사용하여 메타데이터만 있는 덤프를 가져옵니다. CONTENT=METADATA_ONLY 파라미터를 사용하면 데이터 덤프 유틸리티가 데이터베이스 객체 정의만 언로드합니다. 이 유틸리티는 테이블 행 데이터는 언로드하지 않습니다.
다음 단계를 완료하십시오.
-
메타데이터만 있는 덤프를 가져오려면 다음 예시와 비슷한 파라미터 파일을 만들어 스키마 내보내기:
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 -
expdp 유틸리티로 내보내기 실행:
expdp parfile=export_sample_user.par -
유틸리티가 소스 데이터베이스의 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참고: Oracle 인스턴스용 Amazon Relational Database Service(Amazon RDS)를 사용하여 디렉터리와 파일 작업을 하는 경우, Oracle DB 인스턴스의 기타 작업 수행을 참조하십시오.
SQL Server
SQL Server를 사용하는 객체를 마이그레이션하려면 다음 단계를 완료하십시오.
- SQL Server Management Studio(SSMS)를 사용해 소스 데이터베이스에 로그인합니다.
- 스크립트를 생성하고자 하는 대상 데이터베이스를 마우스 오른쪽 단추로 클릭하고 작업을 선택한 다음 스크립트 생성을 선택합니다.
- 특정 데이터베이스 객체 선택 아래에서 테이블, 보기 및 사용하고자 하는 기타 모든 객체를 선택하고 다음을 선택합니다.
- 고급 버튼을 선택한 다음, 스크립트하고자 하는 데이터의 유형을 선택합니다.
- 보조 인덱스의 SQL을 가져오고자 하는 경우, 스크립트 인덱스를 true로 설정합니다.
- 원하는 스크립트 저장 방법을 선택합니다. 예를 들어 디스크에 SQL 파일을 만들고, 해당 SQL을 새 쿼리 창에 복사하거나, 스크립트를 클립보드에 복사할 수 있습니다.
- 다음을 선택합니다.
- 한 번 더 다음을 선택하고, 마침을 선택합니다.
- 대상 데이터베이스에 객체를 만들려면 SSMS가 생성하는 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
대상 데이터베이스에 객체를 만들려면 앞선 명령을 실행한 이후 MySQL이 생성하는 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
대상 데이터베이스에 객체를 만들려면 앞선 명령을 실행한 이후 pg_dump가 생성하는 SQL 스크립트를 실행합니다.
AWS SCT 또는 DMS Schema Conversion을 사용하여 객체 마이그레이션(이기종 마이그레이션)
AWS SCT
기존 데이터베이스 스키마를 한 데이터베이스 엔진에서 다른 데이터베이스 엔진으로 변환해 마이그레이션하려면 AWS SCT를 사용하십시오. 아니면, AWS SCT를 사용하여 기존 온프레미스 데이터베이스 스키마를 같은 엔진을 실행하는 Amazon RDS DB 인스턴스로 복사합니다.
데이터베이스 스키마를 변환하려면 다음 단계를 완료하십시오.
DMS Schema Conversion
DMS Schema Conversion을 사용하여 객체를 마이그레이션하려면 DMS Schema Conversion 사용을 참조하십시오.
관련 정보
- 언어
- 한국어

관련 콘텐츠
질문됨 2년 전
AWS 공식업데이트됨 일 년 전