🕰️ 작성일 : 2024.10.08

DMS의 Replication Instance는 RI 및 Saving Plan이 적용되지 않습니다. 또한 EC2 인스턴스처럼 Replication Instance에 대한 Stop/Restart 기능도 현재 제공하지 않습니다. 주말 동안 CDC 작업을 실시하지 않을 경우 비용을 최소화하는 방안으로 DMS Task를 모두 종료하고 Replication Instance를 Scale-Down 하는 방안으로 비용을 최소화 할 수 있습니다.

dms.t2.micro를 사용 할 경우 1년간 매월 최대 750시간까지 무료로 사용 할 수 있습니다. 즉 1년간 매월 주말(48h * 4W)에 대해서는 인스턴스에 대한 비용이 청구되지 않고 1년 후 프리티어 기간이 종료 되었을때 인스턴스에 대한 비용이 발생합니다.

AWS 프리 티어의 일환으로 AWS DMS를 무료로 시작할 수 있습니다. AWS DMS 프리 티어에는 1년간 매월 최대 750시간의 단일 AZ dms.t2.micro 인스턴스 사용량이 포함됩니다.

출처 : https://aws.amazon.com/ko/dms/pricing/?nc1=h_ls

Multi-AZ RI에서 Single-AZ RI 전환시 이슈 여부 테스트

테스트 환경

  1. Multi-AZ 및 r6i.xlarge 인스턴스로 CDC Task를 실행합니다. Source와 Target을 구분하기 위해 CDC Task에 변경 룰을 적용하여 Target Table에 $AR_H_TIMESTAMP에 대한 컬럼을 추가합니다.
  2. Task를 종료하고 RI를 Single-AZ 및 t2.micro 로 전환합니다.
  3. 다시 RI를 Multi-AZ 및 r6i.xlarge로 전환하고 Task를 재실행하여 CDC 작업이 정상적으로 재기동되는지 확인합니다.

image.png

테스트 절차

  1. Multi-AZ 및 r6i.xlarge 인스턴스로 CDC Task를 실행합니다. CDC Task가 정상적으로 작동되며, ID=123인 Row까지 적용되었습니다.

image.png

  1. Task를 중지하고, RI를 Single-AZ 및 t2.micro로 변경합니다. 변경 상태 정보를 확인합니다
# Task 상태정보 확인
[cloudshell-user@ip-10-134-35-173 ~]$ aws dms describe-replication-tasks \\
>     --filter "Name=replication-task-arn,Values=arn:aws:dms:us-east-1:112308805385:task:ZEFZWNB3MRBFXJ2RMLDHACSDWM" \\
>     --query "ReplicationTasks[0].Status"
"stopped"

# RI 상태정보 확인
[cloudshell-user@ip-10-134-35-173 ~]$ aws dms describe-replication-instances \\
>     --filter "Name=replication-instance-id,Values=replication-instance" \\
>     --query "ReplicationInstances[0].[ReplicationInstanceClass,MultiAZ]"
[
    "dms.t2.micro",
    false
]
  1. RI를 다시 Multi-AZ 및 r6i.xlarge로 변경합니다. 그리고 기존의 Task를 다시 기동합니다.
# RI 상태정보 확인
[cloudshell-user@ip-10-134-35-173 ~]$ aws dms describe-replication-instances \\
>     --filter "Name=replication-instance-id,Values=replication-instance" \\
>     --query "ReplicationInstances[0].[ReplicationInstanceClass,MultiAZ]"
[
    "dms.r6i.xlarge",
    true
]

# Task 상태정보 확인
[cloudshell-user@ip-10-134-35-173 ~]$ aws dms describe-replication-tasks \\
> --filter "Name=replication-task-arn,Values=arn:aws:dms:us-east-1:112308805385:task:ZEFZWNB3MRBFXJ2RMLDHACSDWM" \\
> --query "ReplicationTasks[0].Status"
"running"
  1. Task 재개 후 Source/Target 간 정상적으로 시작되는 것을 확인합니다. ID=124번부터 정상적으로 적용되며 $AR_H_TIMESTAMP 값을 통해서도 CDC가 다시 정상적으로 동작한 것을 확인 할 수 있습니다.