

# RDS MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션
<a name="AuroraMySQL.Migrating.RDSMySQL"></a>

RDS for MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터를 마이그레이션(복사)할 수 있습니다.

**Topics**
+ [RDS for MySQL 스냅샷을 Aurora로 마이그레이션](AuroraMySQL.Migrating.RDSMySQL.Snapshot.md)
+ [Aurora 읽기 전용 복제본을 사용하여 RDS for MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션](AuroraMySQL.Migrating.RDSMySQL.Replica.md)

**참고**  
Amazon Aurora MySQL는 MySQL과 호환되기 때문에 MySQL 데이터베이스와 Amazon Aurora MySQL DB 클러스터 사이에 복제를 설정하면 MySQL 데이터베이스에서 데이터를 마이그레이션할 수 있습니다. 자세한 내용은 [Amazon Aurora를 사용한 복제](Aurora.Replication.md) 섹션을 참조하세요.

# RDS for MySQL 스냅샷을 Aurora로 마이그레이션
<a name="AuroraMySQL.Migrating.RDSMySQL.Snapshot"></a>

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 클러스터로 데이터 마이그레이션](AuroraMySQL.Migrating.RDSMySQL.Replica.md) 섹션을 참조하세요.  
8.0.11, 8.0.13 및 8.0.15 등의 일부 이전 MySQL 8.0 버전에서는 Aurora MySQL 버전 3.05 이상으로 마이그레이션할 수 없습니다. 마이그레이션하기 전에 MySQL 버전 8.0.28로 업그레이드하는 것이 좋습니다.

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

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

1. 콘솔을 사용하여 Amazon RDS MySQL 인스턴스가 있는 AWS 리전에 스냅샷을 생성합니다. DB 스냅샷 생성에 대한 자세한 내용은 [DB 스냅샷 생성](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)을 참조하십시오.

1. DB 스냅샷이 DB 클러스터와 동일한 AWS 리전에 속하지 않을 때는 Amazon RDS 콘솔을 사용하여 DB 스냅샷을 해당 AWS 리전으로 복사합니다. DB 스냅샷 복사에 대한 자세한 내용은 [DB 스냅샷 복사](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html)를 참조하십시오.

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

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

## 필요한 공간 크기
<a name="AuroraMySQL.Migrating.RDSMySQL.Space"></a>

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로 마이그레이션하는 데 필요한 공간 크기 줄이기
<a name="AuroraMySQL.Migrating.RDSMySQL.PreImport"></a>

