메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

가동 중지 시간을 단축하여 Amazon RDS MySQL MariaDB DB 인스턴스로 데이터 가져오기

라이브 애플리케이션을 지원하는 외부 MySQL 또는 MariaDB 데이터베이스에서 Amazon RDS MySQL 또는 MariaDB DB 인스턴스로 데이터를 가져올 때, 다음 절차를 통해 애플리케이션 가용성에 미치는 영향을 최소화할 수 있습니다. 네트워크를 통해 AWS로 전달되는 데이터의 양을 줄여 가져오기 비용을 줄일 수 있기 때문에, 매우 큰 데이터베이스로 작업할 때도 이 절차가 도움이 될 수 있습니다.

이 절차에서는 데이터베이스 데이터의 복사본을 Amazon EC2 인스턴스로 전송하고 데이터를 새 Amazon RDS DB 인스턴스로 가져옵니다. 그런 다음, 애플리케이션을 Amazon RDS DB 인스턴스로 전달하기 전에 복제를 사용하여 Amazon RDS DB 인스턴스를 라이브 외부 인스턴스로 업데이트합니다. 외부 인스턴스가 MariaDB 10.0.2 이상이고 대상 인스턴스가 Amazon RDS MariaDB일 경우에는 전역 트랜잭션 ID(GTID)를 기반으로 MariaDB 복제를 구성하고, 그렇지 않은 경우에는 이진 로그 좌표를 기반으로 복제를 구성합니다. GTID 기반 복제는 충돌 안정성 기능을 개선하므로 외부 데이터베이스가 지원하는 경우에는 GTID 기반 복제를 사용하는 것이 좋습니다. 자세한 내용은 MariaDB 설명서에서 Global Transaction ID를 참조하십시오.

참고

버전 5.1 이전의 MySQL 버전에서 가져온 원본 MySQL 데이터베이스에 이 절차를 적용하면 복제 문제가 발생할 가능성이 있으므로, 이때는 이 절차를 사용하지 않는 것이 좋습니다. 자세한 내용은 MySQL 문서의 Replication Compatibility Between MySQL Versions를 참조하십시오.

기존 데이터베이스의 복사본 만들기

최소한의 가동 중지 시간으로 대량의 데이터를 Amazon RDS MySQL 또는 MariaDB DB 인스턴스로 마이그레이션하는 프로세스에서 첫 번째 단계는 원본 데이터의 복사본을 만드는 것입니다.

mysqldump 유틸리티를 사용하여 SQL 또는 구분 기호로 분리된 텍스트 형식으로 데이터베이스 백업본을 만들 수 있습니다. 비프로덕션 환경에서 각각의 형식으로 테스트 실행을 통해 어떤 방법을 사용해야 mysqldump 실행 시간이 최소화되는지 확인해야 합니다.

또한, 로드를 위해 구분 기호로 분리된 텍스트 형식을 사용할 때의 이점에 대해 mysqldump 성능상의 이점을 비교 검토해야 합니다. 구분 기호로 분리된 텍스트 형식을 사용하는 백업에서는 덤프되는 각 테이블에 대해 탭으로 구분된 텍스트 파일이 생성됩니다. LOAD DATA LOCAL INFILE 명령을 사용하여 이런 파일을 병렬로 로드함으로써 데이터베이스를 가져오는 데 필요한 시간을 줄일 수 있습니다. mysqldump 형식을 선택한 다음 데이터를 로드하는 방법에 대한 자세한 내용은 MySQL 문서의 Using mysqldump For Backups를 참조하십시오.

백업 작업을 시작하기 전에 Amazon RDS로 복사할 MySQL 또는 MariaDB 데이터베이스에서 복제 옵션을 설정해야 합니다. 복제 옵션에는 이진 로깅 활성화와 고유한 서버 ID 설정이 포함됩니다. 이런 옵션을 설정하면 서버가 데이터베이스 트랜잭션 로깅을 시작하고 이 프로세스의 후반부에 복제 마스터가 되도록 서버를 준비시키게 됩니다.

참고

백업 복사본이 생성되는 동안 복제 옵션을 설정하고 읽기 전용 모드가 되도록 하려면 데이터베이스를 중지해야 하므로, 이런 작업을 위한 유지 관리 기간을 예약할 필요가 있습니다.

