メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

DB スナップショットを使用した MySQL DB インスタンスから Amazon Aurora DB クラスターへのデータ移行

以下で説明するように、Amazon RDS MySQL DB スナップショットから Amazon Aurora DB クラスターにデータを移行 (コピー) できます。

注記

Amazon Aurora は MySQL と互換性があるため、MySQL データベースと Amazon Aurora DB クラスターの間でレプリケーションをセットアップすることによって、MySQL データベースのデータを移行できます。MySQL データベースでは MySQL のバージョン 5.5 以降を実行することをお勧めします。詳細については、「Amazon Aurora レプリケーション」を参照してください。

RDS MySQL スナップショットの Aurora への移行

Amazon RDS MySQL DB インスタンスの DB スナップショットを移行して、Aurora DB クラスターを作成することができます。新しい DB クラスターには、元の Amazon RDS MySQL DB インスタンスのデータが入力されます。DB スナップショットは、MySQL 5.6 を実行中の Amazon RDS DB インスタンスから作成されている必要があります。

非暗号化または暗号化された DB スナップショットを暗号化された Aurora DB クラスターに移行することも、非暗号化の DB スナップショットを非暗号化の Aurora DB クラスターに移行することもできます。暗号化された DB スナップショットを非暗号化の Aurora DB クラスターに移行することはできません。

手動で作成された DB スナップショットと自動的に作成された DB スナップショットのどちらも移行できます。DB クラスターが作成された後、オプションの Aurora レプリカを作成できます。

実行する必要がある一般的な手順は次のとおりです。

  1. Amazon Aurora DB クラスターをプロビジョニングするための容量を決定します。詳細については、「必要な容量」を参照してください。

  2. コンソールを使用して、Amazon RDS MySQL 5.6 インスタンスが配置されているリージョン内にスナップショットを作成します。DB スナップショットの作成については、「DB スナップショットの作成」を参照してください。

  3. DB スナップショットが DB クラスターと同じリージョン内にない場合は、Amazon RDS コンソールを使用して DB スナップショットをそのリージョンにコピーします。DB スナップショットのコピーについては、「DB スナップショットのコピー」を参照してください。

  4. コンソールを使用して DB スナップショットを移行し、MySQL 5.6 の元の DB インスタンスと同じデータベースを持つ Amazon Aurora DB クラスターを作成します。

警告

Amazon RDS では、各 AWS アカウントによる各リージョンへのスナップショットのコピーは 1 度に 1 つに制限されています。

必要な容量

MySQL DB インスタンスのスナップショットを Aurora DB クラスターに移行するとき、Aurora は、スナップショットのデータを移行する前に Amazon Elastic Block Store (Amazon EBS) ボリュームを使用してそのデータの書式を設定します。移行するデータの書式を設定するために追加容量が必要になる場合があります。DB クラスターにデータを移行するときは、以下のガイドラインと制限を確認してください。

  • Amazon Aurora では最大 64 TB のサイズのストレージまでサポートされていますが、スナップショットの Aurora DB クラスターへの移行処理は、スナップショットの EBS ボリュームのサイズに制限されます。したがって、お客様が移行できるスナップショットの最大サイズは 6 TB です。

  • MyISAM テーブルではないテーブルおよび圧縮されていないテーブルのサイズは、最大 6 TB が可能です。MyISAM テーブルの場合、Aurora では、Aurora と互換性のあるテーブルに変換するために、ボリュームに追加のスペースが必要になります。圧縮されたテーブルの場合、Aurora では、圧縮されたテーブルを Aurora クラスターボリュームに保存する前に展開するため、ボリュームに追加のスペースが必要になります。追加のスペースが必要になるため、MySQL DB インスタンスから移行される MyISAM テーブルおよび圧縮テーブルのサイズが 3 TB を超えていないことを確認する必要があります。

Amazon Aurora にデータを移行するために必要な領域の縮小

Amazon Aurora に移行する前にデータベーススキーマを変更することもできます。このような変更は、次のような場合に便利です。

  • 移行プロセスを高速化する必要がある場合。

  • プロビジョニングするために必要な領域の量がわからない場合。

  • データを移行しようとしたが、プロビジョニング済み領域の不足で移行が失敗した場合。

