Amazon RDS for MySQL 액티브 DB 인스턴스의 바이너리 로그를 사용하여 온프레미스 스탠바이 인스턴스로 복제하려면 어떻게 해야 하나요?

3분 분량
0

MySQL용 Amazon Relational Database Service(RDS) 데이터베이스 인스턴스를 온프레미스 서버로 복사하고 싶습니다.

간단한 설명

Amazon RDS for MySQL에서 온프레미스 데이터베이스 서버로 데이터를 마이그레이션하려면 먼저 AWS에서 읽기 복제본을 만드세요. 그런 다음 복제 대상을 Amazon RDS for MySQL 읽기 복제본에서 온프레미스 서버로 전환합니다.

GTID 기반 복제를 사용하는 경우 외부 소스 인스턴스로 바이너리 로그 파일 위치 복제 구성을 참조하세요.

해결 방법

1.    복제하려는 DB 인스턴스에 대해 자동 백업이 설정되어 있는지 확인합니다. 이 예제에서 DB 인스턴스는 RDS-active입니다.
참고: 최소 백업 보존 기간은 1일입니다.

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

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

mysql> show slave status \G

참고: seconds_behind_master0이어야 하며, 이는 복제본 지연이 없음을 의미합니다.

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.    새 데이터베이스를 생성한 후, 덤프 파일을 사용하여 데이터베이스를 새 외부 DB 인스턴스로 복원합니다.

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

9.    RDS-active DB 인스턴스에 로그인하고 복제 사용자를 설정한 다음 해당 사용자에게 필요한 권한을 부여합니다. repl_user를 자신의 복제 사용자 이름으로 바꾸어야 합니다.

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@'%';

참고: 자세한 내용은 Aurora와 MySQL 간 또는 Aurora와 다른 Aurora DB 클러스터 간 복제(바이너리 로그 복제)를 참조하세요.

10.    대상 DB 인스턴스에 로그인한 후 MySQL 서버를 종료합니다.

11.    고유한 서버 ID와 DB 인스턴스에서 복제할 데이터베이스 이름을 가리키도록 my.cnf 파일 매개변수를 수정합니다. 예: server_id=2replicate-do-db=test.

12.    파일을 저장합니다.

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

14.    RDS-active DB 인스턴스에 연결합니다. 이렇게 하려면 MySQL-target에서 다음 명령을 실행합니다.

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에 연결할 수 있는지 확인합니다.

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

RDS-EndpointRDS-active DB 인스턴스의 엔드포인트입니다. 사용자 이름 및 비밀번호는 9단계에서 만든 사용자 이름 및 비밀번호와 동일합니다. MASTER_LOG_FILEMASTER_LOG_POS는 5단계에서 언급한 값입니다.

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

mysql> start slave;

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

mysql> Show slave status\G

17.    마스터 뒤의 초가 0이 되면 RDS-standby DB 인스턴스를 삭제할 수 있습니다.

관련 정보

AWS DMS를 사용하여 Amazon RDS 또는 Aurora MySQL 호환 에디션 DB 인스턴스로 마이그레이션하려면 어떻게 해야 하나요?

복제를 사용하여 MySQL DB 인스턴스에서 데이터 내보내기