RDS for MySQL 스냅샷을 Aurora로 마이그레이션 - Amazon Aurora

RDS for MySQL 스냅샷을 Aurora로 마이그레이션

RDS for MySQL DB 인스턴스의 DB 스냅샷을 마이그레이션하면 Aurora MySQL DB 클러스터를 생성할 수 있습니다. 새로운 Aurora MySQL DB 클러스터는 원본 RDS for MySQL DB 인스턴스의 데이터로 채워집니다. DB 스냅샷은 Aurora MySQL과 호환되는 MySQL을 실행하는 Amazon RDS DB 인스턴스에서 생성해야 합니다.

DB 스냅샷을 마이그레이션하는 방법은 수동과 자동이 있습니다. DB 클러스터를 생성한 후에는 옵션으로 Aurora 복제본을 생성할 수도 있습니다.

참고

또한 소스 RDS for MySQL DB 인스턴스의 Aurora 읽기 전용 복제본을 생성하여 RDS for MySQL DB 인스턴스를 Aurora MySQL DB 클러스터로 마이그레이션할 수도 있습니다. 자세한 내용은 Aurora 읽기 전용 복제본을 사용하여 RDS for MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션 섹션을 참조하세요.

8.0.11, 8.0.13 및 8.0.15 등의 일부 이전 MySQL 8.0 버전에서는 Aurora MySQL 버전 3.05 이상으로 마이그레이션할 수 없습니다. 마이그레이션하기 전에 MySQL 버전 8.0.28로 업그레이드하는 것이 좋습니다.

일반적으로 다음 단계를 반드시 따라야 합니다.

  1. Aurora MySQL DB 클러스터에 프로비저닝할 공간 크기를 결정합니다. 자세한 내용은 필요한 공간 크기 섹션을 참조하세요.

  2. 콘솔을 사용하여 Amazon RDS MySQL 인스턴스가 있는 AWS 리전에 스냅샷을 생성합니다. DB 스냅샷 생성에 대한 자세한 내용은 DB 스냅샷 생성을 참조하십시오.

  3. DB 스냅샷이 DB 클러스터와 동일한 AWS 리전에 속하지 않을 때는 Amazon RDS 콘솔을 사용하여 DB 스냅샷을 해당 AWS 리전으로 복사합니다. DB 스냅샷 복사에 대한 자세한 내용은 DB 스냅샷 복사를 참조하십시오.

  4. 콘솔을 사용하여 DB 스냅샷을 마이그레이션한 후 원본 MySQL DB 인스턴스와 동일한 데이터베이스로 Aurora MySQL DB 클러스터를 생성하십시오.

주의

Amazon RDS는 AWS 계정마다 스냅샷 복사본을 한 번에 각 AWS 리전의 스냅샷 복사본 하나로 제한합니다.

필요한 공간 크기

MySQL DB 인스턴스의 스냅샷을 Aurora MySQL DB 클러스터로 마이그레이션할 때는 Aurora에서 마이그레이션 전에 Amazon EBS(Amazon Elastic Block Store) 볼륨을 사용하여 스냅샷의 데이터 형식을 결정합니다. 마이그레이션을 위해 데이터 형식을 결정할 때 공간이 추가로 필요한 경우가 간혹 있습니다.

MyISAM 테이블이 아니거나 압축되지 않은 테이블은 최대 크기가 16TB로 제한됩니다. MyISAM 테이블이 있는 경우 Aurora은 Aurora MySQL과 호환되도록 테이블을 변환하기 위해 볼륨에 추가 공간이 필요합니다. 압축된 테이블이 있으면 Aurora은 이 테이블을 Aurora 클러스터 볼륨에 저장하기 전에 확장할 추가 공간이 필요합니다. 이 추가 공간 요구 사항 때문에 MySQL DB 인스턴스에서 마이그레이션하는 MyISAM 테이블과 압축된 테이블이 크기가 8TB를 넘지 않는지 확인해야 합니다.

데이터를 Amazon Aurora MySQL로 마이그레이션하는 데 필요한 공간 크기 줄이기