데이터를 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_FORMAT`을 `DEFAULT`, `COMPACT`, `DYNAMIC` 또는 `REDUNDANT`로 설정하여 압축된 테이블을 확장합니다. 자세한 내용은 MySQL 설명서의 [InnoDB 행 형식](https://dev.mysql.com/doc/refman/8.0/en/innodb-row-format.html)을 참조하세요.  | 

기존 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 클러스터로 마이그레이션
<a name="migrate-snapshot-ams-cluster"></a>

AWS Management Console 또는 AWS CLI를 통해 RDS for MySQL DB 인스턴스의 DB 스냅샷을 마이그레이션하여 Aurora MySQL DB 클러스터를 생성할 수 있습니다. 새로운 Aurora MySQL DB 클러스터는 원본 RDS for MySQL DB 인스턴스의 데이터로 채워집니다. DB 스냅샷 생성에 대한 자세한 내용은 [DB 스냅샷 생성](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)을 참조하세요.

DB 스냅샷이 데이터를 마이그레이션하려는 AWS 리전에 없는 경우에는 DB 스냅샷을 해당 AWS 리전으로 복사합니다. DB 스냅샷 복사에 대한 자세한 내용은 [DB 스냅샷 복사](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html)를 참조하세요.

### 콘솔
<a name="AuroraMySQL.Migrating.RDSMySQL.Import.Console"></a>

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/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

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

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

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

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

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

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

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

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

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

1. [**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 스토리지 개요](Aurora.Overview.StorageReliability.md#Aurora.Overview.Storage) 섹션을 참조하세요.
   + [**DB 인스턴스 식별자(DB Instance Identifier)**]: 선택한 AWS 리전의 계정에 대해 고유한 DB 클러스터 이름을 입력합니다. 이 식별자는 DB 클러스터에 속한 인스턴스의 엔드포인트 주소로 사용됩니다. 선택한 AWS 리전 및 DB 엔진을 포함(예: **aurora-cluster1**)하는 등 이름에 지능적 요소를 추가할 수도 있습니다.

     DB 인스턴스 식별자는 다음과 같은 제약 조건이 있습니다.
     + 1\$163자의 영숫자 문자 또는 하이픈으로 구성되어야 합니다.
     + 첫 번째 문자는 글자이어야 합니다.
     + 하이픈으로 끝나거나 하이픈이 2개 연속으로 이어져서는 안 됩니다.
     + 각 AWS 리전별로 AWS 계정마다 모든 DB 인스턴스가 고유해야 합니다.
   + **Virtual Private Cloud(VPC)**: 기존 VPC가 있는 경우, VPC 식별자(예: `vpc-a464d1c1`)를 선택하여 해당 VPC를 Aurora MySQL DB 클러스터에 사용할 수 있습니다. VPC 생성에 대한 자세한 내용은 [자습서: DB 클러스터에 사용할 Amazon VPC 생성(IPv4 전용)](CHAP_Tutorials.WebServerDB.CreateVPC.md) 단원을 참조하세요.

     기존 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에 대한 데이터베이스 엔진 업데이트Amazon Aurora MySQL 장기 지원(LTS) 및 베타 릴리스](AuroraMySQL.Updates.md) 단원을 참조하십시오.

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

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

### AWS CLI
<a name="USER_ImportAuroraCluster.CLI"></a>

[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) 명령을 다음 파라미터와 함께 사용하여 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)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds) 단원을 참조하십시오.

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

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

대상 LinuxmacOS, 또는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 클러스터를 생성합니다.

대상 LinuxmacOS, 또는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
```

# Aurora 읽기 전용 복제본을 사용하여 RDS for MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica"></a>

Aurora는 RDS for MySQL DB 엔진의 바이너리 로그 복제 기능을 사용하여 소스 MySQL DB 인스턴스의 Aurora 읽기 전용 복제본이라고 하는 특수한 유형의 DB 클러스터를 만들 수 있습니다. 소스 RDS for MySQL DB 인스턴스에 적용된 업데이트는 Aurora 읽기 전용 복제본에 비동기 방식으로 복제됩니다.

이 기능을 사용하여 소스 RDS for MySQL DB 인스턴스의 Aurora 읽기 전용 복제본을 생성해 RDS for MySQL DB 인스턴스에서 Aurora MySQL DB 클러스터로 마이그레이션하는 것을 권장합니다. RDS for MySQL DB 인스턴스와 Aurora 읽기 전용 복제본 간 복제 지연이 0이라면 클라이언트 애플리케이션을 Aurora 읽기 전용 복제본으로 이동한 다음, 복제를 중단하여 Aurora 읽기 전용 복제본을 독립형 Aurora MySQL DB 클러스터로 생성할 수 있습니다. 마이그레이션에는 상당한 시간이 드는데, 데이터 테비바이트(TiB)당 몇 시간 정도가 소요됩니다.

