Cloud/AWS

[AWS] DMS - Source MySQL 데이터베이스 설정

Jen'_' 2021. 7. 21. 22:46
반응형

 

DMS란?

  • Data Migration Service
  •  관계형 데이터베이스, 데이터 웨어하우스, NoSQL 데이터베이스 및 기타 유형의 데이터 저장소를 쉽게 마이그레이션할 수 있는 클라우드 서비스입니다. 

 

DMS 구성도

소스를 타겟으로 바로 마이그레이션 하는 것이 아니라 복제 인스턴스를 통해 마이그레이션을 합니다


Linux2 인스턴스

  1. Mariadb을 install하고 스키마와 테이블을 생성합니다
  2. 보안그룹 포트 3306을 열어줍니다(Source EndPoint에 설정한 포트)
1
2
3
4
5
6
7
8
$ yum install mariadb-server
$ service mariadb start
$ systemctl enable mariadb.service
 
$ mysqladmin -u root -p password 'abc123'
Enter password: 그냥 엔터
$ mysql -u root -p
Enter password: 설정한 비밀번호
cs

 

 

※ 참고, mysql5.7 설치방법

1
2
3
4
5
6
7
8
$ yum update
$ yum install wget
$ yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
$ yum -y install mysql-community-server
 
$ systemctl start mysqld
$ systemctl enable mysqld
$ mysql_secure_installation # 기본적인 보안설정(루트 비번만 바꾸고 나머진 y)
cs

 

 

"지속적인 변경 사항 복제"를 하기 위해선 이진 로그 활성화와 binlog_format을 ROW로 바꿔야 합니다.

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

 

 

 

$ vi /etc/my.cnf

log-bin=VALUE를 넣으면 이진 로그가 활성화됩니다 VALUE에는 파일 이름을 임의로 적으면 됩니다 

binlog_format도 row로 설정해줍니다

 

Binary Log(binlog)

binlog는 서버내에서 발생되는 모든 변경내역이 기록되는 파일입니다.

PIT(시점 복구)와 리플리케이션에 필수 요소이며 이 2가지 기능을 쓰지 않는다면 굳이 활성화할 필요는 없습니다.

빈로그를 쓰는 것 자체가 미세하지만 IO 부담을 가중시키기 때문입니다.

 

binlog_format 종류

  • STATEMENT : 버전 5.7.6까지 디폴트 값입니다.(그 이후 버전부터는 ROW) 쿼리문으로 기록되기 때문에 용량을 적게 차지하고 버전 특성을 타지 않습니다. 하지만 복구 시 일관된 데이터에 대한 보장이 적습니다.
  • ROW : 쿼리문이 아닌 변경된 데이터 기반으로 기록됩니다. 용량이 커지긴 하지만 복구시 일관성을 보장받을 수 있으며 빠른 복구가 가능합니다.
  • MIXED : 위의 두가지를 혼합한 방식입니다. 

 

 

1. 유저 생성하고 패스워드 부여 합니다

1
2
3
> create user 'user1'@'%' identified by 'abc123';  # 유저 생성하고 패스워드 부여
> grant all privileges on *.* to 'user1'@'%';  # 권한부여, %를 하면 외부에서 접속 가능
> FLUSH privileges;
cs

 

 

2. plugin이 casing_sha2_password라면 mysql_native_password으로 변환해야 합니다

1
2
3
> select host, user, plugin from mysql.user;  # select 필드이름 from 테이블이름
> alter user 'user1'@'%' identified with mysql_native_password by 'abc123';
> FLUSH privileges;
cs

 

 

3. 이진로그 확인

> show global variables like 'log_bin'; show global variables like 'binlog_format'; 

위와 같이 나오면 mysql의 source 데이터베이스 준비는 끝났습니다

 

 

 

 

 

 

참고

https://systemv.tistory.com/52

https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html

https://aws.amazon.com/ko/premiumsupport/knowledge-center/dms-binary-logging-aurora-mysql/

https://docs.aws.amazon.com/ko_kr/dms/latest/userguide/CHAP_Source.MySQL.html#CHAP_Source.MySQL.Prerequisites

반응형