데이터를 Amazon Aurora로 마이그레이션하기 전에 데이터베이스 스키마 설정을 변경할 수 있습니다. 이렇게 수정하는 이유는 다음과 같은 경우에 도움이 되기 때문입니다.

  • 마이그레이션 프로세스를 가속화하고 싶은 경우

  • 프로비저닝에 필요한 공간을 정확히 모르는 경우

  • 데이터 마이그레이션을 시도했지만 프로비저닝 공간 부족으로 마이그레이션이 실패한 경우

데이터베이스를 Amazon Aurora로 마이그레이션하는 프로세스를 개선하려면 다음과 같은 설정 변경이 가능합니다.

중요

이 업데이트는 반드시 프로덕션 인스턴스가 아닌 프로덕션 데이터베이스의 스냅샷에서 새롭게 복구된 DB 인스턴스에 실행해야 합니다. 그런 다음, 새로운 DB 인스턴스의 스냅샷에서 Aurora DB 클러스터로 데이터를 마이그레이션하면 프로덕션 데이터베이스의 서비스 중단을 방지할 수 있습니다.

테이블 유형 제한 또는 지침

MyISAM 테이블

Aurora MySQL는 InnoDB 테이블만 지원합니다. 데이터베이스에 MyISAM 테이블이 있으면 Aurora MySQL로 마이그레이션하기 전에 이 테이블을 변환해야 합니다. 이 때, 마이그레이션 절차 중 MyISAM에서 InnoDB로 변환하려면 추가 공간이 필요합니다.

공간이 부족할 가능성을 줄이거나 마이그레이션 프로세스 속도를 높이려면 MyISAM 테이블을 마이그레이션하기 전에 모두 InnoDB 테이블로 변환해야 합니다. 이렇게 변환되는 InnoDB 테이블의 크기는 Aurora MySQL에서 해당 테이블에 요구하는 크기와 동일합니다. MyISAM 테이블을 InnoDB로 변환하는 명령은 다음과 같습니다.

alter table <schema>.<table_name> engine=innodb, algorithm=copy;

압축된 테이블

Aurora MySQL에서는 압축된 테이블(ROW_FORMAT=COMPRESSED로 만든 테이블)이 지원되지 않습니다.

공간이 부족할 가능성을 줄이거나 마이그레이션 프로세스 속도를 높이려면 ROW_FORMATDEFAULT, COMPACT, DYNAMIC 또는 REDUNDANT로 설정하여 압축된 테이블을 확장합니다. 자세한 내용은 MySQL 설명서의 InnoDB 행 형식을 참조하세요.

기존 MySQL DB 인스턴스에서 다음 SQL 스크립트를 사용하면 데이터베이스에 있는 MyISAM 테이블 또는 압축된 테이블의 목록을 표시할 수 있습니다.

-- This script examines a MySQL database for conditions that block -- migrating the database into Amazon Aurora. -- It needs to be run from an account that has read permission for the -- INFORMATION_SCHEMA database. -- Verify that this is a supported version of MySQL. select msg as `==> Checking current version of MySQL.` from ( select 'This script should be run on MySQL version 5.6 or higher. ' + 'Earlier versions are not supported.' as msg, cast(substring_index(version(), '.', 1) as unsigned) * 100 + cast(substring_index(substring_index(version(), '.', 2), '.', -1) as unsigned) as major_minor ) as T where major_minor <> 506; -- List MyISAM and compressed tables. Include the table size. select concat(TABLE_SCHEMA, '.', TABLE_NAME) as `==> MyISAM or Compressed Tables`, round(((data_length + index_length) / 1024 / 1024), 2) "Approx size (MB)" from INFORMATION_SCHEMA.TABLES where ENGINE <> 'InnoDB' and ( -- User tables TABLE_SCHEMA not in ('mysql', 'performance_schema', 'information_schema') or -- Non-standard system tables ( TABLE_SCHEMA = 'mysql' and TABLE_NAME not in ( 'columns_priv', 'db', 'event', 'func', 'general_log', 'help_category', 'help_keyword', 'help_relation', 'help_topic', 'host', 'ndb_binlog_index', 'plugin', 'proc', 'procs_priv', 'proxies_priv', 'servers', 'slow_log', 'tables_priv', 'time_zone', 'time_zone_leap_second', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'user' ) ) ) or ( -- Compressed tables ROW_FORMAT = 'Compressed' );