복제 옵션을 설정하려면

  1. my.cnf 파일을 편집합니다(이 파일은 보통 /etc에 있음).

    Copy
    sudo vi /etc/my.cnf

    log_binserver_id 옵션을 [mysqld] 섹션에 추가합니다. log_bin 옵션은 이진 로그 파일에 대한 파일 이름 식별자를 제공합니다. server_id 옵션은 마스터-복제본 관계에서 서버의 고유 식별자를 제공합니다.

    다음 예제에서는 my.cnf 파일의 업데이트된 [mysqld] 섹션을 보여줍니다.

    Copy
    [mysqld] log-bin=mysql-bin server-id=1

    자세한 내용은 MySQL 문서의 Setting the Replication Master Configuration을 참조하십시오.

  2. mysql 서비스를 다시 시작합니다.

    Copy
    sudo service mysqld restart

기존 데이터베이스의 백업 복사본을 만들려면

  1. SQL 또는 구분 기호로 분리된 텍스트 형식을 지정하는 mysqldump 유틸리티를 사용하여 데이터 백업을 만듭니다.

    서버 간 복제를 시작할 때 사용할 수 있는 백업 파일을 만들려면 --master-data=2를 지정해야 합니다. 자세한 내용은 mysqldump 문서를 참조하십시오.

    성능을 개선하고 데이터 무결성을 보장하려면 mysqldump--order-by-primary--single-transaction 옵션을 사용합니다.

    백업에 MySQL 시스템 데이터베이스가 포함되지 않도록 하려면 mysqldump와 함께 --all-databases 옵션을 사용하지 마십시오. 자세한 내용은 MySQL 문서의 Creating a Dump Snapshot Using mysqldump를 참조하십시오.

    필요한 경우 chmod를 사용하여 백업 파일이 생성될 디렉터리가 쓰기 가능한 디렉터리가 되도록 하십시오.

    중요

    Windows에서는 명령 창을 관리자 권한으로 실행하십시오.

    • SQL 출력을 표시하려면 다음 명령을 사용합니다.

      Linux, OS X, Unix의 경우:

      Copy
      sudo mysqldump \ --databases <database_name> \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u <local_user> \ -p <password>

      Windows의 경우:

      Copy
      mysqldump ^ --databases <database_name> ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u <local_user> ^ -p <password>
    • 구분 기호로 분리된 텍스트 출력을 표시하려면 다음 명령을 사용합니다.

      Linux, OS X, Unix의 경우:

      Copy
      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 \ -p <password>

      Windows의 경우:

      Copy
      mysqldump ^ --tab=<target_directory> ^ --fields-terminated-by ',' ^ --fields-enclosed-by '"' ^ --lines-terminated-by 0x0d0a ^ <database_name> ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -p <password>

      참고

      Amazon RDS 데이터베이스에서 저장 프로시저, 트리거, 함수 또는 이벤트를 수동으로 만들어야 합니다. 복사 중인 데이터베이스에 이런 객체가 하나라도 있는 경우에는 mysqldump 명령과 함께 --routines=0 --triggers=0 --events=0 인수를 포함시켜 mysqldump를 실행할 때 이런 객체를 제외합니다.

      구분 기호로 분리된 텍스트 형식을 사용할 때 mysqldump를 실행하면 CHANGE MASTER TO 설명이 반환됩니다. 이 설명에는 마스터 로그 파일 이름과 위치가 포함됩니다. 외부 인스턴스가 MariaDB 버전 10.0.2 이상이 아닐 경우, MASTER_LOG_FILE 및 MASTER_LOG_POS 값을 메모하십시오. 복제를 설정할 때 필요합니다.

      Copy
      -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

      SQL 형식을 사용하는 경우 외부 데이터베이스와 새 Amazon RDS DB 인스턴스 간의 복제 내 프로시저의 4단계에서 마스터 로그 파일 이름 및 위치를 가져올 수 있습니다. 외부 인스턴스가 MariaDB 버전 10.0.2 이상일 경우에는 GTID를 다음 단계에서 가져올 수 있습니다.

  2. 사용하는 외부 인스턴스가 MariaDB 버전 10.0.2 이상일 경우 GTID 기반 복제를 사용합니다. 외부 MariaDB 인스턴스에서 SHOW MASTER STATUS를 실행하여 이진 로그 파일 이름 및 위치를 가져온 다음, 외부 MariaDB 인스턴스에서 BINLOG_GTID_POS를 실행하여 GTID로 변환합니다.

    Copy
    SELECT BINLOG_GTID_POS('<binary log file name>', <binary log file position>);

    반환된 GTID를 메모하십시오. 복제를 구성하는 데 필요합니다.

  3. 복사된 데이터를 압축하여 데이터를 Amazon RDS DB 인스턴스로 복사하는 데 필요한 네트워크 리소스의 양을 줄입니다. Amazon EC2 인스턴스를 얼마나 크게 만들지 결정할 때 백업 파일의 크기를 알아야 하므로 이 정보를 기록해 두십시오. 모두 완료되었으면, GZIP 또는 선호하는 압축 유틸리티를 사용하여 백업 파일을 압축합니다.

    • SQL 출력을 압축하려면 다음 명령을 사용합니다.

      Copy
      gzip backup.sql
    • 구분 기호로 분리된 텍스트 출력을 압축하려면 다음 명령을 사용합니다.

      Copy
      tar -zcvf backup.tar.gz <target_directory>