Aurora를 사용할 수 있는 리전 목록은 *AWS 일반 참조* 일반 참조에서 [Amazon Aurora](https://docs.aws.amazon.com/general/latest/gr/rande.html#aurora) 섹션을 참조하세요.

RDS for MySQL DB 인스턴스의 Aurora 읽기 전용 복제본을 생성하면 Amazon RDS는 소스 RDS for MySQL DB 인스턴스의 DB 스냅샷을 생성합니다(Amazon RDS에 프라이빗 형식이며, 요금이 발생하지 않음). 이어서 Amazon RDS는 DB 스냅샷에서 Aurora 읽기 전용 복제본으로 데이터를 마이그레이션합니다. 데이터가 DB 스냅샷에서 새로운 Aurora MySQL DB 클러스터로 마이그레이션된 후 Amazon RDS는 RDS for MySQL DB 인스턴스와 Aurora MySQL DB 클러스터 간 복제를 시작합니다. RDS for MySQL DB 인스턴스에 InnoDB 외의 스토리지 엔진을 사용하거나 압축된 행 형식을 사용하는 테이블이 포함된 경우, Aurora 읽기 전용 복제본을 만들기 전에 이 테이블들이 InnoDB 스토리지 엔진과 동적 행 형식을 사용하도록 변경함으로써 Aurora 읽기 전용 복제본 생성 과정의 속도를 높일 수 있습니다. MySQL DB 스냅샷을 Aurora MySQL DB 클러스터에 복사하는 과정에 관한 자세한 내용은 [RDS MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션](AuroraMySQL.Migrating.RDSMySQL.md) 단원을 참조하십시오.

RDS for MySQL DB 인스턴스 하나에 Aurora 읽기 전용 복제본 하나만 둘 수 있습니다.

**참고**  
Aurora MySQL과 복제 주요 항목인 RDS for MySQL DB 인스턴스의 MySQL 데이터베이스 엔진 버전의 기능 차이로 인해 복제 문제가 발생할 수 있습니다. 오류가 발생하면 [Amazon RDS 커뮤니티 포럼](https://forums.aws.amazon.com/forum.jspa?forumID=60) 또는 AWS Support에 문의하여 지원을 받을 수 있습니다.  
RDS for MySQL DB 인스턴스가 리전 간 읽기 전용 복제본의 소스인 경우 Aurora 읽기 전용 복제본을 생성할 수 없습니다.  
8.0.11, 8.0.13 및 8.0.15 등의 일부 이전 RDS for MySQL 8.0 버전에서는 Aurora MySQL 버전 3.05 이상으로 마이그레이션할 수 없습니다. 마이그레이션하기 전에 RDS for MySQL 버전 8.0.28로 업그레이드하는 것이 좋습니다.

MySQL 읽기 전용 복제본에 대한 자세한 내용은 [MariaDB, MySQL 및 PostgreSQL DB 인스턴스의 읽기 전용 복제본 작업](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)을 참조하십시오.

## Aurora 읽기 전용 복제본 생성
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Create"></a>

RDS for MySQL DB 인스턴스의 Aurora 읽기 전용 복제본은 콘솔, AWS CLI 또는 RDS API를 사용하여 생성할 수 있습니다.

### 콘솔
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Create.Console"></a>

**소스 RDS for MySQL DB 인스턴스에서 Aurora 읽기 전용 복제본을 생성하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. Aurora 읽기 전용 복제본의 원본으로 사용할 MySQL DB 인스턴스를 선택합니다.

1. **작업**에서 **Aurora 읽기 전용 복제본 만들기**를 선택합니다.

1. 다음 표의 설명대로 Aurora 읽기 전용 복제본에 사용하려는 DB 클러스터 사양을 선택합니다.    
<a name="aurora_read_replica_param_advice"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.RDSMySQL.Replica.html)

1. [**Create read replica**]를 선택합니다.

### AWS CLI
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Create.CLI"></a>

소스 RDS for MySQL DB 인스턴스에서 Aurora 읽기 전용 복제본을 생성하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) 및 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 명령을 사용하여 Aurora MySQL DB 클러스터를 새로 생성합니다. `create-db-cluster` 명령을 호출할 때는 원본 MySQL DB 인스턴스의 Amazon 리소스 이름(ARN)을 식별하는 `--replication-source-identifier` 파라미터를 포함시키십시오. Amazon RDS ARN에 대한 자세한 내용은 [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds) 단원을 참조하십시오.

Aurora 읽기 전용 복제본은 원본 MySQL DB 인스턴스와 동일한 마스터 사용자 이름, 마스터 암호, 데이터베이스 이름을 사용하므로 마스터 사용자 이름, 마스터 암호 또는 데이터베이스 이름을 지정하지 마십시오.

대상 LinuxmacOS, 또는Unix:

```
aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora \
    --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 \
    --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:primary-mysql-instance
```

Windows의 경우:

```
aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora ^
    --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 ^
    --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:primary-mysql-instance
```

