가동 중지 시간을 줄이면서 Amazon RDS for MySQL 데이터베이스로 데이터 가져오기
라이브 애플리케이션을 지원하는 외부 MariaDB 또는 MySQL 데이터베이스에서 RDS for MariaDB 인스턴스, RDS for MySQL 인스턴스 또는 RDS for MySQL 다중 AZ DB 클러스터로 데이터를 가져와야 할 경우가 있습니다. 다음 절차를 통해 애플리케이션 가용성에 미치는 영향을 최소화하세요. 이 절차는 대규모 데이터베이스로 작업하는 경우에도 유용합니다. 이 절차를 통해 네트워크를 거쳐 AWS로 전달되는 데이터의 양을 줄여 가져오기 비용을 줄일 수 있습니다.
이 절차에서는 데이터베이스 데이터의 복사본을 Amazon EC2 인스턴스로 전송하고 데이터를 새 Amazon RDS 데이터베이스로 가져옵니다. 그런 다음, 애플리케이션을 Amazon RDS 데이터베이스로 리디렉션하기 전에 복제를 사용하여 Amazon RDS 데이터베이스를 라이브 외부 인스턴스에 맞춰 최신 상태로 업데이트합니다. 외부 인스턴스가 MariaDB 10.0.24 이상이고 대상 인스턴스가 RDS for MariaDB일 경우에는 글로벌 트랜잭션 식별자(GTID)를 기반으로 MariaDB 복제를 구성합니다. 그렇지 않으면 이진 로그 좌표를 기반으로 복제를 구성합니다. GTID 기반 복제가 더욱 신뢰성이 높은 방법이므로 외부 데이터베이스에서 지원된다면 GTID 기반 복제를 사용하는 것이 좋습니다. 자세한 내용은 MariaDB 설명서에서 Global Transaction ID
참고
RDS for MySQL DB 인스턴스에 데이터를 가져오고자 하며 시나리오가 이 방법을 지원하는 경우 백업 파일 및 Amazon S3를 사용하여 Amazon RDS 내부 및 외부로 데이터를 이동하는 것이 좋습니다. 자세한 내용은 Amazon RDS for MySQL DB 인스턴스로 백업 복원 섹션을 참조하세요.
다음 다이어그램은 외부 MySQL 데이터베이스를 Amazon RDS의 MySQL 데이터베이스로 가져오는 것을 보여 줍니다.

작업 1: 기존 데이터베이스의 복사본 만들기
최소한의 가동 중지 시간으로 대량의 데이터를 RDS for MariaDB 또는 RDS for MySQL 데이터베이스로 마이그레이션하는 프로세스에서 첫 번째 단계는 원본 데이터의 복사본을 만드는 것입니다.
다음 다이어그램은 MySQL 데이터베이스의 백업을 만드는 방법을 보여 줍니다.