Amazon EC2 인스턴스 만들기 및 압축된 데이터베이스 복사

압축된 데이터베이스 백업 파일을 Amazon EC2 인스턴스로 복사할 때는 데이터베이스 인스턴스 사이에서 압축되지 않은 데이터를 직접 복사할 때보다 네트워크 리소스를 덜 사용합니다. 데이터가 Amazon EC2에 있으면 Amazon RDS MySQL 또는 MariaDB DB 인스턴스로 바로 데이터를 복사할 수 있습니다. 네트워크 리소스의 비용을 절약하려면 Amazon EC2 인스턴스가 Amazon RDS DB 인스턴스와 같은 리전에 있어야 합니다. Amazon EC2 인스턴스를 Amazon RDS DB 인스턴스와 같은 리전에 두면 가져오기 도중의 네트워크 지연 시간도 줄어듭니다.

Amazon EC2 인스턴스를 만들고 데이터를 복사하려면

  1. MySQL 데이터베이스 엔진을 실행할 RDS DB 인스턴스를 생성하려는 리전에서 VPC, VPC 보안 그룹 및 VPC 서브넷을 만듭니다. VPC 보안 그룹의 인바운드 규칙에서 애플리케이션에 필요한 IP 주소가 AWS에 연결하도록 허용하는지 확인하십시오. 이는 IP 주소의 범위(예: 203.0.113.0/24) 또는 다른 VPC 보안 그룹일 수 있습니다. Amazon VPC Management Console을 사용하여 VPC, 서브넷 및 보안 그룹을 만들고 관리할 수 있습니다. 자세한 내용은 Amazon Virtual Private Cloud 시작 안내서Amazon VPC 시작하기를 참조하십시오.

    참고

    이전의 AWS 계정은 Amazon EC2-Classic 모드에서 인스턴스를 시작할 수도 있습니다. 이 경우에는 Amazon RDS 인스턴스에 대한 DB 보안 그룹에서 인바운드 규칙이 Amazon EC2 프라이빗 IP 주소를 사용하여 EC2-Classic 인스턴스에 대한 액세스를 허용하는지 확인하십시오. 자세한 내용은 DB 보안 그룹 작업(EC2-Classic 플랫폼) 섹션을 참조하십시오.

  2. Amazon EC2 관리 콘솔을 열고 Amazon EC2 인스턴스와 Amazon RDS DB 인스턴스를 모두 포함하는 리전을 선택합니다. 1단계에서 만든 VPC, 서브넷 및 보안 그룹을 사용하여 Amazon EC2 인스턴스를 시작합니다. 데이터베이스 백업 파일이 압축되어 있지 않을 때는 이 파일을 위한 충분한 스토리지 공간을 가진 인스턴스 유형을 선택해야 합니다. Amazon EC2 인스턴스에 관한 세부 정보는 Linux용 Amazon Elastic Compute Cloud 사용 설명서Amazon EC2 Linux 인스턴스 시작하기 단원을 참조하십시오.

  3. Amazon EC2 인스턴스에서 Amazon RDS DB 인스턴스로 연결하려면 VPC 보안 그룹을 편집하고, EC2 인스턴스의 프라이빗 IP 주소를 지정하는 인바운드 규칙을 추가해야 합니다. EC2 콘솔 창에 있는 [Instance] 창의 [Details] 탭에서 프라이빗 IP 주소를 찾을 수 있습니다. VPC 보안 그룹을 편집하고 인바운드 규칙을 추가하려면 EC2 콘솔 탐색 창에서 [Security Groups]를 선택하고 보안 그룹을 선택한 다음 EC2 인스턴스의 프라이빗 IP 주소를 지정하는 MySQL/Aurora에 대한 인바운드 규칙을 추가합니다. 인바운드 규칙을 VPC 보안 그룹에 추가하는 방법을 알아보려면 규칙 추가 및 제거를 참조하십시오.

  4. 로컬 시스템에서 Amazon EC2 인스턴스로 압축된 데이터베이스 백업 파일을 복사합니다. 필요한 경우 chmod를 사용하여 Amazon EC2 인스턴스의 대상 디렉터리에 대해 쓰기 권한이 있는지 확인하십시오. scp 또는 SSH 클라이언트를 사용하여 파일을 복사할 수 있습니다. 다음은 그 한 예입니다.

    Copy
    $ scp -r -i <key pair>.pem backup.sql.gz ec2-user@<EC2 DNS>:/<target_directory>/backup.sql.gz

    중요

    중요한 데이터는 반드시 보안 네트워크 전송 프로토콜을 사용하여 복사해야 합니다.

  5. Amazon EC2 인스턴스에 연결하고 다음 명령을 사용하여 최신 업데이트와 MySQL 클라이언트 도구를 설치합니다.

    Copy
    sudo yum update -y sudo yum install mysql-server -y

    자세한 내용은 Linux용 Amazon Elastic Compute Cloud 사용 설명서인스턴스에 연결 단원을 참조하십시오.

  6. Amazon EC2 인스턴스에 연결되어 있는 상태에서 데이터베이스 백업 파일의 압축을 풉니다. 예:

    • SQL 출력을 압축 해제하려면 다음 명령을 사용합니다.

      Copy
      gzip backup.sql.gz -d
    • 구분 기호로 분리된 텍스트 출력을 압축 해제하려면 다음 명령을 사용합니다.

      Copy
      tar xzvf backup.tar.gz