스크립트를 실행하면 다음 예제와 비슷한 결과를 출력합니다. 이 예제는 MyISAM에서 InnoDB로 변환해야 하는 두 개의 테이블을 보여 줍니다. 그 밖에도 출력 화면에는 각 테이블의 크기도 메가바이트(MB) 단위로 나옵니다.

+---------------------------------+------------------+ | ==> MyISAM or Compressed Tables | Approx size (MB) | +---------------------------------+------------------+ | test.name_table | 2102.25 | | test.my_table | 65.25 | +---------------------------------+------------------+ 2 rows in set (0.01 sec)

RDS for MySQL DB 스냅샷을 Aurora MySQL DB 클러스터로 마이그레이션

AWS Management Console 또는 AWS CLI를 통해 RDS for MySQL DB 인스턴스의 DB 스냅샷을 마이그레이션하여 Aurora MySQL DB 클러스터를 생성할 수 있습니다. 새로운 Aurora MySQL DB 클러스터는 원본 RDS for MySQL DB 인스턴스의 데이터로 채워집니다. DB 스냅샷 생성에 대한 자세한 내용은 DB 스냅샷 생성을 참조하세요.

DB 스냅샷이 데이터를 마이그레이션하려는 AWS 리전에 없는 경우에는 DB 스냅샷을 해당 AWS 리전으로 복사합니다. DB 스냅샷 복사에 대한 자세한 내용은 DB 스냅샷 복사를 참조하세요.

AWS Management Console을 사용하여 DB 스냅샷을 마이그레이션할 경우, 콘솔에서 DB 클러스터와 기본 인스턴스 모두를 생성하는 데 필요한 작업이 따릅니다.

AWS KMS key을(를) 사용하여 새 Aurora MySQL DB 클러스터가 유휴 상태에서 암호화되도록 선택할 수도 있습니다.

