AWS Database Migration Service (DMS)- 데이터 저장소 마이그레이션

Saltware Co., ltd
Saltware
Published in
9 min readOct 19, 2023

하이브리드 클라우드 스토리지, 온라인 데이터 전송 및 오프라인 데이터 전송 요구 사항을 해결할 수 있는 AWS Database Migration Service를 알아봅니다.

Database Migration Service(DMS)란 무엇인가?

AWS DMS는 관계형 데이터베이스, 데이터 웨어하우스, NoSQL 데이터베이스 및 기타 유형의 데이터 저장소를 쉽게 마이그레이션 할 수 있는 클라우드 서비스로, 클라우드뿐만 아니라 온프레미스와의 조합도 가능합니다.

AWS Database Migration Service (DMS) 아이콘 입니다.
Database Migration Service(DMS)

DMS 작동방식

다양한 Case 유형에 따라 여러 사용 방식이 있습니다. 그중에서 가장 기본적인 동작 구조는 아래와 같습니다.

Source와 Target 데이터베이스를 연결해 주는 DMS 작동 방식에 대한 안내자료입니다.
DMS 작동방식

데이터를 복제할 인스턴스를 생성하며 Source와 Target 데이터베이스를 연결해 주는 Source endpoint를 생성합니다. 마지막으로 Replication task를 실행하여 Target endpoint를 통해 궁극적으로 Target database 데이터 이관을 완료합니다.

DMS 특징

DMS의 특징으로는 2가지가 대표적입니다.

1. 마이그레이션 중에도 기존에 사용하는 DB 사용 가능

2. 동종뿐만 아니라, 이기종 마이그레이션 적용 가능

AWS SCT(Schema Conversion Tool)

이기종 간의 데이터 마이그레이션을 진행하기 위해서 스키마 생성이 선행되어야 합니다. 적은 수의 테이블일 경우 수동으로 생성하는데 어려움이 없겠지만 많은 수의 컬럼을 가진 테이블 혹은 테이블 개수가 많다면 수작업에 어려움이 있을 수 있습니다.

기존 데이터베이스 스키마를 한 데이터베이스 엔진에서 다른 데이터베이스 엔진으로 변환할 수 있습니다.

AWS에서는 기존 데이터베이스 스키마를 다른 데이터베이스로 변환할 수 있는 기능을 제공하기 위해 AWS SCT(Schema Conversion Tool)를 제공합니다. 변환된 스키마는 Amazon RDS의 MySQL, MariaDB, 오라클, SQL 서버, PostgreSQL DB, Amazon Aurora DB 클러스터 또는 Amazon Redshift 클러스터에 적용할 수 있습니다.

혹은 Amazon EC2 인스턴스에서 데이터베이스와 함께 사용하거나 Amazon S3 버킷에 데이터로 저장할 수도 있습니다.

다만, 해당 서비스가 적용될 수 있는 원본 데이터 베이스 엔진이 제한되어있기 때문에 먼저 제한사항을 확인하는 것이 중요합니다. (AWS 공식 문서에서 확인 가능합니다.)

AWS DMS 테스트 구성

테스트 편의를 위해 EC2에 설치한 Mariadb Database를 온프레미스로 가정하고 Tokyo Region의 Mariadb RDS로의 마이그레이션 테스트하였음을 미리 고지 드립니다.

AWS DMS 테스트를 구성하는 이미지로 EC2에 설치한 Mariadb Database를 온프레미스로 가정하고 Tokyo Region의 Mariadb RDS로의 마이그레이션 테스트 과정입니다.
AWS DMS 테스트 구성 다이어그램

*기본적인 VPC 구성, 피어링, EC2 구성, RDS구성 내용은 생략합니다.

*DMS는 Source DB의 행 기반 바이너리 로그(binlogs) 변경점을 파악 후 이 변경 사항을 적용하기 때문에 Source DB의 binlog_format 값을 ROW로 반드시 설정하며 Server-id의 경우 1 이상의 값을 사용합니다.

작업 순서는 다음과 같이 이뤄집니다.

Step.1 DMS 서브넷 그룹 생성

Step.2복제 인스턴스 생성

Step.3 Source와 Target endpoint생성

Step.4 데이터베이스 마이그레이션 태스크 생성

Step.5 테스트

Step.1 DMS 서브넷 그룹 생성

DMS 서브넷 그룹 생성 페이지입니다.
AWS DMS -복제 서브넷 그룹 생성
  1. DMS 콘솔 → 서브넷 그룹 → 서브넷 그룹 생성
  2. 서브넷 그룹 이름 및 설명을 입력 후, VPC 및 필요한 서브넷 그룹을 선택합니다.

Step. 2 복제 인스턴스 생성

AWS DMS에서 복제 인스턴스 생성 페이지 안내 입니다.
AWS DMS -복제 인스턴스 생성

1. DMS 콘솔 → 복제 인스턴스 → 복제 인스턴스 생성

