

# Amazon Aurora MySQL DB クラスターへのデータの移行
<a name="AuroraMySQL.Migrating"></a>

既存のデータベースから Amazon Aurora MySQL DB クラスターにデータを移行するために、複数のオプションがあります。また、移行オプションは、移行元のデータベースおよび移行するデータのサイズによっても異なります。

移行には物理と論理の 2 つのタイプがあります。物理移行とは、データベースファイルの物理コピーを使用してデータベースを移行することです。論理的な移行とは、挿入、更新、削除などの論理的な変更を適用することでデータベースを移行することです。

物理移行には以下の利点があります。
+ 物理移行は、特にデータベースのサイズが大きい場合、論理的な移行よりも高速です。
+ 物理移行用にバックアップを作成するとき、データベースのパフォーマンスが低下しません。
+ 物理移行では、複雑なデータベースコンポーネントを含め、出典データベースのすべての内容を移行できます。

物理移行には以下の制限があります。
+ `innodb_page_size` パラメータは、デフォルト値 (`16KB`) に設定する必要があります。
+ `innodb_data_file_path` パラメータは、デフォルトのデータファイル名 `"ibdata1:12M:autoextend"` を使用するデータファイル 1 つのみで設定する必要があります。2 つのデータファイルを持つデータベースや名前が異なるデータファイルを持つデータベースは、この方法では移行できません。

  `"innodb_data_file_path=ibdata1:50M; ibdata2:50M:autoextend"` や `"innodb_data_file_path=ibdata01:50M:autoextend"` などのファイル名は使用できません。
+ `innodb_log_files_in_group` パラメータは、デフォルト値 (`2`) に設定する必要があります。

論理的な移行には以下の利点があります。
+ 特定のテーブルやテーブルの一部など、データベースのサブセットを移行できます。
+ データは、物理ストレージ構造に関係なく移行できます。

論理的な移行には以下の制限があります。
+ 論理的な移行は通常、物理移行よりも低速です。
+ 複雑なデータベースコンポーネントにより、論理的な移行プロセスの速度が遅くなることがあります。場合によっては、複雑なデータベースコンポーネントにより、論理的な移行がブロックされることさえあります。

以下の表に示しているのは、移行のオプションと各オプションで使用する移行のタイプです。


| 移行元 | 移行タイプ | ソリューション | 
| --- | --- | --- | 
| RDS for MySQL DB インスタンス | 物理 | まず MySQL DB インスタンスの Aurora MySQL リードレプリカを作成することで、RDS for MySQL DB インスタンスから移行できます。MySQL DB インスタンスと Aurora MySQL リードレプリカとの間のレプリカラグが 0 の場合は、クライアントアプリケーションで Aurora リードレプリカから読み取り、レプリケーションを停止することで、Aurora MySQL リードレプリカを読み取りと書き込み用のスタンドアロンの Aurora MySQL DB クラスターにすることができます。詳細については、「[Aurora リードレプリカを使用した、RDS for MySQL DB インスタンスから Amazon Aurora MySQL DB クラスターへのデータの移行](AuroraMySQL.Migrating.RDSMySQL.Replica.md)」を参照してください。 | 
| RDS for MySQL DB スナップショット | 物理 | RDS for MySQL DB スナップショットから Amazon Aurora MySQL DB クラスターに直接データを移行できます。詳細については、「[Aurora への RDS for MySQL スナップショットの移行](AuroraMySQL.Migrating.RDSMySQL.Snapshot.md)」を参照してください。 | 
| Amazon RDS 外部の MySQL データベース | 論理 | `mysqldump` ユーティリティを使用してデータのダンプを作成し、そのデータを既存の Amazon Aurora MySQL DB クラスターにインポートできます。詳細については、「[mysqldump を使用した MySQL から Amazon Aurora MySQL への論理的移行](AuroraMySQL.Migrating.ExtMySQL.mysqldump.md)」を参照してください。<br />外部 MySQL データベースからの移行中にデータベースユーザーのメタデータをエクスポートするには、`mysqldump` の代わりに MySQL Shell コマンドを使用することもできます。詳細については、「[インスタンスダンプユーティリティ、スキーマダンプユーティリティ、テーブルダンプユーティリティ](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html#mysql-shell-utilities-dump-about)」を参照してください。 MySQL 8.0.34 以降、[mysqlpump](https://dev.mysql.com/doc/refman/8.0/en/mysqlpump.html) ユーティリティは廃止されました。  | 
| Amazon RDS 外部の MySQL データベース | 物理 | データベースから Amazon Simple Storage Service (Amazon S3) バケットにバックアップファイルをコピーし、これらのファイルから Amazon Aurora MySQL DB クラスターを復元できます。このオプションは、`mysqldump` を使用したデータの移行よりもかなり高速になる場合があります。詳細については、「[Percona XtraBackup と Amazon S3 を使用した MySQL からの物理的な移行](AuroraMySQL.Migrating.ExtMySQL.S3.md)」を参照してください。 | 
| Amazon RDS 外部の MySQL データベース | 論理 | データベースのデータをテキストファイルとして保存し、そのファイルを Amazon S3 バケットにコピーできます。次に、`LOAD DATA FROM S3` MySQL コマンドを使用して、そのデータを既存の Aurora MySQL DB クラスター内にロードできます。詳細については、「[Amazon S3 バケットのテキストファイルから Amazon Aurora MySQL DB クラスターへのデータのロード](AuroraMySQL.Integrating.LoadFromS3.md)」を参照してください。 | 
| MySQL と互換性がないデータベース | 論理 | AWS Database Migration Service (AWS DMS) は、MySQL との互換性がないデータベースからのデータを移行するのに使用できます。AWS DMS の詳細については、「[AWS Database Migration Service とは](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)」を参照してください。 | 

**注記**  
外部の MySQL データベースを Amazon RDS に移行する場合、表で説明している移行のオプションは、データベースが InnoDB または MyISAM テーブルスペースをサポートしている場合にのみサポートされます。  
Aurora MySQL に移行中の MySQL データベースで `memcached` が使用されている場合は、移行前に `memcached` を削除します。  
8.0.11、8.0.13、8.0.15 などの一部の古い MySQL 8.0 バージョンからは Aurora MySQL バージョン 3.05 以上に移行できません。移行する前に MySQL バージョン 8.0.28 にアップグレードすることをお勧めします。