AWS Management Console을 사용하여 MySQL DB 스냅샷을 마이그레이션하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. MySQL DB 인스턴스 또는 스냅샷에서 마이그레이션을 시작하십시오.

    DB 인스턴스에서 마이그레이션을 시작하려면

    1. 탐색 창에서 데이터베이스를 선택한 다음 MySQL DB 인스턴스를 선택합니다.

    2. 작업에서 최근 스냅샷 마이그레이션을 선택합니다.

    스냅샷에서 마이그레이션을 시작하려면

    1. [Snapshots]를 선택합니다.

    2. [Snapshots] 페이지에서 Aurora MySQL DB 클러스터로 마이그레이션하려는 스냅샷을 선택합니다.

    3. [Snapshot Actions]를 선택한 다음 [Migrate Snapshot]을 선택합니다.

    [Migrate Database] 페이지가 표시됩니다.

  3. [Migrate Database] 페이지에서 다음과 같이 값을 설정합니다.

    • Migrate to DB Engine: aurora를 선택합니다.

    • DB 엔진 버전: Aurora MySQL DB 클러스터에 대해 DB 엔진 버전을 선택합니다.

    • DB 인스턴스 클래스: 데이터베이스에 필요한 스토리지와 용량을 가진 DB 인스턴스 클래스를 선택합니다(예: db.r3.large). 데이터베이스의 데이터 용량이 늘어날수록 Aurora 클러스터 볼륨도 자동 확장됩니다. Aurora 클러스터 볼륨 크기는 최대 128 tebibytes (TiB)까지 증가할 수 있습니다. 따라서 현재 스토리지 요구 사항에 맞는 DB 인스턴스 클래스를 선택해야 합니다. 자세한 내용은 Amazon Aurora 스토리지 개요 섹션을 참조하세요.

    • [DB 인스턴스 식별자(DB Instance Identifier)]: 선택한 AWS 리전의 계정에 대해 고유한 DB 클러스터 이름을 입력합니다. 이 식별자는 DB 클러스터에 속한 인스턴스의 엔드포인트 주소로 사용됩니다. 선택한 AWS 리전 및 DB 엔진을 포함(예: aurora-cluster1)하는 등 이름에 지능적 요소를 추가할 수도 있습니다.

      DB 인스턴스 식별자는 다음과 같은 제약 조건이 있습니다.

      • 1~63자의 영숫자 문자 또는 하이픈으로 구성되어야 합니다.

      • 첫 번째 문자는 글자이어야 합니다.

      • 하이픈으로 끝나거나 하이픈이 2개 연속으로 이어져서는 안 됩니다.

      • 각 AWS 리전별로 AWS 계정마다 모든 DB 인스턴스가 고유해야 합니다.

    • Virtual Private Cloud(VPC): 기존 VPC가 있는 경우, VPC 식별자(예: vpc-a464d1c1)를 선택하여 해당 VPC를 Aurora MySQL DB 클러스터에 사용할 수 있습니다. VPC 생성에 대한 자세한 내용은 자습서: DB 클러스터에 사용할 Amazon VPC 생성(IPv4 전용) 단원을 참조하세요.

      기존 VPC가 없다면 새 VPC 생성을 선택하여 Aurora에서 VPC를 새로 생성하도록 할 수 있습니다.

    • 서브넷 그룹: 기존 서브넷 그룹이 있으면 해당 서브넷 그룹 식별자(예: gs-subnet-group1)를 선택하여 Aurora MySQL DB 클러스터에 그 서브넷 그룹을 사용할 수 있습니다.

      기존 서브넷 그룹이 없다면 새 서브넷 그룹 생성을 선택하여 Aurora에서 서브넷 그룹을 새로 생성하도록 할 수 있습니다.

    • [Public accessibility]: VPC에 있는 리소스만 DB 클러스터의 인스턴스에 액세스할 수 있도록 하려면 [No]를 선택합니다. 퍼블릭 네트워크에 있는 리소스가 DB 클러스터의 인스턴스에 액세스할 수 있도록 하려면 [Yes]를 선택합니다. 기본값은 [Yes]입니다.

      참고

      퍼블릭 서브넷에서는 프로덕션 DB 클러스터가 필요 없을 수도 있습니다. 애플리케이션 서버만 DB 클러스터에 액세스하기 때문입니다. DB 클러스터가 퍼블릭 서브넷에 필요 없는 경우에는 [Publicly Accessible]을 [No]로 설정합니다.

    • 가용 영역: Aurora MySQL DB 클러스터의 기본 인스턴스를 호스팅하려면 가용 영역을 선택합니다. Aurora에서 가용 영역을 선택하게 하려면 기본 설정 없음을 선택합니다.

    • 데이터베이스 포트: Aurora MySQL DB 클러스터의 인스턴스에 연결할 때 사용할 기본 포트를 입력합니다. 기본값은 3306입니다.

      참고

      기업 방화벽 뒤에 있어서 MySQL 기본 포트인 3306 같은 기본 포트에 액세스하지 못할 수도 있습니다. 이런 경우에는 기업 방화벽이 허용하는 포트 값을 입력합니다. 나중에 Aurora MySQL DB 클러스터에 연결할 때도 필요하므로 이 포트 값을 기억해야 합니다.

    • 암호화: 새 Aurora MySQL DB 클러스터를 저장 상태에서 암호화하려면 암호화 활성화를 선택합니다. 암호화 사용을 선택한 경우 KMS 키를 AWS KMS key 값으로 선택해야 합니다.

      DB 스냅샷이 암호화되어 있지 않으면 유휴 상태에서 DB 클러스터가 암호화되도록 암호화 키를 지정합니다.

      DB 스냅샷이 암호화되어 있으면 지정된 암호화 키를 사용하여 유휴 상태에서 DB 클러스터가 암호화되도록 암호화 키를 지정합니다. DB 스냅샷 또는 다른 키에서 사용하는 암호화 키를 지정할 수 있습니다. 암호화된 DB 스냅샷에서 암호화되지 않은 DB 클러스터를 생성할 수 없습니다.

    • 마이너 버전 자동 업그레이드: 이 설정은 Aurora MySQL DB 클러스터에 적용되지 않습니다.

      Aurora MySQL의 엔진 업데이트에 대한 자세한 내용은 Amazon Aurora MySQL에 대한 데이터베이스 엔진 업데이트 단원을 참조하십시오.

  4. [Migrate]를 선택하여 DB 스냅샷을 마이그레이션합니다.

  5. [Instances]를 선택한 다음 화살표 아이콘을 선택하여 DB 클러스터 세부 정보를 표시하고 마이그레이션 진행 상황을 모니터링합니다. 세부 정보 페이지를 보면 DB 클러스터의 기본 인스턴스에 연결하는 데 사용할 클러스터 엔드포인트가 표시됩니다. Aurora MySQL DB 클러스터 연결에 대한 자세한 내용은 Amazon Aurora DB 클러스터에 연결 단원을 참조하세요.

