Browsing Category

NCLOUD

Naver Cloud Platform category

NCLOUD

[NCloud] Database Migration Service로 데이터베이스 마이그레이션 정복!

안녕하세요, ManVSCloud 김수현입니다.

이번 네이버 클라우드의 2022년 11월 4주차 업데이트는 다양한 서비스가 출시되어 더욱 이목이 집중됩니다.

그 중 먼저 Database Migration Service에 대해 알아보도록 하겠습니다.


Database Migration Service

Database Migration Service는 네이버 클라우드 플랫폼에서 제공하는 데이터베이스를 네이버 클라우드 환경의 관리형 데이터베이스로 마이그레이션을 도와주는 서비스입니다.

※ 장점

1) 비용
→ Database Migration Service에 대한 비용은 [무료]입니다.

마이그레이션되는 관리형 데이터베이스(CDB)와 사용되는 스토리지 용량에 대한 비용만 사용한만큼 지불하게 되므로 DMS(Database Migration Service)에 대한 비용은 없다고 볼 수 있습니다.

2) 서비스 연속성
→ Migration 진행 간 다운 타임이 존재하지 않습니다.

사용자가 DB의 접속 설정을 CDB의 Endpoint로 변경 및 서비스 확인 구간에서 발생할 수 있는 다운 타임만 생각하면 됩니다.

3) 편리성
→ Migration에 필요한 최소한의 설정만 해준다면 클릭 몇번으로 쉽게 데이터베이스 마이그레이션이 가능합니다.

DMS(Database Migration Service)로 마이그레이션 작업을 진행하기 전 몇가지 사전 준비가 필요합니다.

1. 바이너리 로그 활성화

2. 바이너리 로그 보관 기간 5일 이상 설정

3. 데이터베이스의 패스워드 인증 플러그인이 mysql_native_password 방식이어야합니다.

4. GTID 모드의 경우 추가 권한 설정

5. GTID 모드가 아닌 경우 추가 권한 설정

6. MySQL 8.0.20 이상 버전에서 Routine Dump 사용을 위해 SHOW_ROUTINE 권한 필요

7. Inbound/Outbound 방화벽 설정


AWS EC2 to NCloud CDB

Database Migration Service(DMS)의 마이그레이션 기능을 테스트 하기 위해 다음과 같은 시나리오를 준비했습니다.

(해당 포스팅는 Database Migration Service(DMS)에 대한 내용으로 Cloud DB for MySQL 생성 및 방화벽 설정에 대한 가이드는 제공하지 않습니다. )

  • 웹 페이지는 간단하게 WordPress로 구성하였으며 WordPress 구성 시
    생성되는 DB 및 Table 그리고 작성한 글들이 정상적으로 Migration 되는지 검증할 것입니다.
1. Cloud DB for MySQL 생성

원본 DB서버의 버전이 5.7.40버전이므로 Cloud DB for MySQL은 5.7.37 버전으로 생성하였습니다.

2. Source DB 사전 설정

my.cnf 파일 기준 아래 옵션은 필수입니다.
(expire_logs_days 대신 binlog_expire_logs_seconds로 설정할 수도 있습니다.)

// 바이너리 로그 활성화
server-id=1
log-bin=PATH(경로)
expire_logs_days=5

또한 GTID 모드인 경우 아래 권한 추가

GRANT PROCESS, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[사용자명]'@'[HOST IP]';
GRANT SELECT ON mysql.* TO '[사용자명]'@'[HOST IP]';
GRANT SELECT, SHOW VIEW, LOCK TABLES, TRIGGER ON [사용자 DB].* TO '[사용자명]'@'[HOST IP]';

GTID 모드가 아닌 경우 아래 권한 추가

GRANT RELOAD, PROCESS , SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '[사용자명]'@'[HOST IP]';
GRANT SELECT ON mysql.* TO '[사용자명]'@'[HOST IP]';
GRANT SELECT, SHOW VIEW, TRIGGER ON [사용자 DB].* TO '[사용자명]'@'[HOST IP]';

마지막으로 PLUGIN 방식이 mysql_native_password이 맞는지 Migration 시 정상적으로 통신될 수 있도록 host가 추가되었는지 확인합니다.