以下の変更を行うことで、データベースを Amazon Aurora に移行するプロセスを改善できます。

重要

これらの更新は、本稼働インスタンスではなく、本稼働データベースのスナップショットから復元された新しい DB インスタンスに対して実行します。その後、新しい DB インスタンスのスナップショットからデータを Amazon Aurora DB クラスターに移行することで、プロダクションデータベースに対するサービスの中断を回避できます。

テーブルタイプ 制限またはガイドライン

MyISAM テーブル

Amazon Aurora は InnoDB テーブルのみをサポートします。データベース内に MyISAM テーブルがある場合は、Amazon Aurora に移行する前にそれらのテーブルを変換する必要があります。移行中の MyISAM から InnoDB への変換プロセスには、追加領域が必要です。

領域不足が発生する可能性を低く抑えて移行プロセスを高速化するには、すべての MyISAM テーブルを移行前に InnoDB テーブルに変換しておきます。処理後の InnoDB テーブルのサイズは、Amazon Aurora がそのテーブルに対して必要とするサイズと同じになります。MyISAM テーブルを InnoDB に変換するには、次のコマンドを実行します。

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

圧縮テーブル

Amazon Aurora では、圧縮テーブル (ROW_FORMAT=COMPRESSED を使用して作成されたテーブル) をサポートしていません。

スペースが不足する可能性を減らしたり、移行処理を高速化するには、ROW_FORMATDEFAULTCOMPACTDYNAMIC または REDUNDANT に設定して圧縮テーブルを展開します。詳細については、https://dev.mysql.com/doc/refman/5.6/en/innodb-row-format.html を参照してください。

既存の MySQL DB インスタンスで以下の SQL スクリプトを使用して、データベースの MyISAM テーブルまたは圧縮テーブルのリストを表示できます。

Copy
-- This script examines a MySQL database for conditions that will block -- migrating the database into Amazon's Aurora DB. -- 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. ' + '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 に変換する必要のある 2 つのテーブルを示しています。出力には、メガバイト (MB) 単位で示した各テーブルのおおよそのサイズも含まれています。

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

AWS マネジメントコンソール

Amazon RDS MySQL DB インスタンスの DB スナップショットを移行して、Aurora DB クラスターを作成することができます。そして新しい DB クラスターには、DB スナップショットからのデータが取り込まれます。DB スナップショットは、MySQL 5.6 を実行中の Amazon RDS DB インスタンスから取得される必要があります。詳細については、「DB スナップショットの作成」を参照してください。

DB スナップショットがデータを検索する AWS リージョン内にない場合は、Amazon RDS コンソールを使用してその DB スナップショットをそのリージョンにコピーします。詳細については、「DB スナップショットのコピー」を参照してください。

コンソールを使用して DB スナップショットを移行すると、DB クラスターとプライマリインスタンスの両方がコンソールによって作成されます。

また、DB スナップショットが暗号化されているかどうかによって、オプションで AWS Key Management Service (AWS KMS) 暗号化キーを指定して DB クラスターを暗号化することもできます。

  • DB スナップショットが暗号化されていない場合は、暗号化キーを指定して保管時の DB クラスターを暗号化します。これを実行しない場合、DB クラスターは暗号化されません。

  • DB スナップショットが暗号化されている場合は、暗号化キーを指定し、その指定された暗号化キーを使用して保管時の DB クラスターを暗号化します。これを実行しない場合、保管時の DB クラスターは DB スナップショットの暗号化キーを使用して暗号化されます。

    注記

    暗号化された DB スナップショットから 非暗号化の DB クラスターを作成することはできません。

