이진 로그를 사용하여 MySQL용 Amazon RDS 활성 인스턴스에서 온프레미스 대기 인스턴스로 복제하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 11월 14일

이진 로그를 사용하여 외부 온프레미스 환경으로 Amazon Relational Database Service(Amazon RDS) for MySQL 인스턴스를 복제하려면 어떻게 해야 합니까?

간략한 설명

온프레미스 데이터베이스 서버로 Amazon RDS for MySQL의 데이터를 마이그레이션하려면 AWS에서 읽기 전용 복제본을 생성한 후, 복제 대상을 Amazon RDS MySQL 읽기 전용 복제본에서 온프레미스 서버로 변경합니다.

GTID 기반 복제를 사용하는 경우 외부 마스터 인스턴스를 사용하여 GTID 기반 복제 구성을 참조하십시오.

​해결 방법

1.    복제하려는 인스턴스에서 자동 백업이 활성화되었는지 확인합니다. 이 예제에서는 인스턴스를 RDS-active라고 합니다.

참고: 최소 백업 보존 기간은 1일입니다.

2.    동일한 구성을 사용하여 DB 인스턴스의 읽기 전용 복제본을 생성합니다. 이 예제에서 복제본은 RDS-standby라고 합니다.

3.    RDS-standby 인스턴스에 로그인하고 복제본이 RDS-active를 따라잡는지 확인합니다.

mysql> show slave status \G

참고: 마스터와의 시간(초) 차이가 0이어야 합니다. 즉, 복제 지연이 없습니다.

4.    RDS-standby에서 복제 중지 :

mysql> call mysql.rds_stop_replication;

5.    복제본에서 데이터를 기록한 다음 -log_file-log_position 파라미터를 기록해 둡니다.

mysql> show slave status \G

참고: -log_fileRelay_Master_Log_File의 값이고, -log_positionExec_Master_Log_Pos의 값입니다.

6.    터미널을 종료하고 mysqldump 또는 유사한 유틸리티를 사용하여 대상 서버에 복제될 RDS-standby의 백업을 생성합니다. 이 예제에서는 대상 온프레미스 서버를 MySQL-target이라고 합니다.

$ mysqldump -h hostname -u username -p dbname > backup_file_name.sql

7.    백업이 생성된 후 MySQL-target에 로그인하여 백업 파일을 대상 온프레미스 서버로 전송합니다.

8.    새 데이터베이스를 생성하고 dumpfile을 사용하여 데이터베이스를 새 외부 DB 인스턴스로 복원합니다.

$ mysql -h hostname -u username -p dbname < backup_file_name.sql

9.    RDS 활성 인스턴스에 로그인하고 복제 사용자를 설정한 다음 필요한 권한을 사용자에게 부여합니다.

mysql> create user repl_user@'%' identified by 'repl_user';
   mysql>grant replication slave, replication client on *.* to repl_user@'%';
   mysql>show grants for repl_user@'%';

참고: repl_user를 자체 복제 사용자 이름으로 바꿔야 합니다.

10.    대상 인스턴스에 로그인하고 MySQL 서버를 중지합니다.

11.    my.cnf 파일 파라미터를 수정하여 server_id = 2와 같은 고유한 서버 ID와 복제될 데이터베이스의 이름을 가리킵니다.

12.    파일을 저장합니다.

13.    MySQL-target에서 MySQL 서버를 다시 시작합니다.

14.    RDS-active 인스턴스에 대한 연결을 설정합니다.

mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.000001', master_log_pos= 107;

15.    MySQL-targetRDS-active에 연결할 수 있는지 확인합니다.

참고: Amazon Elastic Compute Cloud(Amazon EC2)를 외부 MySQL 인스턴스로 사용하는 경우 RDS-active 인스턴스의 보안 그룹에 있는 보안 그룹 또는 IP 주소로부터의 연결을 허용합니다. 외부 MySQL 서버를 사용하는 경우 telnet을 실행하여 연결을 테스트합니다. 자세한 내용은 Amazon RDS DB 인스턴스에 연결할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

RDS-EndpointRDS-active 인스턴스의 엔드포인트입니다. 사용자 이름과 암호는 9단계에서 생성한 사용자 이름 및 암호와 동일합니다. MASTER_LOG_FILEMASTER_LOG_POS는 5단계에서 기록한 값입니다.

16.    MySQL-target에 로그인하고 복제를 시작합니다.

mysql> start slave;

17.    복제가 RDS-activeMySQL-target 간에 동기화되고 있는지 확인합니다.

mysql> Show slave status\G

18.    마스터와의 시간(초) 차이가 0이 되면 RDS-standby 인스턴스를 삭제할 수 있습니다.