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 -u [DBUSER] -p -h [DBENDPOINT] [DBNAME] > mariadbdump.sql
# mysq -u [DBUSER] -p -h [DBENDPOINT] [DBNAME] < mariadbdump.sql
<마스터 설정(MariaDB)>
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]';
사용자가 정상적으로 생성 되었음을 확인
MariaDB의 마스터 정보를 확인하고 기록해둠
MariaDB> show master status\G
<슬레이브 설정(Aurora)>
mysql> CALL mysql.rds_stop_replication;
mysql> CALL mysql.rds_set_external_master(
-> '[DBENDPOINT]',
-> 3306,
-> [USER],
-> [PW],
-> [bin_log],
-> [Position],
-> 0);
mysql> CALL mysql.rds_start_replication;
mysql> show slave status\G
안녕하세요 ~~ 블로그 내용에 관심이 있어 댓글을 남기게 되었습니다. ^___^
다름아니라 저도 유사하게 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 권한이 지원되지가 않아.. 그런가 싶기도 합니다..