PostgreSQL을 AWS DMS로 안전하게 이전하기
AWS DMS를 이용하여 MySQL에서 PostgreSQL로의 데이터 이전 절차와 설정, 검증 방법을 실무 중심으로 단계별 정리하고 성공 사례와 주의사항도 포함한 마이그레이션 방법론
목차
개요
AWS DMS를 활용한 PostgreSQL 이전은 서비스 중단을 최소화하면서 데이터 구조와 변경 이력을 옮기는 방법이다. 본문은 aws dms postgres 마이그레이션 관점에서 시작부터 검증, 최종 절차까지 실무자가 바로 활용할 수 있도록 구성한다. 초보자도 이해하기 쉽도록 용어를 풀어 설명한다.
사전 준비
필요한 권한과 리소스
다음 항목을 미리 확인한다.
- AWS 계정에서 DMS 사용 권한(Replication Instance 생성, Endpoint 생성, Task 생성 권한)
- 원본 DB와 대상 PostgreSQL 접속 정보(보안 그룹, 네트워크 접근성)
- 스키마 호환성 점검을 위한 테이블 구조와 인덱스 정보
스키마 및 데이터 타입 점검
MySQL과 PostgreSQL은 데이터 타입과 자동 증가 방식(auto_increment vs serial/sequence)이 다르다. 문자열 문자셋, TIMESTAMP의 시간대 처리, ENUM 타입 등 변환이 필요한 항목을 확인한다. 복잡한 변환은 사전에 대상 DB에 스키마를 생성해두는 편이 안전하다.
AWS DMS 구성 단계
1. Replication Instance 생성
Replication Instance는 DMS 작업의 컴퓨팅 자원이다. 예상 트래픽과 데이터 볼륨에 따라 인스턴스 유형을 선택한다. 네트워크 대역폭과 IOPS를 고려해 크기를 조정한다.
2. Endpoint 생성
원본(MySQL)과 대상(PostgreSQL) Endpoint를 각각 생성한다. 연결 테스트를 통해 자격 증명과 네트워크 설정이 정상인지 확인한다. 암호화나 SSL 사용 여부도 이 단계에서 설정한다.
3. 테이블 매핑과 변환
DMS는 JSON 형식의 테이블 매핑 규칙을 사용한다. 특정 테이블만 옮기거나 칼럼명을 변경하는 등 필터링과 변환 규칙을 정의할 수 있다.
{
"rules": [
{
"rule-type": "selection",
"rule-id": "1",
"rule-name": "select-all",
"object-locator": { "schema-name": "%", "table-name": "%" },
"rule-action": "include"
}
]
}
4. Replication Task 생성
Full load, CDC(Change Data Capture), 또는 둘을 조합한 방식으로 작업을 설정한다. 초기 전체 로드 후 실시간 변경만 적용하려면 Full load + CDC 조합을 선택한다. 성능을 고려해 멀티 스레드 및 최대 소스와 대상 연결 수를 조절한다.
실행 및 검증
데이터 일관성 검사
일부 테이블을 대상으로 COUNT, CHECKSUM 또는 샘플 레코드 비교를 통해 일관성을 검증한다. 큰 테이블은 파티셔닝 단위로 검증하면 효율적이다.
성능 모니터링
DMS 콘솔과 CloudWatch를 통해 작업 지연(latency), 레플리케이션 인스턴스 CPU/메모리, 네트워크 트래픽을 모니터링한다. 병목이 발생하면 인스턴스 크기 확장이나 테이블 매핑을 분할하는 방법을 고려한다.
컷오버 전략
컷오버 절차는 서비스 요구에 따라 달라진다. 일반적인 순서는 다음과 같다.
- 1) 전체 로드 완료 확인
- 2) CDC로 변경 사항 동기화
- 3) 읽기 전용 모드로 전환하여 최종 변경점 캡처
- 4) 대상 DB를 애플리케이션 연결 대상으로 전환
- 5) 모니터링 후 원본 시스템 종료
문제 해결과 팁
일반적인 오류
- 네트워크 접속 실패: 보안 그룹과 서브넷 설정 확인
- 데이터 타입 변환 오류: 매핑 규칙이나 스키마를 수정
- 성능 저하: 멀티 스레드 설정, 인스턴스 스케일 업 고려
성공률을 높이는 권장 사항
- 사전 테스트 환경에서 전체 절차 연습
- 스키마 변경 사항은 별도 배포로 관리
- 대용량 테이블은 청크 단위로 로드
실전 예시: AWS CLI로 Task 생성
아래는 간단한 aws dms create-replication-task 예시이다. 실제 값은 환경에 맞게 수정한다.
aws dms create-replication-task \
--replication-task-identifier my-task \
--source-endpoint-arn arn:aws:dms:us-east-1:123456:endpoint:src \
--target-endpoint-arn arn:aws:dms:us-east-1:123456:endpoint:tg \
--replication-instance-arn arn:aws:dms:us-east-1:123456:rep:myinst \
--migration-type full-load-and-cdc \
--table-mappings file://table-mappings.json
마무리와 참고
aws dms postgres 마이그레이션은 설계 단계에서 스키마와 데이터 특성을 면밀히 검토하면 성공 확률이 높아진다. dms mysql to postgres 환경에서는 데이터 타입과 인덱스 차이를 우선 검토하고, dms postgres 설정 가이드에 따라 복제 인스턴스와 테이블 매핑을 최적화하면 안정적인 마이그레이션을 달성할 수 있다. 절차를 문서화하여 반복 가능한 워크플로우로 만들면 운영 부담을 줄일 수 있다.