restore-db-cluster-from-snapshot 명령을 다음 파라미터와 함께 사용하여 RDS for MySQL DB 인스턴스의 DB 스냅샷으로 Aurora DB 클러스터를 생성할 수 있습니다.

  • --db-cluster-identifier - 생성할 DB 클러스터의 이름입니다.

  • --engine aurora-mysql - MySQL 5.7 호환 또는 8.0 호환 DB 클러스터의 경우.

  • --kms-key-id - DB 스냅샷 암호화 여부에 따라 선택적으로 DB 클러스터를 암호화하는 데 사용할 수 있는 AWS KMS key.

    • DB 스냅샷이 암호화되어 있지 않으면 유휴 상태에서 DB 클러스터가 암호화되도록 암호화 키를 지정합니다. 안 그러면 DB 클러스터가 암호화되지 않습니다.

    • DB 스냅샷이 암호화되어 있으면 지정된 암호화 키를 사용하여 유휴 상태에서 DB 클러스터가 암호화되도록 암호화 키를 지정합니다. 안 그러면 DB 스냅샷용 암호화 키를 사용할 때 DB 클러스터가 유휴 상태에서 암호화됩니다.

      참고

      암호화된 DB 스냅샷에서 암호화되지 않은 DB 클러스터를 생성할 수 없습니다.

  • --snapshot-identifier - 마이그레이션할 DB 스냅샷의 Amazon 리소스 이름(ARN)입니다. Amazon RDS ARN에 대한 자세한 내용은 Amazon Relational Database Service (Amazon RDS) 단원을 참조하십시오.

[RestoreDBClusterFromSnapshot] 명령으로 DB 스냅샷을 마이그레이션하면 이 명령으로 DB 클러스터와 기본 인스턴스가 모두 생성됩니다.

이 예제에서는 ARN이 mydbsnapshotARN으로 설정된 DB 스냅샷에서 이름이 mydbcluster인 MySQL 5.7–호환 DB 클러스터를 생성합니다.

Linux, macOS, Unix:

aws rds restore-db-cluster-from-snapshot \ --db-cluster-identifier mydbcluster \ --snapshot-identifier mydbsnapshotARN \ --engine aurora-mysql

Windows의 경우:

aws rds restore-db-cluster-from-snapshot ^ --db-cluster-identifier mydbcluster ^ --snapshot-identifier mydbsnapshotARN ^ --engine aurora-mysql

이 예제에서는 ARN이 mydbsnapshotARN으로 설정된 DB 스냅샷에서 이름이 mydbcluster인 MySQL 5.7–호환 DB 클러스터를 생성합니다.

Linux, macOS, Unix:

aws rds restore-db-cluster-from-snapshot \ --db-cluster-identifier mydbcluster \ --snapshot-identifier mydbsnapshotARN \ --engine aurora-mysql

Windows의 경우:

aws rds restore-db-cluster-from-snapshot ^ --db-cluster-identifier mydbcluster ^ --snapshot-identifier mydbsnapshotARN ^ --engine aurora-mysql