use mysql;
select user,host, plugin from user;
3. 방화벽 설정

Database Migration Service(DMS)를 이용하여 Migration을 진행할 경우 Source DB(기존 데이터베이스 서버)와 Target DB(이전 대상인 Cloud DB for MySQL)간 정상적인 통신이 되어야합니다.

Target DB에서 Source DB로 접근하므로 아래와 같이 설정할 수 있습니다.

  • Target DB : Cloud DB for MySQL의 ACG에서 Outbound 규칙 추가
    프로토콜 – TCP
    목적지 – Source DB의 IP
    허용 포트 – Source DB의 데이터베이스 포트
  • Source DB : 온프레미스의 경우 상단 방화벽 및 서버 내 방화벽, AWS의 경우 보안그룹, 데이터베이스 내 host 추가
    프로토콜 – TCP
    목적지 – Target DB의 IP, 또는 Target DB가 Private Subnet일 경우 NAT Gateway의 IP
    허용 포트 – 데이터베이스 포트

    (Cloud DB for MySQL이 Private Subnet 환경일 경우 Route Table에 NAT Gateway를 연결하여 NAT Gateway의 IP로 통신되도록 합니다.)
4. Database Migration Service 설정

1) Endpoint Management

Endpoint를 먼저 생성해주어야합니다.

Endpoint 생성 후 방화벽 설정이 등록 일시 및 DB Version, Connection 상태를 확인할 수 있습니다.

2) Migration Management

Migration 작업 생성 간 [Test Connection]이 정상적으로 진행되지 않는다면 Source DB의 사전 설정 및 방화벽 설정이 진행되지 않았기 때문이니 다시 체크해보길 바랍니다.

[Migration 작업 시작]을 하게되면 Migration Management 콘솔 화면과 Cloud DB for MySQL에서 정상적으로 마이그레이션이 진행되는 것을 확인할 수 있습니다.

또한 마이그레이션 작업이 정상적으로 끝나게될 경우 문자로 알림이 오게됩니다.

5. Migration Management 완료 처리

Migration Completed 문자, 즉 마이그레이션이 모두 완료되었다는 문자를 받게되면 Migration Management에서 작업 클릭 후 [완료] 처리를 해주자…

[완료]를 안눌러주면 계속 작업 상태가 진행중으로 되어있다는…
(이 사실을 몰라서 1분만에 완료된 마이그레이션 작업을 5시간 44분을 기다렸다.)

[완료] 버튼을 클릭하면 데이터 동기화 작업이 끝나고 Cloud DB for MySQL이 쓰기 가능 상태로 변경 및 고가용성 구성 ON, Auto Failover 기능이 활성화 됩니다.

6. 웹 서버에서 Database Host 변경 후 서비스 확인

Database Host 변경 후 서비스도 정상적으로 잘 올라오고 데이터베이스 및 Table도 정상적으로 마이그레이션 되었습니다.


MSSQL Migration

Database Migration Service는 아직 MySQL 엔진에 대해서만 지원을 하고 있습니다.
다른 DB엔진도 추후 확대될 예정입니다.

그렇다면 MSSQL은 어떻게 Migration 할 것인가?

네이버 클라우드는 DMT(Data Migration Tool)을 오래 전부터 제공하고 있었습니다.

해당 툴을 이용하여 Cloud DB for MSSQL로 마이그레이션 작업이 가능하며 사용법에 대한 가이드도 쉽게 작성되어 있어 함께 공유드립니다.


Personal Comments

오늘은 네이버 클라우드 플랫폼에서 신규로 출시한 서비스인 Database Migration Service에 대해 알아보고 직접 테스트 해보았습니다.

손수 mysqldump 작업을 하고 복사하고 다시 밀어넣는 작업이 상당히 귀찮은데 약간의 설정만으로 쉽게 마이그레이션 할 수 있는 서비스가 나와서 정말 기쁩니다!

매니지드 서비스를 하다보면 고객 요구 사항에서 쉽게 마이그레이션 할 수 있는 방법이 있는가?에 대한 질문도 많이 받게 되는데 이제 네이버 클라우드에서도 Database Migration Service를 이용하여 데이터베이스를 이전할 수 있는 날이 왔습니다.

긴 글 읽어주셔서 감사합니다.