Amazon RDS MySQL 또는 MariaDB DB 인스턴스 만들기 및 Amazon EC2 인스턴스에서 데이터 가져오기

Amazon EC2 인스턴스와 같은 리전에 Amazon RDS MySQL 또는 MariaDB DB 인스턴스를 만들면 인터넷을 통해 가져올 수 있는 것보다 빠른 속도로 Amazon EC2에서 데이터베이스 백업 파일을 가져올 수 있습니다.

Amazon RDS MySQL 또는 MariaDB DB 인스턴스를 만들고 데이터를 가져오려면

  1. 이 Amazon RDS DB 인스턴스에 대해 예상되는 워크로드를 지원하기 위해 필요한 DB 인스턴스 클래스와 스토리지 공간의 양을 결정합니다. 이 프로세스에는 데이터 로드 절차를 위해 충분한 공간과 처리 용량이 어느 정도인지, 프로덕션 워크로드 처리에 필요한 것이 무엇인지 결정하는 과정이 포함되어야 합니다. 원본 MySQL 또는 MariaDB 데이터베이스의 크기와 리소스를 바탕으로 평가할 수 있습니다. 자세한 내용은 DB 인스턴스 클래스 단원을 참조하십시오.

  2. 워크로드를 지원하기 위해 Amazon RDS 프로비저닝된 IOPS(초당 입/출력 작업 수)가 필요할지 결정합니다. 프로비저닝된 IOPS 스토리지는 I/O 집약적인 온라인 트랜잭션 처리(OLTP) 워크로드를 위한 높은 처리량을 제공합니다. 자세한 내용은 성능 개선을 위한 Amazon RDS 프로비저닝된 IOPS 스토리지 단원을 참조하십시오.

  3. Amazon RDS 콘솔을 엽니다. 오른쪽 위 모서리에서 Amazon EC2 인스턴스를 포함한 리전을 선택합니다.

  4. [Launch a DB Instance]를 선택한 다음, DB 인스턴스에 대한 옵션을 선택하는 단계를 진행합니다.

    1. [Select Engine] 페이지에서 적절하게 [MySQL] 또는 [MariaDB]를 선택합니다.

    2. [Do you plan to use this database for production purposes?] 페이지에서 [No]를 선택하여 다중 AZ 배포 및 프로비저닝된 IOPS 스토리지 구성을 건너뜁니다.

    3. [Specify DB Details] 페이지의 [Instance Specifications] 섹션에서 사용자가 적당하다고 판단한 DB 인스턴스 클래스와 할당된 스토리지 크기를 지정합니다. [Multi-AZ Deployment]에 대해 [No]를 선택합니다. 2단계에서 결정한 대로 프로비저닝된 IOPS를 사용할지 지정합니다. [DB Engine Version]에 대해 원본 MySQL 인스턴스와 호환되는 버전을 다음과 같이 선택합니다.

      • 원본 인스턴스가 MySQL 5.1.x인 경우 Amazon RDS DB 인스턴스는 MySQL 5.5.x여야 합니다.

      • 원본 인스턴스가 MySQL 5.5.x인 경우 Amazon RDS DB 인스턴스는 MySQL 5.5.x 이상이어야 합니다.

      • 원본 인스턴스가 MySQL 5.6.x인 경우 Amazon RDS DB 인스턴스는 MySQL 5.6.x 또는 MariaDB여야 합니다.

      • 원본 인스턴스가 MySQL 5.7.x인 경우 Amazon RDS DB 인스턴스는 MySQL 5.7.x, 5.6.x 또는 MariaDB여야 합니다.

      • 원본 인스턴스가 MariaDB 5.1, 5.2 또는 5.3인 경우 Amazon RDS DB 인스턴스는 MySQL 5.1.x여야 합니다.

      • 원본 인스턴스가 MariaDB 5.5 이상인 경우 Amazon RDS DB 인스턴스는 MariaDB여야 합니다.

      중요

      소스 MySQL 5.6.x 인스턴스가 버전 5.6.4 이전 버전을 실행하거나 버전 5.6.4 이전 버전에서 업그레이드된 경우, 버전 5.6.27 이상을 실행하는 Amazon RDS MySQL DB 인스턴스를 생성해야 합니다.

      이 섹션에서 다른 모든 상자에는 기본값을 적용합니다.

      [Settings] 섹션에서 요청된 데이터베이스와 사용자 정보를 지정합니다. 완료되면 [Next]를 선택합니다.

    4. [Configure Advanced Settings] 페이지의 [Network & Security] 섹션에서 Amazon EC2 인스턴스의 경우와 동일한 VPC 및 VPC 보안 그룹을 선택합니다. 이 접근 방식에서는 Amazon EC2 인스턴스와 Amazon RDS 인스턴스가 네트워크를 통해 서로를 볼 수 있도록 합니다. [Publicly Accessible]을 Yes로 설정합니다. 이 항목의 뒷부분에 설명한 대로 소스 데이터베이스를 사용하여 복제를 설정하려면 DB 인스턴스에 공개적으로 액세스할 수 있어야 합니다. 이 섹션에서 다른 모든 상자에는 기본값을 적용합니다.

      [Database Options] 섹션에서 데이터베이스 이름을 지정합니다. 이 섹션에서 다른 모든 상자에는 기본값을 적용합니다.

      [Backup] 섹션에서 백업 보존 기간을 0으로 설정합니다. 이 섹션에서 다른 모든 상자에는 기본값을 적용합니다.

      [Maintenance] 섹션에서 모든 상자에 기본값을 적용합니다. 완료되면 [Launch Instance]를 선택합니다.

    데이터베이스 백업을 가져온 후에야 여러 가용 영역, 백업 보존 또는 읽기 전용 복제본을 구성할 수 있습니다. 가져오기가 완료되면 프로덕션 인스턴스에 대해 원하는 방식으로 다중 AZ 및 백업 보존을 설정할 수 있습니다. Amazon RDS MySQL DB 인스턴스를 만드는 자세한 방법은 MySQL 데이터베이스 엔진 기반 DB 인스턴스 생성 단원을 참조하십시오. Amazon RDS MariaDB DB 인스턴스를 만드는 자세한 방법은 MariaDB 데이터베이스 엔진을 실행하는 DB 인스턴스 생성 단원을 참조하십시오.

  5. Amazon RDS DB 인스턴스에 대한 기본 구성 옵션을 검토합니다. Amazon RDS Management Console의 왼쪽 탐색 창에서 [Parameter Groups]를 선택한 다음, [default.mysqlx.x] 또는 [default.mariadbx.x] 파라미터 그룹 옆에 있는 돋보기 아이콘을 선택합니다. 이 파라미터 그룹에 원하는 구성 옵션이 없는 경우 원하는 구성 옵션이 있는 다른 파라미터 그룹을 찾거나 새 파라미터 그룹을 만듭니다. 파라미터 그룹 만들기에 대한 자세한 내용은 DB 파라미터 그룹 작업 단원을 참조하십시오. 기본 설정과는 다른 파라미터 그룹을 사용하기로 했다면, 그 파라미터 그룹을 Amazon RDS DB 인스턴스와 연결합니다. 자세한 내용은 MySQL 데이터베이스 엔진 기반 DB 인스턴스의 변경 또는 MariaDB 데이터베이스 엔진 기반 DB 인스턴스의 변경 단원을 참조하십시오.

  6. 마스터 사용자로 새 Amazon RDS DB 인스턴스에 연결하고, 인스턴스에 액세스하기 위해 필요한 서비스, 애플리케이션 및 관리자를 지원하는 데 필요한 사용자를 만듭니다. Amazon RDS DB 인스턴스의 호스트 이름은 포트 번호를 포함하지 않은 인스턴스의 [Endpoint] 값입니다(예: mysampledb.claxc2oy9ak1.us-west-2.rds.amazonaws.com). Amazon RDS Management Console의 인스턴스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.

  7. Amazon EC2 인스턴스에 연결합니다. 자세한 내용은 Linux용 Amazon Elastic Compute Cloud 사용 설명서인스턴스에 연결 단원을 참조하십시오.

  8. mysql 명령을 사용하여 Amazon EC2 인스턴스에서 원격 호스트로 Amazon RDS DB 인스턴스에 연결합니다. 다음은 그 한 예입니다.

    Copy
    mysql -h <host_name> -P 3306 -u <db_master_user> -p

    호스트 이름은 Amazon RDS DB 인스턴스 엔드포인트의 DNS 이름입니다.

  9. mysql 프롬프트에서 source 명령을 실행하고 데이터베이스 덤프 파일의 이름을 전달하여 데이터를 Amazon RDS DB 인스턴스로 로드합니다.

    • SQL 형식인 경우 다음 명령을 사용합니다.

      Copy
      mysql> source backup.sql;
    • 구분 기호로 분리된 텍스트 형식의 경우, 우선 데이터베이스를 만듭니다(Amazon RDS DB 인스턴스를 설정할 때 만든 기본 데이터베이스가 아닌 경우).

      Copy
      $ mysql> create database <database_name>; $ mysql> use <database_name>;

      그런 다음, 테이블을 만듭니다.

      Copy
      $ mysql> source <table1>.sql $ mysql> source <table2>.sql etc…

      그런 다음, 데이터를 가져옵니다.

      Copy
      $ 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와 함께 데이터 서식 옵션을 사용했다면, mysqlimport 또는 LOAD DATA LOCAL INFILE과 함께 같은 옵션을 사용하여 데이터 파일 내용을 올바로 해석해야 합니다.

  10. 가져온 데이터베이스에 있는 테이블 중 1개 또는 2개에 대해 간단한 SELECT 쿼리를 실행하여 가져오기에 성공했는지 확인합니다.