콘솔을 사용하여 Aurora 읽기 전용 복제본을 생성하면 Aurora에서 DB 클러스터 Aurora 읽기 전용 복제본의 기본 인스턴스를 자동으로 생성합니다. AWS CLI를 사용하여 Aurora 읽기 전용 복제본을 생성할 경우 반드시 DB 클러스터용 기본 인스턴스를 명시적으로 생성해야 합니다. 기본 인스턴스는 클러스터에 생성된 최초의 DB 인스턴스입니다.

[https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 명령을 다음 파라미터와 함께 사용하여 DB 클러스터의 기본 인스턴스를 생성할 수 있습니다.
+ `--db-cluster-identifier`

  DB 클러스터의 이름입니다.
+ `--db-instance-class`

  기본 인스턴스에 사용할 DB 인스턴스 클래스의 이름입니다.
+ `--db-instance-identifier`

  기본 인스턴스의 이름입니다.
+ `--engine aurora`

이 예에서는 *myinstanceclass*에 지정된 DB 인스턴스 클래스를 사용하여 이름이 *myreadreplicacluster*인 DB 클러스터에 대해 이름이 *myreadreplicainstance*인 기본 인스턴스를 생성합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-db-instance \
    --db-cluster-identifier myreadreplicacluster \
    --db-instance-class myinstanceclass \
    --db-instance-identifier myreadreplicainstance \
    --engine aurora
```
Windows의 경우:  

```
aws rds create-db-instance ^
    --db-cluster-identifier myreadreplicacluster ^
    --db-instance-class myinstanceclass ^
    --db-instance-identifier myreadreplicainstance ^
    --engine aurora
```

### RDS API
<a name="Aurora.Migration.RDSMySQL.Create.API"></a>

소스 RDS for MySQL DB 인스턴스에서 Aurora 읽기 전용 복제본을 생성하려면 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) 및 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) Amazon RDS API 명령을 사용하여 새 Aurora DB 클러스터와 기본 인스턴스를 생성합니다. Aurora 읽기 전용 복제본은 소스 RDS for MySQL DB 인스턴스와 동일한 마스터 사용자 이름, 마스터 암호, 데이터베이스 이름을 사용하므로 마스터 사용자 이름, 마스터 암호 또는 데이터베이스 이름을 지정하지 않도록 합니다.

[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) Amazon RDS API 명령을 다음 파라미터와 함께 사용하여 소스 RDS for MySQL DB 인스턴스에서 Aurora 읽기 전용 복제본의 새 Aurora DB 클러스터를 생성할 수 있습니다.
+ `DBClusterIdentifier`

  생성할 DB 클러스터의 이름입니다.
+ `DBSubnetGroupName`

  이 DB 클러스터와 연결할 DB 서브넷 그룹의 이름입니다.
+ `Engine=aurora`
+ `KmsKeyId`

  MySQL DB 인스턴스 암호화 여부에 따라 DB 클러스터를 암호화할 수 있는 AWS KMS key입니다.
  + MySQL DB 인스턴스가 암호화되어 있지 않으면 유휴 상태에서 DB 클러스터가 암호화되도록 암호화 키를 지정합니다. 안 그러면 계정용 기본 암호화 키를 사용할 때 DB 클러스터가 유휴 상태에서 암호화됩니다.
  + MySQL DB 인스턴스가 암호화되어 있으면 지정된 암호화 키를 사용하여 유휴 상태에서 DB 클러스터가 암호화되도록 암호화 키를 지정합니다. 안 그러면 MySQL DB 인스턴스용 암호화 키를 사용할 때 DB 클러스터가 유휴 상태에서 암호화됩니다.
**참고**  
암호화된 MySQL DB 인스턴스에서 암호화되지 않은 DB 클러스터를 생성할 수 없습니다.
+ `ReplicationSourceIdentifier`

  원본 MySQL DB 인스턴스의 Amazon 리소스 이름(ARN)입니다. Amazon RDS ARN에 대한 자세한 내용은 [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds) 단원을 참조하십시오.
+ `VpcSecurityGroupIds`

  이 DB 클러스터와 연결할 EC2 VPC 보안 그룹 목록입니다.

이 예에서는 ARN이 *mysqlmasterARN*으로 설정되어 있으며, 이름이 *mysubnetgroup*인 DB 서브넷 그룹과 이름이 *mysecuritygroup*인 VPC 보안 그룹과 연결되어 있는 원본 MySQL DB 인스턴스에서 이름이 *myreadreplicacluster*인 DB클러스터를 생성합니다.

**Example**  

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CreateDBCluster
    &DBClusterIdentifier=myreadreplicacluster
    &DBSubnetGroupName=mysubnetgroup
    &Engine=aurora
    &ReplicationSourceIdentifier=mysqlprimaryARN
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &Version=2014-10-31
    &VpcSecurityGroupIds=mysecuritygroup
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20150927/us-east-1/rds/aws4_request
    &X-Amz-Date=20150927T164851Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=6a8f4bd6a98f649c75ea04a6b3929ecc75ac09739588391cd7250f5280e716db
```

콘솔을 사용하여 Aurora 읽기 전용 복제본을 생성하면 Aurora에서 DB 클러스터 Aurora 읽기 전용 복제본의 기본 인스턴스를 자동으로 생성합니다. AWS CLI를 사용하여 Aurora 읽기 전용 복제본을 생성할 경우 반드시 DB 클러스터용 기본 인스턴스를 명시적으로 생성해야 합니다. 기본 인스턴스는 클러스터에 생성된 최초의 DB 인스턴스입니다.

[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) Amazon RDS API 명령을 다음 파라미터와 함께 사용하여 DB 클러스터의 기본 인스턴스를 생성할 수 있습니다.
+ `DBClusterIdentifier`

  DB 클러스터의 이름입니다.
+ `DBInstanceClass`

  기본 인스턴스에 사용할 DB 인스턴스 클래스의 이름입니다.
+ `DBInstanceIdentifier`

  기본 인스턴스의 이름입니다.
+ `Engine=aurora`

이 예에서는 *myinstanceclass*에 지정된 DB 인스턴스 클래스를 사용하여 이름이 *myreadreplicacluster*인 DB 클러스터에 대해 이름이 *myreadreplicainstance*인 기본 인스턴스를 생성합니다.

**Example**  

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CreateDBInstance
    &DBClusterIdentifier=myreadreplicacluster
    &DBInstanceClass=myinstanceclass
    &DBInstanceIdentifier=myreadreplicainstance
    &Engine=aurora
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &Version=2014-09-01
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20140424/us-east-1/rds/aws4_request
    &X-Amz-Date=20140424T194844Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=bee4aabc750bf7dad0cd9e22b952bd6089d91e2a16592c2293e532eeaab8bc77
```

## Aurora 읽기 전용 복제본 보기
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.View"></a>

AWS Management Console 또는 AWS CLI를 사용하여 Aurora MySQL DB 클러스터의 MySQL에서 Aurora MySQL로의 복제 관계를 볼 수 있습니다.

### 콘솔
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.View.Console"></a>

**Aurora 읽기 전용 복제본의 주 MySQL DB 인스턴스를 보려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. Aurora 읽기 전용 복제본의 DB 클러스터를 클릭하여 세부 정보를 표시하십시오. 주 MySQL DB 인스턴스 정보가 **Replication source** 필드에 나타납니다.  
![\[MySQL의 기본 보기\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/images/aurora-repl6.png)

### AWS CLI
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.View.CLI"></a>

AWS CLI를 사용하여 Aurora MySQL DB 클러스터의 MySQL에서 Aurora MySQL로의 복제 관계를 보려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 및 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 사용합니다.

어떤 MySQL DB 인스턴스가 마스터인지 결정하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html)를 사용하고 `--db-cluster-identifier` 옵션에서 Aurora 읽기 전용 복제본의 클러스터 식별자를 지정하십시오. 복제 주요 항목인 DB 인스턴스의 ARN 출력에서 `ReplicationSourceIdentifier` 요소를 참조하십시오.

어느 DB 클러스터가 Aurora 읽기 전용 복제본인지 확인하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)를 사용하여 `--db-instance-identifier` 옵션용 MySQL DB 인스턴스의 인스턴스 식별자를 지정하십시오. Aurora 읽기 전용 복제본의 DB 클러스터 식별자의 출력에서 `ReadReplicaDBClusterIdentifiers` 요소를 참조하십시오.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds describe-db-clusters \
    --db-cluster-identifier myreadreplicacluster
```

```
aws rds describe-db-instances \
    --db-instance-identifier mysqlprimary
```
Windows의 경우:  

```
aws rds describe-db-clusters ^
    --db-cluster-identifier myreadreplicacluster
```

```
aws rds describe-db-instances ^
    --db-instance-identifier mysqlprimary
```

## Aurora 읽기 전용 복제본 승격
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Promote"></a>

마이그레이션이 완료된 후 AWS Management Console 또는 AWS CLI를 사용하여 Aurora 읽기 전용 복제본을 독립 실행형 DB 클러스터로 승격할 수 있습니다.

그런 다음 클라이언트 애플리케이션을 Aurora 읽기 전용 복제본의 엔드포인트로 보낼 수 있습니다. Aurora 엔드포인트에 대한 자세한 내용은 [Amazon Aurora 엔드포인트 연결](Aurora.Overview.Endpoints.md) 단원을 참조하세요. 승격은 상당히 빨리 완료되며, 승격 중에 Aurora 읽기 전용 복제본에 대한 읽기 및 쓰기가 가능합니다. 다만 승격 도중에 주 MySQL DB 인스턴스를 삭제하거나 DB 인스턴스와 Aurora 읽기 전용 복제본의 링크를 해제할 수는 없습니다.

Aurora 읽기 전용 복제본을 승격시키기 전에 원본 MySQL DB 인스턴스에 대한 트랜잭션 쓰기를 중단한 다음 Aurora 읽기 전용 복제본에서의 복제 지연이 0이 될 때까지 기다리십시오. Aurora 읽기 전용 복제본에서 `SHOW SLAVE STATUS`(Aurora MySQL 버전 2) 또는 `SHOW REPLICA STATUS`(Aurora MySQL 버전 3) 명령을 호출하여 Aurora 읽기 전용 복제본의 복제 지연을 확인할 수 있습니다. **마스터보다 수 초 지연** 값을 확인합니다.

주요 내용에 대한 쓰기 트랜잭션이 멈추고 복제 지연이 0이 된 후 Aurora 읽기 전용 복제본에 대한 쓰기를 시작할 수 있습니다. 그 전에 Aurora 읽기 전용 복제본에 쓰기를 수행하고 테이블을 수정하면(MySQL에서도 수정됨) Aurora에 대한 복제가 실패할 수 있습니다. 이렇게 될 경우, Aurora 읽기 전용 복제본을 삭제하고 다시 만들어야 합니다.

### 콘솔
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Promote.Console"></a>

**Aurora 읽기 전용 복제본을 Aurora DB 클러스터로 승격시키려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. Aurora 읽기 전용 복제본에 사용할 DB 클러스터를 선택합니다.

1. **작업**에서 **Promote(승격)**를 선택합니다.

1. **Promote Read Replica**를 선택합니다.

프로모션을 진행한 후 다음 절차에 따라 승격이 완료되었는지 확인합니다.

**Aurora 읽기 전용 복제본이 승격되었는지 확인하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 [**Events**]를 선택합니다.

1. **이벤트** 페이지에서 승격한 클러스터에 대한 `Promoted Read Replica cluster to a stand-alone database cluster` 이벤트가 있는지 확인합니다.

승격이 완료된 후에는 주 MySQL DB 인스턴스와 Aurora 읽기 전용 복제본의 링크가 해제되고, 원한다면 DB 인스턴스를 안전하게 삭제할 수 있습니다.

### AWS CLI
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Promote.CLI"></a>

Aurora 읽기 전용 복제본을 독립형 DB 클러스터로 승격하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html) AWS CLI 명령을 사용합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds promote-read-replica-db-cluster \
    --db-cluster-identifier myreadreplicacluster
```
Windows의 경우:  

```
aws rds promote-read-replica-db-cluster ^
    --db-cluster-identifier myreadreplicacluster
```