연랩

AWS cloud를 이용한 데이터 마이그레이션(Data Migration) 본문

프로젝트

AWS cloud를 이용한 데이터 마이그레이션(Data Migration)

parkjiyon7 2024. 10. 14. 01:19

프로젝트 배경

 

-클라우드 기술에 대해 접하게 되면서 해당 기술을 활용하고 공부해보고자 주제로 선정

-클라우드는 실제 IT 인프라를 관리하지 않고도 정보를 관리할 수 있다는 장점이 있으며, 이를 활용하고자 함

-클라우드를 제대로 활용하기 위해서는 on-premise의 데이터를 클라우드로 옮기는 data migration이 필요하다는 것을 알게 됨

-가장 큰 클라우드 회사인 AWS의 클라우드와 DMS(Data Migration Service)를 활용하여 해당 프로젝트를 진행

 

주요 역할과 경험

 

- AWS EC2(Ubuntu)에 생성한 MySQL DB를 AWS RDS MySQL Database 로 migrate (동종 migration)

- AWS EC2(Ubuntu)에 생성한 Maria DB를 AWS RDS MySQL Database 로 migrate (이종 migration)

- Migration을 위한 포트 및 네트워크 설정

- On-premise sample DB 생성

- 프로젝트에 대한 발표와 시현 진행

 

프로젝트 내용

- On-premise의 데이터를 다양한 방법으로 AWS cloud(RDS)로 migrate(동종 migration, 이종 migration)

- Migration이 가능한 웹페이지 제작

 

데이터 마이그레이션(Data Migration)이란?

 

: 한 컴퓨팅 환경이나 스토리지 시스템에서 다른 컴퓨팅 환경이나 스토리지 시스템으로 데이터를 이동하는 것

즉, 데이터를 원하는 곳으로 이동하는 것이다. 본 프로젝트는 "클라우드(AWS RDS)"로의 migration을 목표로 하였다.

 

 

동종 데이터 마이그레이션(Data Migration)

 

AWS EC2(Ubuntu)에 생성한 MySQL DB(On- premise database)를 AWS RDS MySQL Database 로 migrate하는 것을 담당하였다.

 

On-premise database: AWS EC2 MySQL DB ->  AWS RDS MySQL Database

 

EC2를 활용하여 소스 데이터베이스로 MySQL database 구축하고, AWS DMS를 통해 데이터를 AWS RDS로 마이그레이션 한다. 이 방식을 선택함으로써 VPC 구성에 대한 번거로움을 피할 수 있었다.

 

동종 마이그레이션 수행 과정

 

1. EC2 server 생성 및 MySQL 설치

 

 

- EC2 서버를 생성하면서 키 생성이 가능하다. 이후, 해당 키와 Public IP를 사용하여 putty로 EC2(Ubuntu)를 접속하여 MySQL을 설치한다.

- MySQL에 접속이 가능하도록 user id를 생성하고 사용자 권한을 부여한다.

- EC2의 public ip를 사용하여 EC2의 SSH에 접근한다

- MySQL 접근 구성 파일을 변경하여 외부로 부터의 접속이 가능하도록 파일을 변경한다

(ubuntu 에서는 /etc/mysql/mysql.conf.d/mysqld.cnf 의 bind ip 변경)

 

 

2. EC2 Server Port 열기 MySQL 접근 권한 제공

 

- DMS의 RI(복제 인스턴스)에서 EC2에 접속하여 데이터를 읽어올 수 있도록 MySQL port 인 3306 port를 오픈 한다.

- 그 외에 SSH에 접근이 가능하도록 22번 포트가 열려있는 지 확인한다.

(이게 안 열려 있으면 MySQL 설치도 불가능했을 것)

 

 

3. DMS Replication Instance 생성

 

- DMS RI(복제 인스턴스)를 생성한다.

 

 

4. Source endpoint 생성

 

- Source end point를 생성하고 Connection test를 수행한다. Success가 나올 경우 복제 인스턴스와 소스 포인트의 연결이 완료되었음을 알 수 있다.

 

 

5. Target DB(RDS) 생성

 

- 데이터를 옮길 Target database를 생성한다. 해당 프로젝트의 경우 Amazon RDS for MySQL DB instance를 Target Database로 선정하여 진행하였다

 

 

