본문 바로가기
Cloud/Naver Cloud Platform

[NCP] DATABASE MIGRATION SERVICE 소개 및 이용 방법

by 강시공 2023. 10. 14.

안녕하세요! 강시공 입니다.😊

이번 게시글에서 네이버 클라우드에서 제공하는 Database Migration Service를 소개합니다.

해당 마이그레이션 서비스는 [무료]입니다.

 

다만, 마이그레이션 진행 시 MySQL 스토리지 엔진 (MyISAM, BLACKHOLE, FEDERATED, ARCHIVE 엔진)은

마이그레이션을 지원하지 않는 점 참고 바랍니다.

 

=========================================================

=========================================================

 

1. 개요

NCP의 DATABASE MIGRATION Service 란?

=> Database Migration Service를 이용하여 온프레미스(On-Premise)나 다른 클라우드 환경에 있는 데이터베이스를 네이버 클라우드 플랫폼 환경으로 빠르고 안전하게 마이그레이션하는 서비스입니다.

 

2. 특징

아래 링크를 클릭하시면 네이버 클라우드 포털의 서비스 소개 매뉴로 이동됩니다.

NAVER CLOUD PLATFORM 네이버 클라우드 플랫폼 (ncloud.com)

 

- 간편한 마이그레이션 지원

데이터베이스의 연결 설정 및 이관 절차를 자동화하여 마이그레이션 작업이 간소화되었습니다. 네이버 클라우드 웹 콘콘솔에서 간편하게 마이그레이션을 할 수 있으며, 작업 단계별로도 실시간으로 확인 가능합니다.

 

- 다운 타임 최소화

마이그레이션 시작부터 완료까지 데이터베이스의 변경 사항은 빠짐없이 타깃 데이터베이스에 동기화됩니다. 따라서 데이터베이스의 접속 설정을 타깃 데이터베이스로 변경하는 시간 외에는 별도의 다운 타임이 필요하지 않아 서비스의 연속성이 높아집니다.

==> 실시간으로 데이터가 쌓이고 있는 운영 DB 서버를 Down 시킨 후 마이그레이션(데이터 동기화) 할 필요가 없다는 의미 옮기는 시간동안 다운 타임이 발생한다. (다운 타임 최소화)

 

- 합리적인 비용

Database Migration Service는 타깃 데이터베이스 서버와 스토리지를 구성하는 비용 외

마이그레이션 비용에 대해서는 "무료" 서비스입니다.

- Full Load 마이그레이션

마이그레이션을 진행하는 도중에 변경사항이 발생하면 실시간으로 변경 사항을 동기화하므로

데이터 유실 없이 안전하게 이관할 수 있습니다.

 

- 다양한 마이그레이션 시나리오 지원

온 프레미스(On-Premise)를 포함해서 다양한 환경에 있는 데이터베이스를

네이버클라우드 환경으로 마이그레이션 할 수 있습니다.

 

더불어 개발 및 테스트 등을 목적으로 데이터베이스를 추가로 구성해야하는 경우에도

Database Migration Service를 사용해서 쉽게 복제할 수 있습니다.

 

※ 단, 분산되어 있는 데이터베이스를 하나로 통합하는 작업은 동시에 진행할 수 없고 순차적으로 진행해야합니다.

 

 

- 그 외 서비스 특징

 

 

아래부터는 실습입니다.

=========================================================

=========================================================

 

[실습 환경]

이번 실습 목표는 같은 네이버 클라우드 플랫폼 계정의 클라우드 VM에 설치된 DB 데이터를

Private Subnet에 있는 CDB에 마이그레이션하는 것이 목표입니다.

 

CDB는 외부 통신을 확인하기 위해서 Nat Gateway를 연결했습니다.

 

OS : CentOS 7.8 64bit

 

subnet :

jaewoo-test-web (public subnet, 172.16.3.0/24)

jaewoo-natgw-subnet (public, NAT Gateway, 172.16.2.0/24)

jaewoo-cdb-private (private, 일반, 172.16.1.0/24)

 

Source DB 환경 : 같은 네이버 클라우드 계정에 생성된 Server VM

사설 IP : 172.16.3.6

Source DB Ver : mysql 8.0.34

 

Target DB 환경 : NCP Public VPC CDB 서비스

Target DB Ver : NCP CDB mysql 8.0.34

Target DB Subnet : Priavte Subnet

Nat Gateway : O (USE) -> 다른 클라우드 환경 or 온프레미스 환경에서의 공인 IP 마이그레이션 가능함을 확인하기 위함

 

====================================================================================================================

 

1. 소스 DB 서버 데이터 만들기

- 데이터 베이스 생성

mysql> CREATE DATABASE kang;

 

- 테이블 생성

- kanh 데이터 베이스 사용
mysql> use kang;

