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 콘솔에서 설정하는 경우
- DMS 콘솔에서 테스크를 생성하거나 수정합니다.
- Table Mapping 설정 단계로 이동합니다.
- 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' 카테고리의 다른 글
DMS(Database Migration Service) 기동, 중지 lambda 함수 (0) | 2025.01.10 |
---|---|
DMS(Database Migration Service) full-load & CDC 임계치 (2) | 2025.01.10 |