DMS (EC2 mysql to RDS)

Volc·2024년 2월 1일
0

AWS

목록 보기
5/6

목표

  • DMS를 통해 EC2 mysql에서 RDS mysql로 데이터를 migration 한다.

Mysql 설치

  • 우선 EC2를 생성해 myqsl을 설치해보자.
  • EC2 인스턴스 설정
    • 이름 설정
    • OS : Amazon Linux 프리티어
    • 인스턴스 유형 : 프리티어
  • 터미널 환경에 접속하여 mysql을 설치한다.
sudo yum install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

sudo yum install mysql-community-server
  • mysql을 실행시킨다.
sudo systemctl enable mysqld

sudo systemctl start mysqld
  • 초기 비밀번호를 알아야 한다.
sudo grep 'temporary password' /var/log/mysqld.log
  • root로 접속해본다.
mysql -u root -p
  • root 비밀번호를 변경한다.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bigdata12!@';
  • test 계정을 만든다.
create user 'test'@'%' identified by 'Bigdata12!@';
  • test 계정에 모든 권한을 부여한다.
grant all privileges on *.* to 'test'@'%';

FLUSH PRIVILEGES;
  • db를 생성한다.
create database testdb;
  • table을 만든다.
use testdb;

CREATE TABLE member_table (
 NAME    VARCHAR(20),
 AGE     INT,
 PRIMARY KEY(AGE)
) ENGINE=MYISAM CHARSET=utf8;
  • mysql을 나와 table에 데이터를 넣어주는 python script를 작성합니다.
import pymysql
import time


jh_db = pymysql.connect(
    user="test", 
    passwd="Bigdata12!@", 
    host="127.0.0.1", 
    db="testdb", 
    port=3306,
    charset='utf8'
)

cursor = jh_db.cursor(pymysql.cursors.DictCursor)
  
def insertsql():
    sql_query = """INSERT INTO member_table(NAME, AGE) VALUES (%s, %s)"""
    i = 0
    while i < 100:
        i = i + 1
        cursor.execute(sql_query,('jh'+str(i), i))
        jh_db.commit()
        time.sleep(1)
    jh_db.close()

    
if __name__ == "__main__":
    insertsql()
  • pymysql 라이브러리를 설치합니다.
sudo yum install python3-pip
pip install pymysql
  • python script를 실행한다.
python3 sc.py

인바운드 규칙 설정

  • EC2의 보안그룹에 들어가 인바운드 규칙에 3306을 추가합니다.

RDS 생성

  • 엔진 유형은 mysql을 선택
  • 템플릿 : 개발/테스트
  • 가용성 및 내구성 : 단일 DB 인스턴스
  • 암호 설정

DMS 생성

  • DMS 페이지에 들어가 복제 인스턴스를 생성한다.
    • 이름 설정
    • 고가용성 : 개발 또는 테스트
  • 서브넷 그룹을 생성합니다.
    • 이름 설정
    • VPC 선택
    • 서브넷 추가
      • 2개를 골라야 한다.
  • source 엔드포인트 생성
    • 엔드포인트 식별자 : endpoint-source
    • 소스엔진 : mysql
    • 수동으로 액세스 정보 제공 체크
    • 서버 이름 : ec2 private dns 주소
    • 포트 : 3306
    • 사용자 이름 : 사용 db 이름
    • 암호 : db 암호
  • destination 엔드포인트 생성
    • 엔드포인트 식별자 : endpoint-dest
    • RDS DB 인스턴스 선택
    • RDS 인스턴스 선택
    • 암호 입력
  • 설정을 다 했으면 연결 테스트를 각각 해본다.
  • 데이터베이스 마이그레이션 태스크 생성
    • 태스크 식별자
    • 복제 인스턴스 설정
    • 소스 데이터베이스 설정
    • 대상 데이터베이스 설정

엔드포인트 source 생성

  • 소스엔진 : mysql
  • 수동으로 액세스 정보 제공
  • 서버이름 : ec2 private dns 주소
  • 포트 : 3306
  • 사용자 이름 : 사용 db 이름
  • 암호 : db 암호
  • 생성

엔드포인트 destination 생성

  • 대상 엔드포인트
  • rds db 인스턴스 선택
  • rds 인스턴스 선택
  • 암호 입력
  • 생성

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

  • 위에서 만든 복제 인스턴스, 소스 데이터베이스, 대상 데이터베이스를 선택
  • 선택 규칙에서 규칙 추가
  • 스키마 이름을 testdb
  • 테이블 이름을 % 와일드 카드로 함

테스크를 활성화하여 성공하면 로드 완료라고 뜬다.

https://dev-kwon.tistory.com/78
https://1mini2.tistory.com/86
https://velog.io/@joshua_s/AWS-DMS%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98-%EC%84%9C%EB%B9%84%EC%8A%A4

profile
미래를 생각하는 개발자

0개의 댓글