- 테이블 생성
mysql > CREATE TABLE mzc_member_table (
seq INT NOT NULL AUTO_INCREMENT,
mzc_id VARCHAR(20),
mzc_pw VARCHAR(20),
address VARCHAR(50),
phone VARCHAR(50),
PRIMARY KEY(seq)
) ENGINE=MYISAM CHARSET=utf8;


// 헉,, ! MYISAM 으로 만들어버렸네요 옥에티 아니냐구요?... 아닙니다!!! 에러를 확인하기 위해서 입니다. 😊
// 테스트 하실분은 INNODB 등 다른 엔진으로 만들어주시기 바랍니다.


- 테이블 구조 확인
mysql> desc mzc_member_table;
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| seq | int | NO | PRI | NULL | auto_increment |
| mzc_id | varchar(20) | YES | | NULL | |
| mzc_pw | varchar(20) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
| phone | varchar(50) | YES | | NULL | |
+---------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)


- 테이블 데이터 넣기
mysql > INSERT INTO 테이블명 (컬럼명) VALUES (데이터 값);
mysql > INSERT INTO mzc_member_table (seq,mzc_id,mzc_pw,address,phone) VALUES (1,'id-maesil','pw-maesil','Hanam','phone-number');

- 실수로 넣은 테이블 데이터 삭제
seq num 1인 데이터 삭제
mysql > DELETE FROM mzc_member_table where seq=1;
 

 

- 테이블 데이터 조회

 
사진 삭제

사진 설명을 입력하세요.

 

- 외부 접속 허용
CREATE USER 'root'@'%' IDENTIFED BY '비밀번호 ';


- 모든 데이터 베이스 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

 

 

==========================================================

클라우드 포털 작업은 일부 생략합니다.

Route table이나 ACG 설정이 궁금하시면 맨 아래에 있습니다.

 

- Database Migration Service 작업 생성

 

1. Endpoint Management 생성

Source DB Endpoint Management 정보를 기재하는 작업 단계입니다.

 

Entpoint URL은 IP 또는 도메인을 입력해야합니다.

DB User / Password 는 Source DB의 정보를 기재해 주도록 합시다.

2. Migration Management 작업 생성

Migration Management 작업에서 Test Connection 버튼을 눌러

Source DB <> Target DB 간 정상 통신되는지 확인 후 작업 만들어주시면 됩니다.

3. 소스 서버 사설 IP // 공인 IP로 2가지 옵션으로 마이그레이션 가능합니다.

다만, 공인 IP로 옮기는 경우는 CDB가 속해있는 Private Subnet이 Nat Gateway 연결되어 있어야 합니다.

 

 

4. Migration Service의 각종 작업 상태입니다.

준비중 / 진행중이 있구요, 각 작업을 눌러서 따로 "완료" 버튼을 누르지 않는 이상

계속 진행됩니다. CDB는 Write 불가한 상태가 되구요 참고 바랍니다.

 

 

CDB 서비스도 status도 마이그레이션 중이라고 나옵니다.

클릭했더니 회색 버튼이라 관련 매뉴는 모두 비활성화 되어 있었습니다.

Target DB(CDB)가 Write 불가한 상태로 되나보군요..

 

 

5. 테스트 시 난항을 겪었던 사항

 

MyISAM 엔진으로 되어있어서.. 테스트불가함 불가하네요./..

테스트 DB라 테이블 DB 엔진을 바꿔줬습니다.

 

- 테이블 DB 엔진 조회
mysql> SELECT engine FROM information_schema.TABLES where table_name='테이블명' AND table_schema='DB명';
mysql> SELECT engine FROM information_schema.TABLES where table_name='mzc_member_table' AND table_schema='kang';

+--------+
| ENGINE |
+--------+
| MyISAM |
+--------+

- mzc_member_table DB 테이블 변경
mysql> ALTER TABLE `mzc_member_table` ENGINE = INNODB;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

테이블 엔진 바꿔주니 DataBase Migration Service의
Test Connection 성공이 되네요... ㅋㅋㅋ
 

 

6. 결과입니다.

 

- CDB 원격 접속

mysql -h db-ib1gt.vpc-cdb.ntruss.com -uroot -p

 

- kang 데이터베이스가 마이그레이션 되었네요.

 

- 유저 엑세스 denied 관련 확인 내용

jaewookang 유저가에 대한 엑세스 권한이 없다고 나오네요

DataBase Migration 작업을 '완료'하지 않은 상태에서 조회했는데 CDB Write 불가 상태라 권한 없다고 나옵니다.

CDB 설정에서 jaewookang은 DDL로 모든 권한이 부여된 계정입니다.

 

## Database Migration Service의 작업을 완료로 변경하고 진행하니 엑세스 되는군요.

 

## Database Migration Service 작업 완료 후 조회 했을 때

 