참고

이 절차에 사용되는 Amazon EC2 인스턴스가 더 이상 필요하지 않은 경우 EC2 인스턴스를 종료하여 Amazon AWS 리소스 사용을 줄여야 합니다. EC2 인스턴스를 종료하려면 인스턴스 종료를 참조하십시오.

외부 데이터베이스와 새 Amazon RDS DB 인스턴스 간의 복제

Amazon RDS MySQL 또는 MariaDB DB 인스턴스로 데이터를 복사하고 전송하는 데 걸린 시간 중에 원본 데이터베이스가 업데이트되었을 것이므로, 복제를 사용하여 복사한 데이터베이스를 원본 데이터베이스에 맞춰 최신 상태로 업데이트할 수 있습니다.

참고

Amazon RDS DB 인스턴스에서 복제를 시작하는 데 필요한 권한은 제한되고 Amazon RDS 마스터 사용자는 사용할 수 없습니다. 이 때문에 Amazon RDS mysql.rds_set_external_master 명령 또는 mysql.rds_set_external_master_gtid 명령을 사용하여 복제를 구성한 다음, mysql.rds_start_replication 명령을 사용하여 라이브 데이터베이스와 Amazon RDS 데이터베이스 간에 복제를 시작해야 합니다.

복제를 시작하려면