6. Target endpoint 생성

 

 

-  Target end point를 생성하여 Connection을 확인한다. 이도 아까와 마찬가지로 "Success" 상태임을 확인하여야 한다.

 

7. DB Migration Task 생성

 

- Migration을 할 데이터를 설정한 뒤 DB migration task를 생성하고, migration을 수행한다.

 

 

8. EC2의 MySQL에서 전송할 Sample data 생성

 

- DMS migration을 통해 전송할 data를 MySQL를 통해 생성하였다.

- 인터넷에 있는 Sample Data를 활용하여도 되나, 직관적으로 데이터 전송이 제대로 완료되었는 지 확인하기 위하여 직접 작은 데이터를 만들어 확인하였다.

 

 

9. DB migration task 성공 확인

- 전송이 완료되었음과 전송 상태를 확인한다. EC2의 MySQL에서 생성한 table의 data 3개의 전송이 완료되었음을 보여준다

 

 

10. EC2에서 원격으로 RDS MySQL 접속하여 데이터 확인

 

- EC2에서 원격으로 RDS의 MySQL에 접속하여 전송된 data를 확인한다.

(RDS 주소가 있으면 원격으로 접속 가능, 보안을 위해 가려놓았지만 RDS로 접속)

- 생성한 데이터와 전송받은 데이터가 문제없이 도착 했음을 확인한다면, Data Migration이 완료되었음을 알 수 있다.

 

 

 

이종 데이터 마이그레이션(Data Migration)

 

AWS EC2(Ubuntu)에 생성한 Maria DB(On- premise database)를 AWS RDS MySQL Database 로 migrate하는 것을 담당하였다.

 

On-premise database: AWS EC2 Maria DB ->  AWS RDS MySQL Database

 

- AWS에서의 RDS(Target Database) 생성, DMS를 위한 RI 생성, 엔포인드 생성은 위에 제시된 내용과 동일하다.

- Bind IP를 RI의 IP로 한정하여도 마이그레이션이 성립되는 것을 확인

- Open source로 제공되는 sample data(employees)를 웹에서 다운로드 받아 전송되는 것으로 확인함으로서 일정 수준의 양의 데이터도 migrate 되는 것을 확인

 

 

이종 마이그레이션 수행 과정

(위와 동일한 부분의 절차는 생략하였다)

 

1. MariaDB에서 MySQL로의 마이그레이션 - MariaDB 설치 및 파일 변경

 

- 경로: /etc/mysql/mariadb.conf.d/50-server.cnf

- Bind ip 0.0.0.0로 변경한다. Bind ip는 접근을 허용하는 아이피이다. 위에 MySQL 파일을 변경하였던 것과 마찬가지로 여기서도 bind ip를 변경해주어야 한다.

 

 

2. EC2의 MySQL에서 전송할 Sample data 생성

 

- MariaDB에서 간단한 data table을 생성한다. 이는 마이그레이션을 위한 data이다.

 

 

3. DMS endpoint 생성 후 migration task 수행

 

-Source, target endpoint 생성 및 확인, RI생성 및 확인, migration task 수행 후 확인 절차는 위와 동일하다. 

 

 

4. EC2에서 원격으로 RDS 접속하여 데이터 확인

 

- 원격으로 AWS의 RDS에 접속하여 전송된 data table이 제대로 migrate되었는지를 확인한다.

 

 

 

IP 제한을 건 후 MariaDB에서 RDS의 MySQL로의 migration,

Migration data: Sample Data인 employees 활용(git clone으로 다운로드)

 

- 여기에서는 모든 ip를 접근 가능하게 하였던 위와 달리, bind ip를 RI의 아이피로 설정하여, RI 이외의 접근을 방지한다.

 

아래에서 RI(복제 인스턴스)의 IP를 확인할 수 있다

 

복제 인스턴스 IP로 일치하여 제한한 것을 보여주고 싶은데...보안상의 문제로 IP를 다 가려놓아야 하는 것이 슬프다..ㅠ

(그래서 초록색 상자로 된 IP는 다 같다고 생각하고 보면 된다)

 

이후, 아까 bind ip를 바꾸어주었던 경로에서, 0.0.0.0으로 변경하였던 것을 RI IP로 MariaDB bind ip 변경해준다

 