mysqldump
유틸리티를 사용하여 SQL 또는 구분 기호로 분리된 텍스트 형식으로 데이터베이스 백업본을 만들 수 있습니다. MariaDB 10.5에서는 이 클라이언트를 mariadb-dumpmysqldump
대신 mariadb-dump
를 사용해야 합니다. 비프로덕션 환경에서 각각의 형식으로 테스트 실행을 통해 어떤 방법을 사용해야 mysqldump 실행 시간이 최소화되는지 확인하는 것을 권장합니다.
또한, 로드를 위해 구분 기호로 분리된 텍스트 형식을 사용할 때의 이점에 대해 mysqldump
성능상의 이점을 비교 검토하는 것을 권장합니다. 구분 기호로 분리된 텍스트 형식을 사용하는 백업에서는 덤프되는 각 테이블에 대해 탭으로 구분된 텍스트 파일이 생성됩니다. 데이터베이스를 가져오는 데 필요한 시간을 줄이기 위해 LOAD DATA LOCAL INFILE
명령을 사용하여 이런 파일을 병렬로 로드할 수 있습니다. 자세한 내용은 Load the data for MariaDB 또는 Load the data for MySQL을 참조하세요.
백업 작업을 시작하기 전에 Amazon RDS로 복사할 MySQL 또는 MariaDB 데이터베이스에서 복제 옵션을 설정해야 합니다. 복제 옵션에는 이진 로깅 활성화와 고유한 서버 ID 설정이 포함됩니다. 이러한 옵션을 설정하면 서버가 데이터베이스 트랜잭션 로깅을 시작하고 이 프로세스의 후반부에 소스 복제 인스턴스가 되도록 서버를 준비시킵니다.
다음 권장 사항과 고려 사항을 잘 파악하고 있어야 합니다.
-
데이터베이스의 일관된 상태를 덤프하기 때문에
--single-transaction
와 함께mysqldump
옵션을 사용하세요. 덤프 파일이 올바른지 확인하려면mysqldump
가 실행되는 동안 데이터 정의 언어(DDL) 문을 실행하지 마시기 바랍니다. 이러한 작업에 대한 유지 관리 기간을 예약할 수 있습니다. -
덤프 파일에서 다음 스키마를 제외합니다.
-
sys
-
performance_schema
-
information_schema
mysqldump
및mariadb-dump
유틸리티는 기본적으로 이러한 스키마를 제외합니다. -
-
사용자 및 권한을 마이그레이션해야 하는 경우 이를 다시 생성하는 데이터 제어 언어(DCL)를 생성하는 도구 사용을 고려합니다. 예를 들어 pt-show-grants
유틸리티가 있습니다.
복제 옵션을 설정하려면
-
my.cnf
파일을 편집합니다. 이 파일은 보통/etc
아래에 있습니다.sudo vi /etc/my.cnf
log_bin
및server_id
옵션을[mysqld]
섹션에 추가합니다.log_bin
옵션은 이진 로그 파일에 대한 파일 이름 식별자를 제공합니다.server_id
옵션은 소스-복제본 관계에서 서버의 고유 식별자를 제공합니다.다음 예제에서는
my.cnf
파일의 업데이트된[mysqld]
섹션을 보여줍니다.[mysqld] log-bin=mysql-bin server-id=1
자세한 내용은 MySQL 설명서의 Setting the Replication Source Configuration
을 참조하세요. -
다중 AZ DB 클러스터를 사용한 복제의 경우
ENFORCE_GTID_CONSISTENCY
및GTID_MODE
파라미터를ON
으로 설정합니다.mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
mysql> SET @@GLOBAL.GTID_MODE = ON;
DB 인스턴스를 사용한 복제에는 이러한 설정이 필요하지 않습니다.
-
mysql
서비스를 다시 시작합니다.sudo service mysqld restart
기존 데이터베이스의 백업 복사본 만들기
-
SQL 또는 구분 기호로 분리된 텍스트 형식을 지정하는
mysqldump
유틸리티 또는mariadb-dump
유틸리티를 사용하여 데이터 백업을 만듭니다.MySQL 8.0.25 이하 버전에서는 서버 간 복제를 시작할 때 사용할 수 있는 백업 파일을 만들려면
--master-data=2
를 지정합니다. MySQL 8.0.26 이상 버전에서는 서버 간 복제를 시작할 때 사용할 수 있는 백업 파일을 만들려면--source-data=2
를 지정합니다. 자세한 내용은 MySQL 설명서의 mysqldump — A Database Backup Program을 참조하세요. 성능을 개선하고 데이터 무결성을 보장하려면
mysqldump
에--order-by-primary
및--single-transaction
옵션을 사용합니다.백업에 MySQL 시스템 데이터베이스가 포함되지 않도록 하려면
mysqldump
에--all-databases
옵션을 사용하지 마세요. 자세한 내용은 MySQL 설명서의 Creating a Data Snapshot Using mysqldump를 참조하세요. 필요한 경우
chmod
를 사용하여 백업 파일이 만들어질 디렉터리가 쓰기 가능한 디렉터리가 되도록 하세요.중요
Windows에서는 명령 창을 관리자 권한으로 실행하십시오.
-
SQL 출력을 표시하려면 다음 명령을 사용합니다.
대상 LinuxmacOS, 또는Unix:
sudo mysqldump \ --databases
database_name
\ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -ulocal_user
\ -ppassword
참고
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.
Windows의 경우:
mysqldump ^ --databases
database_name
^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -ulocal_user
^ -ppassword
참고
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.
-
구분 기호로 분리된 텍스트 출력을 표시하려면 다음 명령을 사용합니다.
대상 LinuxmacOS, 또는Unix:
sudo mysqldump \ --tab=
target_directory
\ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \database_name
\ --master-data=2 \ --single-transaction \ --order-by-primary \ -ppassword
Windows의 경우:
mysqldump ^ --tab=
target_directory
^ --fields-terminated-by "," ^ --fields-enclosed-by """ ^ --lines-terminated-by 0x0d0a ^database_name
^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -ppassword
참고
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.
Amazon RDS 데이터베이스에서 저장 프로시저, 트리거, 함수 또는 이벤트를 수동으로 만들어야 합니다. 복사 중인 데이터베이스에 이런 객체가 하나라도 있는 경우에는
mysqldump
를 실행할 때 이런 객체를 제외합니다. 이렇게 하려면mysqldump
명령에 다음 인수를 포함하세요.-
--routines=0
-
--triggers=0
-
--events=0
MySQL 8.0.22 이하 버전 및 MariaDB 버전의 경우
mysqldump
를 실행하고 구분된 텍스트 형식을 지정하면CHANGE MASTER TO
설명이 반환됩니다. 이 설명에는 마스터 로그 파일 이름과 위치가 포함됩니다. MySQL 8.0.23 이상 버전의 경우 구분된 텍스트 형식을 사용하여mysqldump
를 실행하면CHANGE REPLICATION SOURCE TO
설명이 반환됩니다. 이 설명에는 소스 로그 파일 이름과 위치가 포함됩니다. 외부 인스턴스가 MariaDB 10.0.24 이상 버전 또는 MySQL 8.0.23 이상 버전이 아닌 경우MASTER_LOG_FILE
및MASTER_LOG_POS
의 값을 확인합니다. 복제를 설정할 때 이러한 값이 필요합니다.MariaDB 버전과 MySQL 8.0.22 이하 버전에 대해 다음 출력이 반환됩니다.
-- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
MySQL 8.0.23 이상 버전에 대해 다음 출력이 반환됩니다.
-- Position to start replication or point-in-time recovery from -- -- CHANGE SOURCE TO SOURCE_LOG_FILE='mysql-bin-changelog.000031', SOURCE_LOG_POS=107;
MySQL 8.0.22 이하 버전에서 SQL 형식을 사용하는 경우 백업 파일의
CHANGE MASTER TO
설명에서 마스터 로그 파일 이름 및 위치를 가져올 수 있습니다. MySQL 8.0.23 이상 버전에서 SQL 형식을 사용하는 경우 백업 파일의CHANGE REPLICATION SOURCE TO
설명에서 소스 로그 파일 이름 및 위치를 가져올 수 있습니다. 외부 인스턴스가 MariaDB 버전 10.0.24 이상일 경우에는 GTID를 다음 단계에서 가져올 수 있습니다. -
-
-
사용하는 외부 인스턴스가 MariaDB 버전 10.0.24 이상일 경우 GTID 기반 복제를 사용합니다. 외부 MariaDB 인스턴스에서
SHOW MASTER STATUS
를 실행하여 이진 로그 파일 이름 및 위치를 가져온 다음, 외부 MariaDB 인스턴스에서BINLOG_GTID_POS
를 실행하여 GTID로 변환합니다.SELECT BINLOG_GTID_POS('
binary_log_file_name
',binary_log_file_position
);반환된 GTID를 기록해 둡니다. 복제를 구성하는 데 GTID가 필요합니다.
-
복사된 데이터를 압축하여 데이터를 Amazon RDS 데이터베이스로 복사하는 데 필요한 네트워크 리소스의 양을 줄입니다. 백업 파일의 크기를 기록해 둡니다. Amazon EC2 인스턴스를 얼마나 크게 만들지 결정할 때 이 정보가 필요합니다. 모두 완료되었으면, GZIP 또는 선호하는 압축 유틸리티를 사용하여 백업 파일을 압축합니다.
-
SQL 출력을 압축하려면 다음 명령을 사용합니다.
gzip backup.sql
-
구분 기호로 분리된 텍스트 출력을 압축하려면 다음 명령을 사용합니다.
tar -zcvf backup.tar.gz
target_directory
-
작업 2: Amazon EC2 인스턴스 만들기 및 압축된 데이터베이스 복사
압축된 데이터베이스 백업 파일을 Amazon EC2 인스턴스로 복사할 때는 데이터베이스 인스턴스 사이에서 압축되지 않은 데이터를 직접 복사할 때보다 네트워크 리소스를 덜 사용합니다. 데이터가 Amazon EC2에 있으면 MySQL 또는 MariaDB 데이터베이스로 바로 데이터를 복사할 수 있습니다. 네트워크 리소스의 비용을 절약하려면 Amazon EC2 인스턴스가 Amazon RDS DB 인스턴스와 같은 AWS 리전에 있어야 합니다. Amazon EC2 인스턴스를 Amazon RDS 데이터베이스와 같은 AWS 리전에 두면 가져오기 도중의 네트워크 대기 시간도 줄어듭니다.
다음 다이어그램은 데이터베이스 백업을 Amazon EC2 인스턴스로 복사하는 것을 보여줍니다.

Amazon EC2 인스턴스를 만들고 데이터를 복사하려면
-
Amazon RDS 데이터베이스를 만들려는 AWS 리전에서 가상 프라이빗 클라우드(VPC), VPC 보안 그룹 및 VPC 서브넷을 만듭니다. VPC 보안 그룹의 인바운드 규칙에서 애플리케이션에 필요한 IP 주소가 AWS에 연결하도록 허용하는지 확인합니다. IP 주소의 범위(예:
203.0.113.0/24
) 또는 다른 VPC 보안 그룹을 지정할 수 있습니다. Amazon VPC 콘솔을 사용하여 VPC, 서브넷 및 보안 그룹을 만들고 관리할 수 있습니다. 자세한 내용은 Amazon Virtual Private Cloud 사용 설명서의 Getting started with Amazon VPC를 참조하세요. -
Amazon EC2 콘솔
을 열고 Amazon EC2 인스턴스와 Amazon RDS 데이터베이스를 모두 포함하는 AWS 리전을 선택합니다. 1단계에서 만든 VPC, 서브넷 및 보안 그룹을 사용하여 Amazon EC2 인스턴스를 시작합니다. 데이터베이스 백업 파일이 압축되어 있지 않을 때는 이 파일을 위한 충분한 스토리지 공간을 가진 인스턴스 유형을 선택해야 합니다. Amazon EC2 인스턴스에 관한 세부 정보는 Amazon Elastic Compute Cloud 사용 설명서의 Getting started with Amazon EC2를 참조하세요. -
Amazon EC2 인스턴스에서 Amazon RDS 데이터베이스로 연결하려면 VPC 보안 그룹을 편집하세요. EC2 인스턴스의 프라이빗 IP 주소를 지정하는 인바운드 규칙을 추가합니다. EC2 콘솔 창에 있는 인스턴스 창의 세부 정보 탭에서 프라이빗 IP 주소를 찾을 수 있습니다. VPC 보안 그룹을 편집하고 인바운드 규칙을 추가하려면 EC2 콘솔 탐색 창에서 보안 그룹(Security Groups)를 선택하고 보안 그룹을 선택한 다음 EC2 인스턴스의 프라이빗 IP 주소를 지정하는 MySQL 또는 Aurora에 대한 인바운드 규칙을 추가합니다. 인바운드 규칙을 VPC 보안 그룹에 추가하는 방법을 알아보려면 Amazon Virtual Private Cloud 사용 설명서의 Security group rules를 참조하세요.
-
로컬 시스템에서 Amazon EC2 인스턴스로 압축된 데이터베이스 백업 파일을 복사합니다. 필요한 경우
chmod
를 사용하여 Amazon EC2 인스턴스의 대상 디렉터리에 대해 쓰기 권한이 있는지 확인하세요.scp
또는 Secure Shell(SSH) 클라이언트를 사용하여 파일을 복사할 수 있습니다. 다음은 예제scp
명령입니다.scp -r -i
key pair
.pem backup.sql.gz ec2-user@EC2 DNS
:/target_directory
/backup.sql.gz중요
민감한 데이터는 반드시 보안 네트워크 전송 프로토콜을 사용하여 복사해야 합니다.
-
Amazon EC2 인스턴스에 연결하고 다음 명령을 사용하여 최신 업데이트와 MySQL 클라이언트 도구를 설치합니다.
sudo yum update -y sudo yum install mysql -y
자세한 내용은 Amazon Elastic Compute Cloud 사용 설명서의 Connect to your instance를 참조하세요.
중요
이 예제에서는 Amazon Linux AMI 배포의 Amazon Machine Image(AMI)에 MySQL 클라이언트를 설치합니다. 이 예제에서는 Ubuntu 또는 Red Hat Enterprise Linux 등 다른 배포에 MySQL 클라이언트를 설치하지 않습니다. MySQL 설치에 대한 자세한 내용은 MySQL 설명서의 Installing MySQL
을 참조하세요. -
Amazon EC2 인스턴스에 연결되어 있는 상태에서 데이터베이스 백업 파일의 압축을 풉니다. 다음 명령은 예시입니다.
-
SQL 출력을 압축 해제하려면 다음 명령을 사용합니다.
gzip backup.sql.gz -d
-
구분 기호로 분리된 텍스트 출력을 압축 해제하려면 다음 명령을 사용합니다.
tar xzvf backup.tar.gz
-
작업 3: MySQL 또는 MariaDB 데이터베이스 만들기 및 Amazon EC2 인스턴스에서 데이터 가져오기
Amazon EC2 인스턴스와 같은 AWS 리전에 RDS for MariaDB DB 인스턴스, RDS for MySQL DB 인스턴스 또는 RDS for MySQL 다중 AZ DB 클러스터를 만들면 인터넷에서 가져오는 것보다 빠른 속도로 Amazon EC2에서 데이터베이스 백업 파일을 가져올 수 있습니다.
다음 다이어그램은 Amazon EC2 인스턴스에서 MySQL 데이터베이스로 백업을 가져오는 것을 보여줍니다.

MariaDB 또는 MySQL 데이터베이스를 만들고 데이터 가져오기
-
이 Amazon RDS 데이터베이스에 대해 예상되는 워크로드를 지원하기 위해 필요한 DB 인스턴스 클래스와 스토리지 공간의 양을 결정합니다. 이 프로세스의 일환으로 데이터 로드 절차를 위해 충분한 공간과 처리 용량이 어느 정도인지 결정합니다. 또한 프로덕션 워크로드를 처리하는 데 필요한 사항을 결정합니다. 원본 MySQL 또는 MariaDB 데이터베이스의 크기와 리소스를 바탕으로 평가할 수 있습니다. 자세한 내용은 DB 인스턴스 클래스 섹션을 참조하세요.
-
Amazon EC2 인스턴스가 포함된 AWS 리전에서 DB 인스턴스 또는 다중 AZ DB 클러스터를 만듭니다.
RDS for MySQL 다중 AZ DB 클러스터를 만들려면 Amazon RDS용 다중 AZ DB 클러스터 생성 섹션의 지침을 따르세요.
RDS for MariaDB 또는 RDS for MySQL DB 인스턴스를 생성하려면 Amazon RDS DB 인스턴스 생성의 지침과 다음 지침을 따르세요.
-
소스 DB 인스턴스와 호환되는 DB 엔진 버전을 지정합니다.
-
소스 인스턴스가 MySQL 5.5.x인 경우 Amazon RDS DB 인스턴스는 MySQL이어야 합니다.
-
소스 인스턴스가 MySQL 5.6.x 또는 5.7.x인 경우 Amazon RDS DB 인스턴스는 MySQL 또는 MariaDB여야 합니다.
-
원본 인스턴스가 MySQL 8.0.x인 경우 Amazon RDS DB 인스턴스는 MySQL 8.0.x여야 합니다.
-
원본 인스턴스가 MySQL 8.4.x인 경우 Amazon RDS DB 인스턴스는 MySQL 8.4.x여야 합니다.
-
소스 인스턴스가 MariaDB 5.5 이상인 경우 Amazon RDS DB 인스턴스는 MariaDB여야 합니다.
-
-
Amazon EC2 인스턴스에서와 동일한 Virtual Private Cloud(VPC) 및 VPC 보안 그룹을 지정합니다. 이 접근 방식에서는 Amazon EC2 인스턴스와 Amazon RDS 인스턴스가 네트워크를 통해 서로를 볼 수 있습니다. DB 인스턴스가 공개적으로 액세스 가능한지 확인합니다. 다음 섹션에 설명한 대로 소스 데이터베이스를 사용하여 복제를 설정하려면 DB 인스턴스에 공개적으로 액세스할 수 있어야 합니다.
-
데이터베이스 백업을 가져온 후에만 여러 가용 영역, 백업 보존 또는 읽기 전용 복제본을 구성해야 합니다 가져오기가 완료되면 프로덕션 인스턴스에 대해 다중 AZ 및 백업 보존을 설정할 수 있습니다.
-
-
Amazon RDS 데이터베이스에 대한 기본 구성 옵션을 검토합니다. 데이터베이스에 대한 기본 파라미터 그룹에 원하는 구성 옵션이 없는 경우, 원하는 구성 옵션이 있는 다른 파라미터 그룹을 찾거나 새 파라미터 그룹을 생성합니다. 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 Amazon RDS의 파라미터 그룹 섹션을 참조하세요.
-
마스터 사용자로 Amazon RDS 데이터베이스에 연결합니다. DB 인스턴스에 액세스해야 하는 서비스, 애플리케이션 및 관리자를 지원하는 데 필요한 사용자를 만듭니다. Amazon RDS 데이터베이스의 호스트 이름은 포트 번호를 포함하지 않은 DB 인스턴스의 엔드포인트 값입니다(예:
mysampledb.123456789012.us-west-2.rds.amazonaws.com
). Amazon RDS 콘솔의 데이터베이스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다. -
Amazon EC2 인스턴스에 연결합니다. 자세한 내용은 Amazon Elastic Compute Cloud 사용 설명서의 Connect to your instance를 참조하세요.
-
mysql
명령을 사용하여 Amazon EC2 인스턴스에서 원격 호스트로 Amazon RDS 데이터베이스에 연결합니다. 다음 명령은 예제입니다.mysql -h
host_name
-P 3306 -udb_master_user
-phost_name
은 Amazon RDS 데이터베이스 엔드포인트입니다. -
mysql
프롬프트에서source
명령을 실행하고 데이터베이스 덤프 파일의 이름을 전달합니다. 이 명령은 데이터를 Amazon RDS DB 인스턴스로 로드합니다.-
SQL 형식인 경우 다음 명령을 사용합니다.
mysql> source backup.sql;
-
구분 기호로 분리된 텍스트 형식의 경우 Amazon RDS 데이터베이스를 설정할 때 만든 기본 데이터베이스가 아니라면 먼저 데이터베이스를 만듭니다.
mysql> create database
database_name
; mysql> usedatabase_name
;그런 다음, 테이블을 생성합니다.
mysql> source
table1
.sql mysql> sourcetable2
.sql etc...그런 다음, 데이터를 가져옵니다.
mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...
성능을 개선하려면 여러 연결에서 이들 작업을 병렬로 수행하여 모든 테이블이 만들어진 다음에 동시에 로드되도록 할 수 있습니다.
참고
처음에 테이블을 덤프할 때
mysqldump
와 함께 데이터 서식 옵션을 사용했다면,LOAD DATA LOCAL INFILE
과 같은 옵션을 사용하여 데이터 파일 내용을 올바로 해석해야 합니다.
-
-
가져온 데이터베이스에 있는 테이블 중 1개 또는 2개에 대해 간단한
SELECT
쿼리를 실행하여 가져오기에 성공했는지 확인합니다.
이 절차에 사용되는 Amazon EC2 인스턴스가 더 이상 필요하지 않은 경우 EC2 인스턴스를 종료하여 AWS 리소스 사용량을 줄여야 합니다. EC2 인스턴스를 종료하려면 Amazon Elastic Compute Cloud 사용 설명서의 Terminate an instance를 참조하세요.
작업 4: 외부 데이터베이스에서 새 Amazon RDS 데이터베이스로 데이터 복제
MariaDB 또는 MySQL 데이터베이스로 데이터를 복사하고 전송하는 데 걸린 시간 중에 원본 데이터베이스가 업데이트되었을 것입니다. 따라서 복제를 사용하여 복사된 데이터베이스를 원본 데이터베이스에 맞춰 최신 상태로 업데이트합니다.

Amazon RDS 데이터베이스에서 복제를 시작하는 데 필요한 권한은 제한되고 Amazon RDS 마스터 사용자는 사용할 수 없습니다. 따라서 메이저 엔진 버전에 적합한 다음의 Amazon RDS 저장 프로시저를 사용합니다.
복제를 시작하려면
작업 1에서 복제 옵션을 설정할 때 이진 로깅을 활성화하고 소스 데이터베이스의 고유한 서버 ID를 설정합니다. 이제 라이브 데이터베이스를 소스 복제 인스턴스로 포함하고 있는 복제본으로서 Amazon RDS 데이터베이스를 설정할 수 있습니다.
-
Amazon RDS 콘솔에서 Amazon RDS 데이터베이스에 대한 VPC 보안 그룹에 원본 데이터베이스를 호스팅하는 서버의 IP 주소를 추가합니다. VPC 보안 그룹 구성에 관한 자세한 내용은 Amazon Virtual Private Cloud 사용 설명서의 Configure security group rules를 참조하세요.
원본 인스턴스와 통신할 수 있도록, Amazon RDS 데이터베이스 IP 주소에서의 연결을 허용하도록 로컬 네트워크를 구성해야 할 수도 있습니다. Amazon RDS 데이터베이스의 IP 주소를 확인하려면
host
명령을 사용합니다.host
host_name
host_name
은 Amazon RDS 데이터베이스 엔드포인트의 DNS 이름입니다(예:myinstance.123456789012.us-east-1.rds.amazonaws.com
). Amazon RDS 콘솔의 인스턴스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다. -
선택한 클라이언트를 사용하여 원본 인스턴스에 연결하고 복제에 사용될 사용자를 만듭니다. 이 계정은 오직 복제용으로만 사용되며 보안 향상을 위해 사용자의 도메인으로 제한되어야 합니다. 다음 명령은 예제입니다.
CREATE USER 'repl_user'@'
mydomain.com
' IDENTIFIED BY 'password
';참고
보안 모범 사례로 여기에 표시된 프롬프트 이외의 보안 인증 정보를 지정하는 것이 좋습니다.
-
원본 인스턴스의 경우 복제 사용자에게
REPLICATION CLIENT
및REPLICATION SLAVE
권한을 부여합니다. 예를 들어 도메인의 'repl_user
' 사용자를 위해 모든 데이터베이스에서REPLICATION CLIENT
및REPLICATION SLAVE
권한을 부여하려면 다음 명령을 실행합니다.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '
repl_user
'@'mydomain.com
'; -
SQL 형식을 사용하여 백업 파일을 만들었고 외부 인스턴스가 MariaDB 10.0.24 이상이 아닌 경우 다음 명령을 실행하여 해당 파일의 내용을 살펴봅니다.
cat backup.sql
이 파일에는 마스터 로그 파일 이름과 위치를 포함한
CHANGE MASTER TO
설명이 포함됩니다. 이 설명은--master-data
와 함께mysqldump
옵션을 사용할 때 백업 파일에 포함됩니다.MASTER_LOG_FILE
및MASTER_LOG_POS
에 대한 값을 확인합니다.-- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
구분 기호로 분리된 텍스트 형식을 사용하여 백업 파일을 만들었고 외부 인스턴스가 MariaDB 10.0.24 이상이 아닌 경우, 작업 1의 ‘존재하는 데이터베이스의 백업 복사본 만들기’ 절차 1단계에서 확보한 바이너리 로그 좌표가 이미 있을 것입니다.
외부 인스턴스가 MariaDB 10.0.24 이상인 경우 복제를 시작할 수 있는 GTID를 작업 1의 ‘존재하는 데이터베이스의 백업 복사본 만들기’ 절차 2단계에서 이미 확보했을 것입니다.
-
Amazon RDS 데이터베이스를 복제본으로 만듭니다. 외부 인스턴스가 MariaDB 10.0.24 이상이 아닌 경우 마스터 사용자로 Amazon RDS 데이터베이스에 연결하고 적절한 Amazon RDS 저장 프로시저를 사용하여 소스 데이터베이스를 소스 복제 인스턴스로 식별합니다.
SQL 형식 백업 파일이 있는 경우 4단계에서 확인한 마스터 로그 파일 이름과 마스터 로그 위치를 사용합니다. 구분 기호로 분리된 텍스트 형식을 사용한 경우 백업 파일을 만들 때 확인한 이름과 위치를 사용합니다. 다음 명령은 예시입니다.
MySQL 8.4 이상 버전
CALL mysql.rds_set_external_source ('myserver.mydomain.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.000031', 107, 1);MariaDB 및 MySQL 8.0 이하 버전
CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.000031', 107, 1);참고
보안 모범 사례로 여기에 표시된 프롬프트 이외의 보안 인증 정보를 지정하는 것이 좋습니다.
외부 인스턴스가 MariaDB 10.0.24 이상인 경우 마스터 사용자로 Amazon RDS 데이터베이스에 연결하고 mysql.rds_set_external_master_gtid 명령을 사용하여 소스 데이터베이스를 소스 복제 인스턴스로 식별합니다. 작업 1의 ‘기존 데이터베이스의 백업 복사본 만들기’ 절차 2단계에서 확인된 GTID를 사용합니다. 다음 명령은 예제입니다.
CALL mysql.rds_set_external_master_gtid ('
source_server_ip_address
', 3306, 'ReplicationUser', 'password
', 'GTID
', 1);
는 소스 복제 인스턴스의 IP 주소입니다. EC2 프라이빗 DNS 주소는 현재 지원되지 않습니다.source_server_ip_address
참고
보안 모범 사례로 여기에 표시된 프롬프트 이외의 보안 인증 정보를 지정하는 것이 좋습니다.
-
Amazon RDS 데이터베이스에서 다음 mysql.rds_start_replication 명령을 실행하여 복제를 시작합니다.
CALL mysql.rds_start_replication;
-
Amazon RDS 데이터베이스에서 SHOW REPLICA STATUS
명령을 실행하여 복제본이 소스 복제 인스턴스에 맞게 최신 상태가 되는 시점을 파악합니다. SHOW REPLICA STATUS
명령의 결과에는Seconds_Behind_Master
필드가 포함됩니다.Seconds_Behind_Master
필드가 0을 반환하면 복제본이 소스 복제 인스턴스에 맞게 최신 상태인 것입니다.참고
이전 버전의 MySQL에는
SHOW SLAVE STATUS
대신SHOW REPLICA STATUS
가 사용되었습니다. 8.0.23 이전 MySQL 버전을 사용하는 경우SHOW SLAVE STATUS
를 사용합니다.MariaDB 10.5, 10.6 또는 10.11 DB 인스턴스의 경우 MySQL 명령 대신 mysql.rds_replica_status 저장 프로시저를 실행합니다.
-
Amazon RDS 데이터베이스가 최신 상태로 업데이트된 후, 필요할 경우 그 데이터베이스를 복원할 수 있도록 자동 백업을 켭니다. Amazon RDS 콘솔
을 사용하여 Amazon RDS 데이터베이스에 대한 자동 백업을 켜거나 수정할 수 있습니다. 자세한 내용은 백업 소개 섹션을 참조하세요.
작업 5: 라이브 애플리케이션을 Amazon RDS 인스턴스로 리디렉션
MariaDB 또는 MySQL 데이터베이스가 소스 복제 인스턴스에 맞게 최신 상태로 업데이트되면 라이브 애플리케이션을 업데이트하여 Amazon RDS 인스턴스를 사용할 수 있습니다.

라이브 애플리케이션을 MariaDB 또는 MySQL 데이터베이스로 리디렉션하고 복제 중지
-
Amazon RDS 데이터베이스에 대한 VPC 보안 그룹을 추가하려면 애플리케이션을 호스팅하는 서버의 IP 주소를 추가합니다. VPC 보안 그룹 수정에 대한 자세한 내용은 Amazon Virtual Private Cloud 사용 설명서의 Configure security group rules를 참조하세요.
-
SHOW REPLICA STATUS
명령 결과에서 Seconds_Behind_Master
필드가 0인지 확인합니다. 이는 복제본이 소스 복제 인스턴스에 맞게 최신 상태라는 의미입니다.SHOW REPLICA STATUS;
참고
이전 버전의 MySQL에는
SHOW SLAVE STATUS
대신SHOW REPLICA STATUS
가 사용되었습니다. 8.0.23 이전 MySQL 버전을 사용하는 경우SHOW SLAVE STATUS
를 사용합니다.MariaDB 10.5, 10.6, 10.11 DB 인스턴스의 경우 MySQL 대신 mysql.rds_replica_status 프로시저를 실행합니다.
-
트랜잭션이 완료되면 소스에 대한 모든 연결을 닫습니다.
-
Amazon RDS 데이터베이스를 사용할 수 있도록 애플리케이션을 업데이트합니다. 이 업데이트에는 일반적으로 Amazon RDS 데이터베이스의 호스트 이름과 포트, 연결할 사용자 계정과 암호, 사용할 데이터베이스를 식별하기 위해 연결 설정을 변경하는 과정이 포함됩니다.
-
DB 인스턴스에 연결합니다.
다중 AZ DB 클러스터의 경우에는 라이터 DB 인스턴스에 연결합니다.
-
다음 mysql.rds_stop_replication 명령을 사용하여 Amazon RDS 인스턴스에 대한 복제를 중지합니다.
CALL mysql.rds_stop_replication;
-
이 인스턴스가 더 이상 복제본으로 식별되지 않도록 Amazon RDS 데이터베이스에서 적절한 Amazon RDS 저장 프로시저를 실행하여 복제 구성을 재설정합니다.
MySQL 8.4 이상 버전
CALL mysql.rds_reset_external_source;
MariaDB 및 MySQL 8.0 이하 버전
CALL mysql.rds_reset_external_master;
-
다중 AZ 지원 및 읽기 전용 복제본과 같은 Amazon RDS 기능을 추가로 활성화합니다. 자세한 내용은 Amazon RDS에 대한 다중 AZ 배포 구성 및 관리 및 DB 인스턴스 읽기 전용 복제본 작업 단원을 참조하세요.