앞에서 이진 로깅을 활성화하고 원본 데이터베이스에 대한 고유한 서버 ID를 설정했습니다. 이제는 라이브 데이터베이스를 복제 마스터로 포함하고 있는 복제본으로서 Amazon RDS DB 인스턴스를 설정할 수 있습니다.

  1. Amazon RDS Management Console에서 Amazon RDS DB 인스턴스에 대한 VPC 보안 그룹에 원본 데이터베이스를 호스트하는 서버의 IP 주소를 추가합니다. VPC 보안 그룹 수정에 관한 자세한 정보는 Amazon Virtual Private Cloud User Guide에서 Security Groups for Your VPC를 참조하십시오.

    원본 인스턴스와 통신할 수 있도록, Amazon RDS DB 인스턴스 IP 주소에서의 연결을 허용하도록 로컬 네트워크를 구성해야 할 수도 있습니다. Amazon RDS DB 인스턴스의 IP 주소를 찾으려면 host 명령을 사용합니다.

    Copy
    host <RDS_MySQL_DB_host_name>

    호스트 이름은 Amazon RDS DB 인스턴스 엔드포인트의 DNS 이름입니다(예: myinstance.123456789012.us-east-1.rds.amazonaws.com). Amazon RDS Management Console의 인스턴스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.

  2. 선택한 클라이언트를 사용하여 원본 인스턴스에 연결하고 복제에 사용될 사용자를 만듭니다. 이 계정은 오직 복제용으로만 사용되며 보안 향상을 위해 사용자의 도메인으로 제한되어야 합니다. 다음은 그 한 예입니다.

    Copy
    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  3. 원본 인스턴스의 경우 복제 사용자에게 REPLICATION CLIENTREPLICATION SLAVE 권한을 부여합니다. 예를 들어 도메인의 'repl_user' 사용자를 위해 모든 데이터베이스에서 REPLICATION CLIENTREPLICATION SLAVE 권한을 부여하려면 다음 명령을 실행합니다.

    Copy
    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  4. SQL 형식을 사용하여 백업 파일을 만들었고 외부 인스턴스가 MariaDB 10.0.2 이상이 아닌 경우 그 파일의 내용을 살펴보십시오.

    Copy
    cat backup.sql

    이 파일에는 마스터 로그 파일 이름과 위치를 포함한 CHANGE MASTER TO 설명이 포함됩니다. 이 설명은 mysqldump와 함께 --master-data 옵션을 사용할 때 백업 파일에 포함됩니다. MASTER_LOG_FILE 및 MASTER_LOG_POS의 값을 기록합니다.

    Copy
    -- -- 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.2 이상이 아닌 경우 이미 기존 데이터베이스의 백업 복사본을 만들려면 내 프로시저의 1단계에서 이진 로그 좌표를 가져옵니다.

    외부 인스턴스가 MariaDB 10.0.2 이상인 경우 이미 기존 데이터베이스의 백업 복사본을 만들려면 내 프로시저의 2단계에서 복제를 시작할 GTID를 가져옵니다.

  5. Amazon RDS DB 인스턴스를 복제본으로 만듭니다. 외부 인스턴스가 MariaDB 10.0.2 이상이 아닌 경우 마스터 사용자로서 Amazon RDS DB 인스턴스에 연결하고 mysql.rds_set_external_master 명령을 사용하여 원본 데이터베이스를 복제 마스터로 식별합니다. SQL 형식 백업 파일이 있는 경우 이전 단계에서 확인하거나, 구분 기호로 분리된 텍스트 형식을 사용한 경우 백업 파일을 만들 때 확인한 마스터 로그 파일 이름과 마스터 로그 위치를 사용합니다. 다음은 그 한 예입니다.

    Copy
    CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', '<password>', 'mysql-bin-changelog.000031', 107, 0);

    외부 인스턴스가 MariaDB 10.0.2 이상인 경우 마스터 사용자로서 Amazon RDS DB 인스턴스에 연결하고 mysql.rds_set_external_master_gtid 명령을 사용하여 원본 데이터베이스를 복제 마스터로 식별합니다. 기존 데이터베이스의 백업 복사본을 만들려면 내 프로시저의 2단계에서 확인된 GTID를 사용하십시오. 다음은 그 한 예입니다.

    Copy
    CALL mysql.rds_set_external_master_gtid ('Sourcedb.some.com',3306,'ReplicationUser','SomePassW0rd','0-123-456',0);
  6. Amazon RDS DB 인스턴스에서 mysql.rds_start_replication 명령을 실행하여 복제를 시작합니다.

    Copy
    CALL mysql.rds_start_replication;
  7. Amazon RDS DB 인스턴스에서 SHOW SLAVE STATUS 명령을 실행하여 복제본이 복제 마스터와 함께 최신 상태로 업데이트되는 시점을 결정합니다. SHOW SLAVE STATUS 명령의 결과에는 Seconds_Behind_Master 필드가 포함됩니다. Seconds_Behind_Master 필드에서 0을 반환하면 복제본이 마스터에 맞춰 최신 상태로 업데이트된 것입니다.

  8. Amazon RDS DB 인스턴스가 최신 상태로 업데이트된 후, 필요할 경우 그 데이터베이스를 복원할 수 있도록 자동 백업을 활성화합니다. Amazon RDS Management Console을 사용하여 Amazon RDS DB 인스턴스에 대한 자동 백업을 활성화하거나 수정할 수 있습니다. 자세한 내용은 백업 작업 섹션을 참조하십시오.

