[AWS] RDS MariaDB에서 Aurora Mysql로 Migration하는 방법

Jiyeon's TechNote·2021년 9월 8일
0

RDS MariaDB에서 Aurora Mysql로 Migration하는 방법

AWS RDS에서 Mysql을 사용하는 경우 스냅샷 복원 등 간편한 방법으로 Aurora로 마이그레이션할 수 있지만 MariaDB에서는 해당 방법들이 지원되지 않음

그렇기 때문에 단절을 최소화하고 가장 안전하게 데이터를 이전하기 위해서는 MariaDB의 데이터를 mysqldump 유틸리티를 이용해서 덤프를 생성하고 Aurora에 덤프 데이터를 이전한 후에 두 DB를 replication 설정하여 데이터를 동기화하는 방법이 최선임

AWS DMS를 이용한 방법도 있지만 DMS는 데이터를 마이그레이션하는데 필요한 데이터베이스 개체 만을 만들고 이러한 개체에는 테이블과 기본 키가 포함되어있음
즉, 기본적인 데이터만 마이그레이션되어지는 것이고 전체 스키마를 마이그레이션하려면 먼저 대상에서 views, foreign key constraints, stored procedures , triggers 등과 같은 다른 데이터베이스 개체를 미리 만들고 DMS를 사용하여 데이터를 마이그레이션해야 함

그렇기 때문에 auto_increment 속성과 같은 설정들을 유지하기 위해서는 기본 유틸리티인 mysqldump를 이용한 데이터 이전이 최선의 방법임

mysqldump 이전 방법

  1. MariaDB에 테스트용 DB 생성 (auto_increment 속성 포함)
  1. MariaDB의 데이터를 mysqldump를 이용해서 덤프를 생성
# mysqldump -u [DBUSER] -p -h [DBENDPOINT] [DBNAME] > mariadbdump.sql

  1. Aurora에 동일한 이름의 DB를 생성하고 해당 DB에 덤프 데이터를 이전함
# mysq -u [DBUSER] -p -h [DBENDPOINT] [DBNAME] < mariadbdump.sql

  1. Aurora에 데이터 및 속성이 정상적으로 이전되었음을 확인

Replication 설정 방법

<마스터 설정(MariaDB)>

  1. 마이그레이션 기간을 완료하기 전에 binlog 파일이 삭제되지 않도록 마스터 인스턴스에서 binlog 보존을 설정해야 함(예를 들어: 보존을 1일로 설정)
MariaDB> CALL mysql.rds_set_configuration('binlog retention hours', 24);


2. replication용 사용자 생성

MariaDB> CREATE USER '[USER]'@'%' IDENTIFIED BY '[PASSWORD]';


3. 생성한 사용자에게 외부접근을 허용하는 권한 부여

MariaDB> GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '[USER]'@'%' IDENTIFIED BY '[PASSWORD]';

  1. 사용자가 정상적으로 생성 되었음을 확인

  2. MariaDB의 마스터 정보를 확인하고 기록해둠

MariaDB> show master status\G

<슬레이브 설정(Aurora)>

  1. Aurora에서 복제를 중지
mysql> CALL mysql.rds_stop_replication;

  1. MariaDB의 마스터 정보를 이용하여 슬레이브를 구성함 (Port, User, PW, bin_log, Position)
mysql> CALL mysql.rds_set_external_master(
-> '[DBENDPOINT]',
-> 3306,
-> [USER],
-> [PW],
-> [bin_log],
-> [Position],
-> 0);

  1. Aurora에서 복제를 시작
mysql> CALL mysql.rds_start_replication;

  1. replication이 정상적으로 설정 되었음을 확인
mysql> show slave status\G

profile
바쁘다 바빠 현대사회 엔지니어🙋‍♀️

2개의 댓글

comment-user-thumbnail
2024년 8월 19일

안녕하세요 ~~ 블로그 내용에 관심이 있어 댓글을 남기게 되었습니다. ^___^

다름아니라 저도 유사하게 RDS Maria DB <-> Aurora DB 간에 Replication 하는 작업을 진행하고 있는데요.

실제 작업 테스트 하셨을 때의 DB Version을 알 수 있을까요?

저는 RDS Maria DB (10.11.6) <-> Aurora DB (8.0.mysql_aurora.3.05.2) 간의 Replication 시 아래의 에러가 발생하여, 버전 문제로 인해 지원이 되지 않는 것인지 확인을 해보려고 합니다.

Error : Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, the server was unable to fetch a keyring key required to open an encrypted relay log file, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.

RDS Maria DB (10.11.6)에서는 REPLICATION CLIENT 권한이 지원되지가 않아.. 그런가 싶기도 합니다..

1개의 답글