コンソールを使用して MySQL 5.6 DB スナップショットを移行するには:

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. [Snapshots] を選択します。

  3. [Snapshots] ページで、Aurora DB クラスターに移行するスナップショットを選択します。

  4. [Migrate Database] を選択します。

     Amazon Aurora にスナップショットを移行する
  5. [Migrate Database] ページで以下の値を設定します。

    • DB Instance Class: データベースに必要なストレージと容量のある DB インスタンスクラス (db.r3.large など) を選択します。Aurora クラスターボリュームは、データベースのデータの量が増えるにつれて、64 テラバイト (TB) の最大サイズまで自動的に大きくなります。そのため、現在のストレージ要件を満たしている DB インスタンスクラスを選択する必要があります。詳細については、「Amazon Aurora ストレージ」を参照してください。

    • DB Instance Identifier: DB クラスター名を入力します。選択したリージョン内で、自分のアカウントに対して一意であることが必要です。この識別子は、DB クラスター内のインスタンスのエンドポイントアドレスで使用されます。名前には、選択したリージョンと DB エンジンなどを含めると理解しやすくなります (例: aurora-cluster1)。

      DB インスタンス識別子には次の制約があります。

      • 1 ~ 63 文字の英数字またはハイフンを使用する必要があります。

      • 1 字目は文字である必要があります。

      • ハイフンを、文字列の最後に使用したり、2 つ続けて使用したりすることはできません。

      • 各 AWS リージョンの各 AWS アカウントのすべての DB インスタンスの中で一意である必要があります。

    • VPC: 既存の VPC がある場合は、その VPC 識別子 (vpc-a464d1c1 など) を選択することにより、その VPC を Amazon Aurora DB クラスターで使用できます。既存の VPC の使用については、「Amazon Aurora で使用する VPC を作成する方法」を参照してください。

      それ以外の場合は、[Create a new VPC] を選択することにより、Amazon RDS で VPC を作成できます。

    • Subnet Group: 既存のサブネットグループがある場合は、そのサブネットグループ識別子 (gs-subnet-group1 など) を選択することにより、そのサブネットグループを Amazon Aurora DB クラスターで使用できます。

      それ以外の場合は、[Create a new subnet group] を選択することにより、Amazon RDS でサブネットグループを作成できます。

    • Publicly Accessible: DB クラスターのインスタンスが VPC 内のリソースからのみアクセスできることを指定するには、[No] を選択します。DB クラスターのインスタンスがパブリックネットワーク上のリソースからアクセスできることを指定するには、[Yes] を選択します。デフォルトは [Yes] です。

      注記

      DB クラスターは、パブリックサブネット内に配置する必要がない可能性があります。これは、お客様のアプリケーションサーバーのみがお客様の DB クラスターへのアクセスを必要とするためです。DB クラスターをパブリックサブネットに配置する必要がない場合は、[Publicly Accessible] を [No] に設定します。

    • Availability Zone: Aurora DB クラスターのプライマリインスタンスをホストするアベイラビリティーゾーンを選択します。Amazon RDS で自動的にアベイラビリティーゾーンを選択するには、[No Preference] を選択します。

    • Database Port: DB クラスターのインスタンスへの接続に使用されるデフォルトのポートを入力します。デフォルト: 3306

      注記

      会社のファイアウォールで MySQL のデフォルトポートである 3306 などのデフォルトポートへのアクセスが許可されない場合があります。この場合は、会社のファイアウォールによって許可されるポート値を指定します。そのポート値を覚えておいてください。後で Aurora DB クラスターに接続するときに使用します。

    • [暗号を有効化]: 新しい Aurora DB クラスターを保管中に暗号化するには、[はい] を選択します。[Yes] を選択する場合、[Master Key] 値として AWS KMS 暗号化キーを選択する必要があります。

    • [マイナーバージョン自動アップグレード]: このオプションは Amazon Aurora には適用されません。この署名は無視できます。

     Amazon Aurora にスナップショットを移行する
  6. [Migrate] を選択して、DB スナップショットを移行します。

  7. [Instances] を選択して、矢印アイコンを選択して DB クラスターの詳細を表示し、移行の進行状況をモニタリングします。詳細ページで、DB クラスターのプライマリインスタンスへの接続に使用されているクラスターエンドポイントがわかります。Amazon Aurora DB クラスターとの接続の詳細については、「Amazon Aurora DB クラスターへの接続」を参照してください。

     DB クラスターの詳細