2. 이름 및 설명을 적절히 입력한 후 인스턴스 클래스를 설정합니다. (테스트인 관계로 고가용성은 설정하지 않은 단일 AZ에 배포)

Step. 3 Source와 Target endpoint 생성

1. DMS 콘솔 → 엔드포인트 → 엔드포인트 생성

2. 소스 엔드포인트먼저 생성해 줍니다. 테스트 환경은 EC2 안의 maria DB를 온프레미스 db로 가정했기 때문에 해당 테스트의 경우 소스 엔진은 Maria DB이고 수동으로 액세스 정보를 제공합니다.

AWS DMS 에서 Source와 Target 엔드포인트 생성하는 페이지 입니다.
AWS DMS-엔드포인트 유형

3. 엔드포인트 생성이 완료 후 연결 테스트를 통해 정상적으로 연결이 가능한지 확인 합니다.

AWS DMS 에서 테스트 및 구성하는 페이지 입니다.

4. 다시 한번 엔드포인트 생성을 눌러 대상 엔드포인트를 생성합니다. 대상의 경우 RDS DB를 사용하므로 RDS DB 선택을 체크합니다.

AWS DMS 에서 테스트 및 구성하는 페이지 입니다. 대상 엔드포인트를 선택합니다.
AWS DMS-엔드포인트 유형 및 구성 설정

5. 생성이 완료된 후, 소스 엔드포인트와 같이 연결 테스트를 통해 연결 확인합니다.

Step. 4 데이터베이스 마이그레이션 태스크 생성

1. DMS 콘솔 → 데이터베이스 마이그레이션 태스크 → 태스크 생성

2. 태스크 구성을 설정합니다.

AWS DMS-데이터베이스 마이그레이션 태스크 구성

해당 테스트의 경우, 기본적인 초기 마이그레이션 후 CDC 테스트도 하기 위해 ‘기존 데이터 마이그레이션 및 지속적인 변경 사항 복제’를 선택하였습니다.

3. 태스크 설정 탭의 경우 다음과 같이 설정하였습니다.

AWS DMS 에서 태스크 설정 탭의 구성을 체크합니다. 마법사, 아무작업 안 함, 중지 안 함 , LOB 열 포함 안함을 클릭합니다.
AWS DMS-데이터베이스 마이그레이션 태스크 설정

4.테이블 매핑의 경우 테스트 편의를 위해 특정 소스 테이블 이름을 입력하였습니다.

AWS DMS 에서 테스트의 편의를 위해 특정 소스 테이블 이름을 입력합니다.
AWS DMS-데이터베이스 마이그레이션 테이블 매핑

Step.5 테스트

태스크가 생성된 후 자동적인 태스크 실행을 하며, 초기 마이그레이션 작업이 끝나면 상태가 다음과 같이 변화합니다.

데이터베이스 마이그레이션 태스크 로드 및 복제 진행 중

기본 테이블 상태

RDS 마이그레이션 상태 확인

CDC 환경 테스트를 위한 추가적인 데이터 삽입

위와 같이 초기 마이그레이션 작업이 완료되었지만, CDC 환경 테스트를 위해 추가적인 데이터를 넣습니다.

해당 데이터 변화를 binlog를 통해 감지하고 DMS는 지속적인 마이그레이션을 진행합니다.

마무리

기초적인 테스트 환경을 만들어 테스트를 진행하였기 때문에 어려움 없이 완성하셨을 거라 생각됩니다. 하지만, 실질적인 마이그레이션에 접목하기 위해서는 고려할 사항이 많을 것입니다.

또한, 위에서 잠깐 언급되었던 AWS SCT를 통한 이기종간의 데이터베이스 마이그레이션의 경우, 스키마를 동일하게 구성함에도 데이터 타입 불일치에 대한 변수 또는 제한 사항에 의하여 SCT가 사용될 수 없는 경우의 수도 존재하기 때문에 보다 많은 점을 고려하고 테스트해야 합니다.

해당 블로그를 통해 많은 분이 간접적으로 DMS 서비스와 CDC 기능을 간접적으로 경험해 볼 수 있는 시간이 되었기를 바랍니다.

감사합니다.🙂

https://www.fitcloud.co.kr/

▸ 참조 ◂

■ AWS DMS 유저 가이드 — AWS DMS에서 MySQL 호환 데이터베이스를 소스로 사용https://docs.aws.amazon.com/ko_kr/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Prerequisites

■ AWS DMS 유저 가이드 — AWS Database Migration Service에서 MySQL 호환 데이터베이스를 대상으로 사용https://docs.aws.amazon.com/ko_kr/dms/latest/userguide/CHAP_Target.MySQL.html

■ AWS re:Post 지식센터 — AWS DMS를 Aurora MySQL과 소스로 사용할 때 받은 이진 로깅 오류 해결https://aws.amazon.com/ko/premiumsupport/knowledge-center/dms-binary-logging-aurora-mysql/

■ MySQL 8.0 참조 매뉴얼https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html

■AWS Schema Conversion Tool 사용 설명서https://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_Welcome.html

--

--