## 당연한 얘기지만 , 네이버 클라우드 콘솔 포털에서도

CDB 데이터 베이스 정보가 동기화 된 상태입니다.

 

다시 한번 더 Database Mirgration Service를 이용해서 똑같은 DB를 옮기려고 햇더니

중복 DataBase는 옮겨지지 않는다고 하네요. 삭제 후 하던지 해야할거 같습니다.

 

7. 이왕 테스트하는 김에...

상품 설명에서 나와있듯이 DB 동기화가 되는지 확인을 해봤습니다.

(네이버 클라우드 콘솔에서 Database Migration Service "작업 완료"를 누르지 않는 이상

계속 동기화 되면서 마이그레이션이 될거로 생각됩니다.)

 

> CDB의 kang DB 삭제

> Database Migration Service를 사용해서 마이그레이션 작업 설정

> 소스 DB에 kang DB에 추가 데이터 Insert

 

- kang DB의 mzc_member_table에 추가 데이터 INSERT

mysql > INSERT INTO mzc_member_table (seq,mzc_id,mzc_pw,address,phone) VALUES (2,'id-maesil2','pw-maesil2','Hanam2','phone-number2');
mysql > INSERT INTO mzc_member_table (seq,mzc_id,mzc_pw,address,phone) VALUES (2,'id-maesil2','pw-maesil2','Hanam2','phone-number2');
mysql > NSERT INTO mzc_member_table (seq,mzc_id,mzc_pw,address,phone) VALUES (4,'id-maesil','pw-maesil4','Hanam4','phone-number4');

 

 

> 소스 DB에 cloud 데이터 베이스 생성

mysql > CREATE DATABASE CLOUD;

 

> Database Migration Service 마이그레이션 작업 완료 버튼 누르기

 

> 최종적으로 CDB에 데이터 정상적으로 이전 되었는지 확인 진행

CDB 원격 접속

#mysql -h db-ib1gt.vpc-cdb.ntruss.com -ujaewookang -p

 

- CLOUD 데이터베이스가 옮겨졌습니다.

 

- kang DB에 mzc_member_table Insert한 데이터도 정상적으로 동기화 된 것을 볼 수 있습니다.

 

 

7. 총평

- 마이그레이션 용 CDB를 한 개 더 생성하고 해야합니다.

(운영중인 DB에 하면 Write 상태가 되어서 위험할 것으로 판단됨)

 

- Private Subnet에 생성된 CDB도 Nat gateway Service 연결해주면 마이그레이션 가능하다.

 

- NCP Migration Service를 이용하지 않더라도 서버의 DB > NCP CDB의 데이터 마이그레이션 한 경험은 있지만

NCP 서비스에서 제공하는 서비스로 이전하는 경험이 처음이라 새로웠다, 앞으로 고객이 사용할 일이 있으면 해당 내용으로 잘 정리해서 고객의 기술 지원을 해줘야겠다.

 

 

8. 기타 클라우드 포털 설정 캡처

- route table 설정입니다.

- ACG 설정입니다.

* 모든 Outbounb는 ANY 설정되어 있습니다.

 

* CDB ACG

172.16.0.0/16 -> 내부 사설 IP 용으로 클라우드 자원간의 통신 용

 

* jaewoo-vpc-default-acg

해당 ACG는 클라우드 VM에 연결된 ACG 입니다.

소스가 설치된 DB 서버입니다.

 

172.16.3.6/32 -> 소스 DB 서버 사설 IP입니다.

110.165.16.13/32 -> 소스 DB 서버 공인 IP 입니다.

cloud-mysql-bgavw(12264) 3306 -> ACG 자원으로 열어줄 때 형식입니다.

 

 

- 소스 DB 서버 <> CDB 사설 ip 통신 (확인)

- 소스 DB 서버 <> CDB 공인 ip 통신 (확인)

 

nat gateway route table 정보를 삭제하니 공인 IP 통신이 안돼는 모습.

 

 

====================================================================================================================================================

 

<추가 내용입니다.>

 

- 메일 / SMS로도 Cloud 마이그레이션 진행 현황이 온다고 합니다.

- 아래 내용 참고해주세요 저는 SMS 는 따로 안왔고 메일로만 왔네요.. !

 

 

* 마이그레이션 상태 정보

- Export completed : Source DB 에서 DB 백업 완료

- Import completed : 백업 파일을 Cloud DB에 Import 완료

- Migration completed : Source DB 와 Cloud DB Replication 지연이 60초 미만으로, DB 서비스 이전이 가능한 상태 (서비스 이전시간에 최종 점검 필요하며 이전을 위해서는 콘솔의 [완료] 버튼을 클릭해주시기 바랍니다.)

- Migration Error : 마이그레이션 작업중 오류가 발생한 경우 (상세한 오류 내용은 콘솔을 통해서 확인해주세요.)