AWS DMS란
<aside>
🚡 데이터베이스 및 분석 워크로드를 AWS로 빠르고 안전하게 이동하여 가동 중단 시간 및 데이터 손실을 방지하는 데 도움이 되는 관리형 마이그레이션 및 복제 서비스
</aside>
<aside>
💡
제약사항 : 엔드포인트 중 하나가 AWS 서비스에 있어야 함
</aside>
AWS DMS에서 제공하는 3가지 복제 작업 유형
https://aws.amazon.com/ko/blogs/database/understand-and-optimize-replication-for-amazon-redshift-with-aws-dms/
-
기존 데이터 마이그레이션 (Full Load)
기존의 모든 데이터를 한 번에 일괄적으로 이전하는 작업
-
변경 데이터 캡처 (CDC, Change Data Capture)
데이터베이스에서 발생하는 변경 사항만을 실시간으로 캡처하여 복제하는 작업
-
전체 데이터 마이그레이션 + 변경 데이터 캡처 (Full Load + CDC) ← 저희가 사용하는 유형
초기에는 전체 데이터를 이전한 후, 그 이후에 발생하는 변경 사항을 실시간으로 반영하는 작업
데이터 복제 과정
- Source DB에서 데이터 읽고 각 테이블별로 csv 파일 생성.
- AWS SDK 써서 S3로 csv 파일 전송.
- COPY 명령어 사용해서 AWS Redshift로 전송. (이 때 AWS DMS는 batch optimized apply 옵션 사용)
Batch Optimized Apply
AWS DMS Batch Optimized Apply는 변경 데이터를 배치로 묶어 대상 데이터베이스에 적용하는 방식
- 기본적으로 AWS DMS는 트랜잭션 무결성을 유지하는 Transaction 모드에서 변경 사항을 처리.
- 트랜잭션 무결성이 일시적으로 저하되는 것을 허용할 수 있는 경우, batch optimized apply 옵션을 대신 사용할 수 있음. 이 옵션은 효율성을 위해 트랜잭션을 효율적으로 그룹화하고 일괄 적용함.
- BatchApplyTimeoutMin, BatchApplyTimeoutMax, BatchApplyMemoryLimit 설정을 통해 reduce the number of commits to the target.
- initial load over 24 hours causing CDC lag
- MaxFullLoadSubTasks (동시에 테이블 몇 개), ParallelLoadThreads, ParallelLoadBufferSize 옵션으로 initial load 빠르게 할 수 있음