라이브 애플리케이션을 Amazon RDS 인스턴스로 리디렉션

Amazon RDS MySQL 또는 MariaDB DB 인스턴스가 복제 마스터로 업데이트되었으면, 라이브 애플리케이션을 업데이트하여 Amazon RDS 인스턴스를 사용할 수 있습니다.

라이브 애플리케이션을 Amazon RDS MySQL 또는 MariaDB DB 인스턴스로 리디렉션하고 복제를 중지하려면

  1. Amazon RDS DB 인스턴스에 대한 VPC 보안 그룹을 추가하려면 애플리케이션을 호스트하는 서버의 IP 주소를 추가합니다. VPC 보안 그룹 수정에 관한 자세한 정보는 Amazon Virtual Private Cloud User Guide에서 Security Groups for Your VPC를 참조하십시오.

  2. SHOW SLAVE STATUS 명령 결과에서 Seconds_Behind_Master 필드가 0인지 확인합니다. 이 필드가 0이라는 것은 복제본이 복제 마스터와 동일하게 최신 상태임을 나타냅니다.

    Copy
    SHOW SLAVE STATUS;
  3. mysql.rds_stop_replication 명령을 사용하여 Amazon RDS 인스턴스에 대한 복제를 중지합니다.

    Copy
    CALL mysql.rds_stop_replication;
  4. Amazon RDS DB 인스턴스를 사용할 수 있도록 애플리케이션을 업데이트합니다. 이 업데이트에는 일반적으로 Amazon RDS DB 인스턴스의 호스트 이름과 포트, 인스턴스와 연결하기 위한 사용자 계정과 암호, 사용할 데이터베이스를 식별하기 위해 연결 설정을 변경하는 과정이 포함됩니다.

  5. Amazon RDS DB 인스턴스가 더 이상 복제본과 같지 않도록 이 인스턴스에서 mysql.rds_reset_external_master 명령을 실행하여 복제 구성을 재설정합니다.

    Copy
    CALL mysql.rds_reset_external_master;
  6. 다중 AZ 지원 및 읽기 전용 복제본과 같은 Amazon RDS 기능을 추가로 활성화합니다. 자세한 내용은 고가용성(다중 AZ)PostgreSQL, MySQL 및 MariaDB 읽기 전용 복제본 작업 단원을 참조하십시오.

참고

이 절차에 사용되는 Amazon RDS 인스턴스가 더 이상 필요하지 않은 경우 RDS 인스턴스를 삭제하여 Amazon AWS 리소스 사용을 줄여야 합니다. RDS 인스턴스를 삭제하려면 DB 인스턴스 삭제 단원을 참조하십시오.