์์ ์
- ๋ชฉํ : On-premise DB์๋ฒ๋ฅผ AWS์ RDS๋ก Migrationํ๊ธฐ
- ์ฌ๊ธฐ๋ฅผ ๋๋ฌ ๊ธฐ๋ณธ VPC & EC2 ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์๋ค.
- ์ด ํฌ์คํ ์ DMS์ ๋ํ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ On-premise to RDS ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํ ์ต์ํ๊ฒฝ์ผ๋ก ๊ตฌ์ฑํ์๋ค.
DMS๋?
- DMS๋? : ๊ฐ์ข ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ DMS๋ฅผ ์ฌ์ฉํ์ฌ AWS Cloud๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ฑฐ๋, ์จ-ํ๋ ๋ฏธ์ค ์ธ์คํด์ค ๊ฐ์(AWS ํด๋ผ์ฐ๋ ์ค์ ์ ํตํด) ๋๋ ํด๋ผ์ฐ๋์ ์จ-ํ๋ ๋ฏธ์ค ์ค์ ์ ์กฐํฉ ๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋ค.
- DMS๋ Free-Tier๋ฅผ ์ ๊ณตํ์ง ์๋ ์๋น์ค์ด๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ์ ๊ณผ๊ธ์ด ํ์ํ๋ค. (์ค์ต๋ง ์งํํ๊ณ ์ญ์ ํ๋ฉด 1$ ์ด๋ด๋ก ๊ฐ๋ฅํ๋ค)
- DMS Migration์ ๊ฐ๋จํ๊ฒ ํํํ์๋ฉด ๊ธฐ์กด DB์ ๋ฐ์ดํฐ๋ฅผ ์ DB์ ์ฎ๊ฒจ์ฃผ๋ ์ด์ฟ์ง ์ผํฐ๋ผ๊ณ ์๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
๊ธฐ์กด DB (Origin DB)
- ๊ธฐ์กด ์ด์์ค์ธ DB์๋ฒ ์ญํ ์ ํ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค. - ๊ธฐ์กด์ ์ด๋ ์ง
- DB์๋ฒ๋ ๋ณดํต Private๊ณต๊ฐ์์ ์ด์๋๋๋ฐ DMS๋ IP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Origin DB์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ DMS๋ฅผ ์ํด ์ ์ ๊ณต์ธ IP๋ฅผ ์ค์ ํด์ค ๊ฒ์ด๋ค.
- DB์๋ฒ์ ๊ณต์ธ IP๋ฅผ ์ค์ ํ์ง ์๊ณ DB๋ฅผ Migrationํ๋ ค๋ฉด AWS Direct Connect ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ VPN์ ๊ตฌ์ถํด ์งํํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
Origin DB ์ค์
- EC2 ์ธ์คํด์ค์ SSH ์ ์ (MobaXterm ์ฌ์ฉ)
- Maria DB ์ค์น ๋ฐ ๋ฐ๋ชฌ ์คํ
yum -y install mariadb mariadb-devel mariadb-server
- MariaDB ์ด๊ธฐ ์ค์
[root@localhost ~]# mysql_secure_installation Enter current password for root (enter for none): [ํจ์ค์๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ํฐ] Set root password? [Y/n] Y [DB ROOT ํจ์ค์๋ ์ค์ ] New password: ํจ์ค์๋ ์ ๋ ฅ Re-enter new password: ํจ์ค์๋ ์ฌ์ ๋ ฅ Remove anonymous users? [Y/n] Y [์ต๋ช ์ ์ ๊ทผ์ ๋ง์ ๊ฒ์ธ์ง? ๋ณด์์ ์ํด Y ์ํฐ] Disallow root login remotely? [Y/n] Y [DB ROOT ์๊ฒฉ์ ๋ง์ ๊ฒ์ธ์ง? ๋ณด์์ ์ํด Y ์ํฐ] Remove test database and access to it? [Y/n] Y [Test ์ฉ์ผ๋ก ์์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ ๊ฒ์ธ๊ฐ? Y ์ํฐ] Reload privilege tables now? [Y/n] Y [ํ์ฌ ์ค์ ํ ๊ฐ์ ์ ์ฉํ ๊ฒ์ธ์ง? ๋น์ฐํ Y ์ํฐ] Thanks for using MariaDB! [์๋ฃ]
- MariaDB ์ ์
- DMS๋ฅผ ์ํ ์ ์ ์์ฑ
create user 'dms'@'%' identified by 'dms';
- ID/PW ๋๋ค dms์ด๋ค.
- @๋ค์ 'localhost'๋ฅผ ์ ๋ ฅํ๋ฉด ๋ด๋ถ์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ ์ ์ ์ง๋ง '%'๋ฅผ ์ ๋ ฅํ๋ฉด ๋ชจ๋ IP์์ ์ ์ ๊ฐ๋ฅํ๋ค.
- TEST DB ์์ฑ
CREATE DATABASE DmsTest; # DB์์ฑ SHOW DATABASES; # ์์ฑํ์ธ
- ์์ฑํ DB๋ฅผ ์ ํํ๊ณ Table ์์ฑ
USE DmsTest CREATE TABLE cloudest ( name char(20) NOT NULL PRIMARY KEY, city char(20) NOT NULL, age int NOT NULL);
- INSERT INTO ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ถ๊ฐ
INSERT INTO cloudest VALUES('ํ๊ธธ๋','Seoul',11); INSERT INTO cloudest VALUES('LAR','Seoul',20);
- SELECT ๋ฌธ์ ์ฌ์ฉํด ๋ฐ์ดํฐ ์กฐํ ํ MariaDB ์ข
๋ฃ
SELECT * FROM cloudest; exit
- dms ์ ์ ์๊ฒ DmsTest DB์๋ํ ๊ถํ ๋ถ์ฌ
- ์ด๋ ๊ฒ ์์ฑํ ๋ฐ์ดํฐ๋ค์ด DMS๋ฅผ ํตํด RDS๋ก Migration๋๋์ง ํ์ธํ ๊ฒ์ด๋ค.
- Origin DB ๊ตฌ์ฑ ์๋ฃ
DB Migration
RDS ์์ฑ - ์ด์ฌ๊ฐ ์ง
- Migration ๋์ด์ง ๊นกํต DB๋ฅผ ์์ฑํ๋ค.
- RDS๋ Free-Tier๋ฅผ ์ง์ํ๋ค.
- DB ์ธ์คํด์ค ์ด๋ฆ์ ์ค์ ํด์ฃผ๊ณ DB ๊ธฐ๋ณธ User์ ID/PW๋ฅผ ์ง์ ํ๋ค.
- VPC, ๋ณด์๊ทธ๋ฃน์ ์ง์ ํ๋ค.
- ์ด๊ธฐ DB ์ด๋ฆ์ ์ง์ ํด์ค๋ค. (์ง์ ํ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ ์ ์์)
- RDS์ ์๋ํฌ์ธํธ ์ฃผ์ ํ์ธ :
rds.cyz5dsu0yyms.ap-northeast-2.rds.amazonaws.com
- EC2 ์ธ์คํด์ค์์ RDS์ ์ ์
mysql -u admin -p -h rds.cyz5dsu0yyms.ap-northeast-2.rds.amazonaws.com
- EC2 ์ธ์คํด์ค์์ RDS์ ์ ์ํด ์ด๊ธฐ DB์ํ ํ์ธ
- RDS ์์ฑ ์๋ฃ
์๋ธ๋ท ๊ทธ๋ฃน ์์ฑ
- DMS ์ฝ์ → ์๋ธ๋ท ๊ทธ๋ฃน → ์๋ธ๋ท ๊ทธ๋ฃน ์์ฑ
- ์กด์ฌํ๋ ํผ๋ธ๋ฆญ ์๋ธ๋ท์ ์ ํํ๊ณ ์๋ธ๋ท๊ทธ๋ฃน์ ์์ฑํ๋ค.
- ์๋ธ๋ท์ ๊ผญ IGW๋ฅผ ํตํด ์ธ๋ถ์ ํต์ ํ ์ ์์ด์ผ ํ๋ค.
- ์๋ธ๋ท ๊ทธ๋ฃน ์์ฑ ์๋ฃ
๋ณต์ ์ธ์คํด์ค ์์ฑ - ์ด์ฟ์ง ์ผํฐ
- ๋ณต์ ์ธ์คํด์ค๋ ๊ณผ๊ธ์ด ๋๋ค. DMS ์ค์ต ํ ๊ผญ ์ญ์ ํด์ผํ๋ค.
- DMS ์ฝ์ → ๋ณต์ ์ธ์คํด์ค → ๋ณต์ ์ธ์คํด์ค ์์ฑ
- ์ด๋ฆ, ํด๋์ค, VPC๋ฑ์ ์ ํํด์ค๋ค.
- ์๋ธ๋ท๊ทธ๋ฃน, ๋ณด์๊ทธ๋ฃน ๋ฑ์ ์ง์ ํ ํ ์์ฑ
- ๋ณต์ ์ธ์คํด์ค ์์ฑ ์๋ฃ
Source Endpoint ์์ฑ
- DMS ์ฝ์ → ์๋ํฌ์ธํธ → ์๋ํฌ์ธํธ ์์ฑ
- ์์ค ์๋ํฌ์ธํธ ์ ํ
- ์๋ํฌ์ธํธ ๊ตฌ์ฑ
- ์๋ํฌ์ธํธ ์๋ณ์ = ์๋ํฌ์ธํธ ์ด๋ฆ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ธ์ค๋ฅผ ์๋์ผ๋ก ์ก์ธ์คํ๋ค.
- ์๋ฒ ์ด๋ฆ์๋ DB๊ฐ ์กด์ฌํ๋ Public IP๋ฅผ ์ ๋ ฅํ๋ค.
- ํฌํธ๋ MariaDB์ ํฌํธ 3306 ์ ๋ ฅํ๋ค.
- ์ฌ์ฉ์ ์ด๋ฆ, ์ํธ๋ ๋ชจ๋ IP๊ฐ ์ ๊ทผํ ์ ์๋ ์ฌ์ฉ์๋ก ์ ๋ ฅํ๋ค. (root๊ณ์ ์ defualt๋ก localhost๋ง ์ ๊ทผ๊ฐ๋ฅ)
- ์ตํ๋จ์ ์๋ํฌ์ธํธ ์ฐ๊ฒฐํ
์คํธ ์งํ ํ successful์ด ๋์จ ๊ฒฝ์ฐ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ด๋ค.
- ์ด ๋์ค์ง ์์๊ฒฝ์ฐ
- DMS,EC2์ 3306 ํฌํธ๊ฐ ์ด๋ ค์๋์ง ํ์ธ
- DB, IP์ ๋ณด๊ฐ ์ ์ ๋ ฅ๋์๋์ง ํ์ธ
- DB user ์์ฑํ ๋
create user 'dms'@'%' identified by 'dms';
์ ๊ฐ์ด '%'๋ฅผ ์ ์ฉํ๋์ง ํ์ธ
- ์๋ธ๋ท์ ์ธํฐ๋ท ํต์ ์ฑ ํ์ธ
- successful์ด ๋์ค์ง ์์๋ ํ ์คํธ๋ฅผ ์งํํ๋ ์๊ฐ ์๋ํฌ์ธํธ๋ ์์ฑ๋๋ค. ์๋ชป ์ค์ ํ์ฌ ์์ฑ๋ ๊ฒฝ์ฐ ๊น๋จน์ง ๋ง๊ณ ์ญ์ ํ๊ธฐ
- ์ด ๋์ค์ง ์์๊ฒฝ์ฐ
- ์์ค ์๋ํฌ์ธํธ ์์ฑ ์๋ฃ
Target Endpoint ์์ฑ
- Target์ RDS์ด๋ค. DMS๋ ๋์ผ AWS ๋ด์ ์กด์ฌํ๋ RDS๋ฅผ ์๋ ์ง์ ํ ์ ์์ด์ Source๋ณด๋ค ํธ๋ฆฌํ๊ฒ ์์ฑํ ์ ์๋ค.
- ์๋ํฌ์ธํธ ๊ตฌ์ฑ
- ์๋์ผ๋ก ์ก์ธ์ค ์ ๋ณด ์ ๊ณต์ผ๋ก ๋ณ๊ฒฝ ํ RDS PW๋ง ์ ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
- ์๋ํฌ์ธํธ ์ฐ๊ฒฐ ํ
์คํธ
- Source ์๋ํฌ์ธํธ์ ๋ฌ๋ฆฌ Target RDS๋ ๋น๊ต์ ์ค๋ฅ๋ฐ์์ด ์ ๊ฒ successful์ด ๋ฌ๋ค
- ํ๊ฒ ์๋ํฌ์ธํธ ์์ฑ ์๋ฃ
DB Migration Task - ์ด์ฌํ๊ธฐ
- DMS ์ฝ์ → ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ํ์คํฌ → ํ์คํฌ ์์ฑ
- ๋ณต์ ์ธ์คํด์ค ๋ฐ ์๋ํฌ์ธํธ ์ง์
- ํ์คํฌ ์ค์ ์ ๊ฐ๋จํ๊ฒ ์งํํ๊ธฐ ์ํด ์ต์ํ์ ์ ํ
- ํ
์ด๋ธ ๋งคํ ์ค์
- ์ ์ ํ ๊ท์น ์ถ๊ฐ
- ํ
์ด๋ธ ์ด๋ฆ์
clou%
๋ clou๋ก ์์ํ๋ ๋ชจ๋ ํ ์ด๋ธ์ Migrationํ๋ค๋ ์ต์ ์ ์ฃผ๋ ๊ฒ
- ํ์คํฌ ์์ฑ → ์๋์ผ๋ก Migration ์งํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ํ์คํฌ ์์ฑ ์๋ฃ
๊ฒฐ๊ณผ ํ์ธ
DB Mirgation ํ์คํฌ ๊ฒฐ๊ณผ
- ํ์คํฌ๊ฐ ์ ์์ ์ผ๋ก ์งํ๋๋ฉด ์๋์ ๊ฐ์ด ๋์จ๋ค.
- EC2 ์ธ์คํด์ค์์ RDS์ ์ ์
mysql -u admin -p -h rds.cyz5dsu0yyms.ap-northeast-2.rds.amazonaws.com
- Migration ํ์ธ
- Database ํ์ธ
show databases;
๋ช ๋ น์ ์ฌ์ฉํ์ ๋ DmsTest DB๊ฐ ์๋ก ์๊ธด๊ฑธ ํ์ธํ ์ ์๋ค.
- Table ํ์ธ
- ์๋ ๋ช
๋ น์ ์ฌ์ฉํด ํ
์ด๋ธ ํ์ธ
use DmsTest show tables;
- ์๋ ๋ช
๋ น์ ์ฌ์ฉํด ํ
์ด๋ธ ํ์ธ
- Data ํ์ธ
select * from cloudest;
๋ช ๋ น์ผ๋ก dataํ์ธ
- Database ํ์ธ
- ๊ฒฐ๋ก : ํ ์คํธ๋ฅผ ์ํด ์์ฑํ cloudest ํ ์ด๋ธ ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก Migration ๋์๋ค.
๊ฒฐ๊ณผ ํ์ธ ํ ์ญ์ ์์
- DMS
- DB ๋ง์ด๊ทธ๋ ์ด์ ํ์คํฌ ์ญ์
- 2๊ฐ์ ์๋ํฌ์ธํธ ์ญ์
- ๋ณต์ ์ธ์คํด์ค ์ญ์ (ํ๋ฆฌํฐ์ด๊ฐ ์๋๋ผ์ ๋น์ฉ ๋ฐ์)
- ์๋ธ๋ท ๊ทธ๋ฃน ์ญ์
- RDS
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ญ์
- ์ค๋ ์ท์ด ์๋ค๋ฉด ์ญ์
- EC2
- OriginDB ์ธ์คํด์ค ์ญ์
- DMS
๊ฒฐ๋ก
- DMS๋ฅผ ํตํด On-Premise์ MariaDB๋ฅผ RDS์ MariaDB๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ค.
- DB์ ๋จ์ Migration ๋ฟ๋ง ์๋๋ผ ์กฐ๊ฑด์ ์ฃผ์ด ์ํ๋ ๊ฐ๋ง Migrationํ๊ฑฐ๋ ๋ณต์ ๋์ค ๊ฐ์ ๋ณํํ์ฌ Migration ํ๋ ๋ฑ์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ DMS์ ๋ํ ์ฌ์ฉ๋ฒ์ ์ตํ๋ค.
Uploaded by Notion2Tistory v1.1.0