Cloud

[AWS] DMS 사용하여 데이터베이스 이관하기

RYEAN 2024. 4. 29. 23:00
반응형

 

 


 

DMS (Data Migration Service) 란?

AWS DMS(Data Migration Service) 란 AWS 에서 제공하는 클라우드 기반의 데이터 마이그레이션 서비스이다.

DMS는 On-Premise 데이터베이스, 다른 Cloud 데이터베이스, 그리고 AWS 내의 다른 데이터베이스 등 다양한 데이터 저장소에서 데이터 마이그레이션이 가능하다.

실시간 데이터 복제를 지원하여 데이터베이스를 동기화 상태로 유지할 수 있으며, 전송되는 데이터 양에 대해서만 비용을 지불하므로 비용이 효율적이다.

 

 

DMS 프로세스

 

DMS 프로세스는 소스 및 타겟 데이터베이스 연결을 생성하여 엔드포인트를 각각 생성한다.

그리고 복제 인스턴스에서 실행되는 태스크를 예약하여 데이터를 이관한다.

 

 

자 그러면 DMS 을 이용하여 데이터를 이관해보자.

이관하기 전 나의 서버 정보는 아래와 같다.

 

■ Source  database: AWS RDS for MySQL

■ Target database: On-Premise for MySQL

 

 

 

복제 서브넷 그룹 생성

 

DMS 도 AWS RDS 처럼 인스턴스로 구성이 되므로 서브넷 그룹이 필요하다.

DMS > 서브넷 그룹 > 서브넷 그룹 생성 메뉴를 통해 생성해준다.

 

 

 

복제 인스턴스 생성

1. 인스턴스 구성

 

복제 태스크를 실행 할 복제 인스턴스를 만들어준다.

DMS > 복제 인스턴스 > 복제 인스턴스 생성 메뉴를 통해 생성한다.

 

원하는 복제 인스턴스명을 입력 후, 인스턴스 클래스와 엔진 버전, 고가용성과 용량까지 알맞게 선택해준다.

 

 

 

2. 연결성 및 보안

 

아까 생성한 서브넷 그룹을 연결해준다.

외부 접근이 필요한 경우, 퍼블릭 액세스 가능에 체크해준다.

나의 경우, On-Premise DB 에 접근이 필요하기 때문에 퍼블릭 액세스 기능에 체크해주었다.

 

이렇게 복제 인스턴스 생성을 누르고 기다리면 복제 인스턴스 생성이 된다.

 

 

엔드포인트 생성

엔드포인트는 소스(Source) 와 대상(Target) 을 각각 생성해주어야 한다.

DMS > 엔드포인트 > 엔드포인트 생성 메뉴를 통해 엔드포인트를 생성할 수 있다.

 

먼저 소스 엔드포인트를 생성해보자.

 

나의 소스 엔드포인트는 AWS RDS for MySQL 이므로,

RDS DB 인스턴스 선택을 체크해주었다.

 

 

 

 - 소스 엔진 : MySQL

 - 엔드포인트 데이터베이스에 액세스: 수동으로 액세스 정보 제공

 - 서버 이름: Source 데이터베이스 인스턴스 IP

 - 포트: 소스 DB Port

 - 사용자 이름: 어드민ID

 - 암호: 어드민PW 

 

 

 

이후, 엔드포인트가 잘 설정되었는지 테스트해볼 수 있다.

테스트 실행 후 상태로 확인할 수 있다.

 

이렇게 Source 엔드포인트 생성 완료!

Target 엔드포인트도 동일하게 생성해준다.

 

 

위와 같이 소스, 대상 엔드포인트가 생성된 것을 확인해볼 수 있다.

 

 

 

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

엔드포인트까지 설정해주었으니 이제 마이그레이션 태스크를 만들어보자.

 

1. 태스크 구성

 

태스크 식별자를 입력하고 아까 구성해두었던 복제 인스턴스, 소스 엔드포인트, 타겟 엔드포인트를 선택해준다.

그리고 마이그레이션 유형을 알맞게 선택해준다.

 

1) 기존 데이터 마이그레이션

 - 기존 데이터 전체 복제 (Full Load) 

2) 기존 데이터 마이그레이션 및 지속적인 변경 사항 복제

 - 기존 데이터 전체 복제 + 이후 발생하는 변경 사항 데이터를 복제 (Full Load + Ongoing Changes)

3) 데이터 변경 사항만 복제

 - 기존 데이터를 복제하지 않고, 복제 태스크가 시작된 시점 이후 발생하는 변경 사항 데이터를 복제 (CDC Only)

 

2,3 번의 경우, 지속적인 복제가 필요하기 때문에 binary logging 이 활성화되어 있어야한다.

 

 

2. 태스크 설정

 

대상 테이블 준비 모드

*DMS 는 새로운 테이블 생성 시, Auto Increment 나 FK 와 같은 제약조건을 생성해주지 않기 때문에 스키마 구조는 먼저 생성한 후, 데이터만 옮기는 것을 추천

1) 아무 작업 안 함

 - 타겟 데이터베이스에 테이블이 이미 존재할 경우, 대상 테이블들은 변경되지 않음

 - 만약, 테이블이 존재하지 않는다면 새로운 테이블을 생성하여 복제

2) 대상에서 테이블 삭제

 - 타겟 데이터베이스의 기존 테이블을 삭제하고, 새로운 테이블을 생성하여 복제

3) 자르기

 - 테이블과 그 스키마 구조는 유지하지만, 테이블 내의 데이터는 모두 제거한 후 복제

 

LOB 컬럼 설정

*Large Object 의 약자로, 대용량 데이터를 저장하기 위한 데이터 유형. 텍스트,이미지,동영상 등

1) LOB 열 포함 안 함

 - LOB 데이터가 포함된 열은 복제 시 제외 처리

2) 전체 LOB 모드

 - LOB 데이터를 포함하는 모든 컬럼의 데이터를 전체적으로 복제. 완전성이 있으나, 복제 시간이 길어질 수 있음

3) 제한적 LOB 모드

 - 아래 "최대 LOB 크기(KB)" 에 설정된 최대 크기까지의 LOB 데이터만을 복제

 

 

3. 테이블 매핑

 

어떤 스키마와 테이블을 복제할 것인지 규칙을 선택해준다.

나는 manager_migration 이라는 데이터베이스에 있는 모든 테이블(%) 을 이관 대상으로 설정하였다.

 

 

 

4. 마이그레이션 전 평가

 

데이터 복제 전 평가를 켜서, 어떤 문제가 발생할지 예측을 한 후 데이터 복제를 진행하려면

마이그레이션 전 평가 켜기 버튼을 선택하여 켜준다.

 

이 후, 마이그레이션 태스크를 자동/수동으로 설정 한 후, 태스크를 생성해준다.

 

 

5. 마이그레이션 진행률 확인

 

생성해준 태스크 상태를 확인할 수 있으며, 진행률까지 확인할 수 있어 좋다.

이렇게 진행이 완료되면 데이터 이관이 완료됨을 확인 할 수 있다!

 

 

 

반응형