이는 MariaDB에서 접근을 허용하는 ip, 즉, Bind ip를 RI의 ip로 설정하여 복제 인스턴스 외의 접근을 방지한다.

 

다음으로, EC2의 inbound rule을 변경하여 준다

 

EC2 inbound rule또한 RI ip로 한정하였음을 알 수 있다.

 

이제, Migrate된 Data와 Local의 데이터를 비교하면 된다. 이번에는 조금 더 양이 많은 데이터도 옮길 수 있음을 확인하기 위해 employees data를 활용하였다.(MySQl 제공)

 

Local에 data가 다운받아졌는 지를 확인하면 다음과 같다

 

employees data가 다운로드 되어있음을 확인할 수 있다.

다음으로, RDS로 원격 접속하여 data가 잘 도착하였는 지 확인하면 된다.

 

위와 같이 데이터가 잘 도착했음을 알 수 있다.

 

 

그 밖에...

 

그 밖에도 window on-premise에서 AWS RDS로 데이터를 옮기는 이종, 동종 마이그레이션 또한 수행하였으며, 이를 하기 위해서는 windows 자체의 방어막을 뚫기 위해 포트 포워딩 등 많은 노력이 필요하였다. 이를 잠깐 살펴 보면 다음과 같다

포트포워딩
On-premise data
Migrated RDS data

 

또한, AWS DMS를 사용한 것 이외에도 DB 자체의 export, import 기능을 활용한 migration을 수행해 보았다. 텍스트 편집기를 활용하여 script file을 변경하면, 이종 migration 또한 가능하다는 사실을 확인하였다(Oracle -> RDS MySQL)

 

마지막으로, 이를 활용하여 migration 기능을 수행할 수 있는 웹 페이지를 구현해 보았다

 

 

웹 페이지에서 사용자로부터 RDS endpoint, master name, master password, DB name, path of local pc script file을 입력 받으면 손쉽게 migration을 수행할 수 있다. Node.js를 활용하여 서버에서는 사용자로부터 받은 입력값으로 MySQL import 명령어를 생성하고 실행하여 DB에 import를 수행하였다.

 

뿐만 아니라, local 우분투에서도 migration을 수행하여 보았다.

 

 

간단한 후기

 

익숙한 사람에게는 간단히 해결할 수 있는 문제들도 처음 수행해 보는 입장에서는 버거운 일들이 많았다. 그래도 클라우드에 대해서도 공부하고 접할 수 있는 좋은 기회였다고 생각한다. local 우분투에서 migration을 하는 것은 생각보다 쉽지 않았다. 일반 ubuntu 컴퓨터에서 했으면 훨씬 수월했을 지 모르겠으나, 우리는 window 위에 깔린 가상머신 ubuntu에서 해당 작업을 수행했기 때문에 난항을 겪었다. EC2위에서 성공한 나도 참여했으나, window와 가상 머신 사이의 bridge?를 설정해야 하는 등 또 다른 고충이 있어서 힘들었다. (저 bridge 설정 잘못하면 가상머신이 아예 안켜지는 수가 있으니, 혹시라도 시도하실 분들은 꼭 주의하시길 바랍니다....)

그래도 새로운 tool을 접하고 활용할 수 있는 유용한 경험이었다.

 

출처

 

[1] MySQL Documentation Team, "MySQL Employee Sample Database: Installation," MySQL, 2015. [Online]. Available: https://dev.mysql.com/doc/employee/en/employees-installation.html. [Accessed: 14-Oct-2024].

[2] Amazon Web Services, Inc., "AWS Database Migration Service (DMS) – Amazon Web Services," Amazon, 2024. [Online]. Available: https://aws.amazon.com/ko/dms/. [Accessed: 14-Oct-2024].

[3]"Advantages of Cloud Computing," Google Cloud. [Online]. Available: https://cloud.google.com/learn/advantages-of-cloud-computing?hl=ko.

 

-If any problem for references, or any questions please contact me by comments.

-This content is only for recording my studies and personal profiles

 

본문의 내용은 학습과 개인 profile 이외의 다른 목적이 없습니다

상업적인 용도로 사용하는 것을 금합니다

본문의 내용은 2023-2 캡스톤종합프로젝트1 학습자료 및 학습 내용을 담고 있습니다.

반응형