AWS CLI

Amazon RDS MySQL DB インスタンスの DB スナップショットを移行して、Aurora DB クラスターを作成することができます。そして新しい DB クラスターには、DB スナップショットからのデータが取り込まれます。DB スナップショットは、MySQL 5.6 を実行中の Amazon RDS DB インスタンスから取得される必要があります。詳細については、「DB スナップショットの作成」を参照してください。

DB スナップショットがデータを検索する AWS リージョン内にない場合は、DB スナップショットをそのリージョンにコピーします。詳細については、「DB スナップショットのコピー」を参照してください。

restore-db-cluster-from-snapshot コマンドを次のパラメータで使用することで、Amazon RDS MySQL DB インスタンスの DB スナップショットから Aurora DB クラスターを作成できます。

  • --db-cluster-identifier

    作成する DB クラスターの名前。

  • --engine aurora

  • --kms-key-id

    DB スナップショットが暗号化されているかどうかによって、AWS Key Management Service (AWS KMS) 暗号化キーはオプションで DB クラスターを暗号化します。

    • 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 クラスターとプライマリインスタンスの両方がこのコマンドによって作成されます。

この例では、mydbcluster という名前の DB クラスターを ARN が mydbsnapshotARN に設定されている DB スナップショットから作成します。

Linux、OS X、Unix の場合:

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

Windows の場合:

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

API

Amazon RDS MySQL DB インスタンスの DB スナップショットを移行して、Aurora DB クラスターを作成することができます。そして新しい DB クラスターには、DB スナップショットからのデータが取り込まれます。DB スナップショットは、MySQL 5.6 を実行中の Amazon RDS DB インスタンスから取得される必要があります。詳細については、「DB スナップショットの作成」を参照してください。

DB スナップショットがデータを検索する AWS リージョン内にない場合は、DB スナップショットをそのリージョンにコピーします。詳細については、「DB スナップショットのコピー」を参照してください。

RestoreDBClusterFromSnapshot コマンドを次のパラメータで使用することで、Amazon RDS MySQL DB インスタンスの DB スナップショットから Aurora DB クラスターを作成できます。

  • DBClusterIdentifier

    作成する DB クラスターの名前。

  • Engine=aurora

  • KmsKeyId

    DB スナップショットが暗号化されているかどうかによって、AWS Key Management Service (AWS KMS) 暗号化キーはオプションで DB クラスターを暗号化します。

    • DB スナップショットが暗号化されていない場合は、暗号化キーを指定して保管時の DB クラスターを暗号化します。これを実行しない場合、DB クラスターは暗号化されません。

    • DB スナップショットが暗号化されている場合は、暗号化キーを指定し、その指定された暗号化キーを使用して保管時の DB クラスターを暗号化します。これを実行しない場合、保管時の DB クラスターは DB スナップショットの暗号化キーを使用して暗号化されます。

      注記

      暗号化された DB スナップショットから 非暗号化の DB クラスターを作成することはできません。

  • SnapshotIdentifier

    移行する DB スナップショットの Amazon リソースネーム (ARN)。Amazon RDS ARN の詳細については、「Amazon Relational Database Service (Amazon RDS)」を参照してください。

RestoreDBClusterFromSnapshot コマンドを使用して DB スナップショットを移行すると、DB クラスターとプライマリインスタンスの両方がこのコマンドによって作成されます。

この例では、mydbcluster という名前の DB クラスターを ARN が mydbsnapshotARN に設定されている DB スナップショットから作成します。

Copy
https://rds.us-east-1.amazonaws.com/ ?Action=RestoreDBClusterFromSnapshot &DBClusterIdentifier=mydbcluster &Engine=aurora &SignatureMethod=HmacSHA256 &SignatureVersion=4 &SnapshotIdentifier=mydbsnapshotARN &Version=2014-10-31 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20160913/us-west-2/rds/aws4_request &X-Amz-Date=20170508T123701Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=65d0d03242d99a16ef3712142bfcd52ac63fd2f68fbb5efd7edfb1e89138da57

関連トピック