본문 바로가기
AWS

DMS(Database Migration Service) 날짜 열 추가

by 타마마임팩트_쫀 2025. 1. 10.

DMS로 주기적으로 full load 되는 테이블에 날짜 열을 추가하여, 언제 load 되었는지 확인 하려고 합니다.

DMS는 기본적으로 소스 테이블 구조를 타겟에 복제합니다. 하지만 컬럼 추가 및 특정 값 설정과 같은 추가 작업은 Transformation Rule Mapping Rule을 사용해야 합니다.

 

1. DMS 테스크에 적용

AWS DMS 테스크를 생성하거나 기존 테스크를 수정할 때, 위의 Transformation Rule을 포함시켜야 합니다. 이 설정은 아래와 같이 적용됩니다.

1.1 CLI를 사용하는 경우

TableMappings JSON 파일에 Transformation Rule을 추가합니다

   {
      "rule-type": "transformation",
      "rule-id": "3864735",
      "rule-name": "3864735",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "%",
        "table-name": "%"
      },
      "rule-action": "add-column",
      "value": "dms_time",
      "old-value": null,
      "expression": "datetime ()",
      "data-type": {
        "type": "datetime"
      }
    }

 

1.2 콘솔에서 설정하는 경우

  1. DMS 콘솔에서 테스크를 생성하거나 수정합니다.
  2. Table Mapping 설정 단계로 이동합니다.
  3. Transformation Rule 섹션에서 위와 같이 'add-column' 작업을 선택하고, 'dms_time' 값을 추가하고 데이터형식을 'datetime'로 설정합니다.

 

2. 타겟 테이블 사전 준비

DMS는 Transformation Rule로 새 컬럼을 추가하지 않습니다. 따라서, 대상 테이블에 'dms_time' 컬럼을 미리 추가해야 합니다.

ALTER TABLE app.table1 ADD COLUMN dms_time TIMESTAMP ;

 

3. DMS 테스크 실행

테스크를 실행하면 'dms_time' 컬럼에 DMS 마이그레이션 실행 시점의 타임스탬프가 자동으로 추가됩니다.

 

4. 추가 고려 사항

  • CDC 작업 시: CDC(Change Data Capture)를 활성화한 경우, 삽입된 레코드만 영향을 받습니다. 기존 레코드의 'dms_time' 값은 수동으로 업데이트해야 할 수도 있습니다.
  • 대상 DB: 대상 DB가 MySQL, PostgreSQL, Oracle 등 지원 여부를 확인하세요. 데이터 형식이나 함수(CURRENT_TIMESTAMP)가 호환되지 않을 수 있습니다.

 

기타 변환 규칙은 공식 문서 참조하세요
https://docs.aws.amazon.com/ko_kr/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Expressions.html

 

변환 규칙 표현식을 사용하여 열 내용 정의 - AWS Database Migration Service

예를 들어, 다음 변환 규칙은 먼저 대상 테이블 employee에 새 문자열 열 emp_seniority를 추가합니다. 급여 열에 SQLite round 함수를 사용하고 이 때 급여가 20,000과 같거나 이를 초과하는지 확인하는 CASE

docs.aws.amazon.com

 

.