

# AWS Database Migration Service を使用した、EC2 データベースの Amazon Aurora への自動移行
<a name="USER_DMS_migration"></a>

Aurora コンソールを使用して、EC2 データベースを Aurora に移行できます。Aurora では AWS Database Migration Service (AWS DMS) を使用してソース EC2 データベースを移行します。AWS DMS によって、リレーショナルデータベースの AWS クラウドへの移行が可能になります。AWS Database Migration Service の詳細については、*AWS Database Migration Service ユーザーガイド* の [AWS Database Migration Service とは](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) を参照してください。

移行を開始するには、データの移行先となる同等の Aurora DB クラスターを作成する必要があります。ターゲットデータベースを作成したら、そのデータベースに EC2 データベースをインポートできます。ソースデータベースが 1TiB 未満の場合、この移行アクションにより、データを Aurora に移行するために必要となる時間とリソースが節約されます。

## 概要
<a name="USER_DMS_migration-overview"></a>

Aurora コンソールで、EC2 データベースを同等の Aurora データベースに移行できます。コンソールからの移行を有効にするには、Aurora データベースを作成する必要があります。

次のデータベースエンジンの EC2 データベースを移行できます。
+ MySQL
+ PostgreSQL

この移行プロセスには、以下のステップが含まれます。
+ Aurora で同等のデータベースを作成します。データベースを同等にするには、同じデータベースエンジンおよび互換性のあるエンジンバージョンが必要です。また、データベースは同じ VPC 内にある必要があります。データベースを作成する手順については、「[Amazon Aurora DB クラスターの作成](Aurora.CreateInstance.md)」を参照してください。
+ データベースのレプリケーションのタイプを選択します。
  + **フルロード移行** – Aurora は、ソースデータベース全体をターゲットデータベースにコピーし、必要に応じてターゲットに新しいテーブルを作成します。
**注記**  
このオプションを選択すると、対象の Aurora データベースが停止します。
  + **フルロードと変更データキャプチャ (CDC) 移行** – フルロード移行と同様に、このオプションでは、Aurora はソースデータベース全体をターゲットデータベースにコピーします。ただし、フルロード移行の後は、Aurora はソースでキャプチャされた変更をターゲットデータベースに適用します。変更データキャプチャでは、データベースエンジンのネイティブ API を使用してデータベースログへの変更を収集します。
**注記**  
このオプションを選択すると、対象の Aurora データベースが停止します。
  + **変更データキャプチャ (CDC)** — このオプションを使用すると、移行中もターゲットデータベースを使用できます。Aurora は、ソースデータベースの進行中の変更をターゲットデータベースに移行します。
+ Aurora は、移行を容易にするために必要なネットワークリソースを作成します。Aurora が必要なリソースを作成すると、作成されたリソースについて通知が行われ、データ転送を開始できます。

  移行の完了に必要な時間は、レプリケーションのタイプとソースデータベースのサイズによって異なります。

## 前提条件
<a name="USER_DMS_migration-Prerequisites"></a>

### MySQL
<a name="USER_DMS_migration-Prerequisites.MySQL"></a>

MySQL データベースをソースデータベースとして使用し始める前に、次の前提条件を満たしていることを確認してください。これらの前提条件は、AWS が管理するソースに適用されます。

レプリケーション管理者ロールを持つ AWS DMS のアカウントを保有している必要があります。ロールには、次の権限が必要です。
+ **[REPLICATION CLIENT]** (レプリケーション クライアント) – この権限は、CDC タスクにのみ必要です。つまり、フルロードのみのタスクにはこの権限は必要ありません。
+ **[REPLICATION SLAVE]** (レプリケーション スレーブ) – この権限は、CDC タスクにのみ必要です。つまり、フルロードのみのタスクにはこの権限は必要ありません。

AWS DMS ユーザーには、レプリケーション対象に指定されたソーステーブルに対する SELECT 権限も必要です。

MySQL 固有の移行前評価を使用する場合、次の権限を付与します。

```
grant select on mysql.user to <dms_user>;
grant select on mysql.db to <dms_user>;
grant select on mysql.tables_priv to <dms_user>;
grant select on mysql.role_edges to <dms_user>  #only for MySQL version 8.0.11 and higher
```

### PostgreSQL
<a name="USER_DMS_migration-Prerequisites.PostgreSQL"></a>

AWS が管理する PostgreSQL ソースデータベースからデータを移行する前に、以下を実行します：
+ AWS DMS の PostgreSQL ソースエンドポイントのユーザーアカウントとして、PostgreSQL DB インスタンスに必要な最小限のアクセス許可を持つ AWS ユーザーアカウントを使用することをお勧めします。管理アカウントの使用はお勧めしません。このアカウントには `rds_superuser` ロールと `rds_replication` ロールが必要です。`rds_replication` ロールは、論理スロットを管理し、論理スロットを使用してデータをストリーミングするアクセス権許可付与します。

**注記**  
一部の AWS DMS トランザクションでは、DMS エンジンで再度そのパラメータが使用されるまでの間、しばらくアイドル状態になります。PostgreSQL バージョン 9.6 以降で `idle_in_transaction_session_timeout` パラメータを使用すると、アイドル状態のトランザクションでタイムアウトやエラーが生じる場合があります。

## 制限事項
<a name="USER_DMS_migration-Limitations"></a>

自動移行プロセスには、次の制限が適用されます。
+ ソースデータベースの移行を開始するには、ターゲットデータベースのステータスが**[使用可能]** である必要があります。
+ MySQL ソースデータベースから移行する場合、Aurora アカウントにレプリケーション管理者ロールが必要です。また、そのロールに適切な権限を適用する必要があります。
+ EC2 インスタンスとターゲットデータベースは同じ VPC 内にある必要があります。
+ **[EC2 データベースからデータを移行]** アクションを使用する場合、EC2 データベースを次のターゲットデータベースに移行することはできません。
  + Aurora global database
  + Aurora Limitless database
  + Aurora Serverless v1
  + MySQL バージョン 5.7 未満のデータベース
  + PostgreSQL バージョン 10.4 未満のデータベース