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

Amazon RDS MySQL DB インスタンスへのデータのインポート

Amazon Relational Database Service (Amazon RDS) は、バックアップファイルを使用して MySQL データベースのインポートをサポートします。オンプレミスデータベースのバックアップを作成して Amazon Simple Storage Service (Amazon S3) に保存した後、MySQL を実行する新しい Amazon RDS DB インスタンスにバックアップファイルを復元できます。

次の図は、サポートされるシナリオを示しています。

 S3 アーキテクチャからバックアップファイルをインポートする MySQL

Amazon S3 からのバックアップ ファイルのインポート は、MySQL バージョン 5.6 でサポートされています。Amazon S3 からのバックアップファイルのインポートはすべての AWS リージョンで実行できます。

バックアップファイルの作成、コピー、復元時にデータベースをオフラインにできる場合、データベースを Amazon RDS にインポートする方法としてバックアップファイルの使用をお勧めします。オンプレミスデータベースをオフラインにできない場合は、このトピックで説明しているように Amazon S3 経由で Amazon RDS に移行した後にバイナリログのレプリケーションを使用してデータベースを更新できます。詳細については、「Amazon RDS の外部で実行される MySQL または MariaDB インスタンスとのレプリケーション」を参照してください。また AWS Database Migration Service を使用してデータベースを Amazon RDS に移行することもできます。詳細については、「AWS Database Migration Service とは」を参照してください。

Amazon S3 から Amazon RDS へのバックアップファイルのインポートに関する制限と推奨事項

以下に、Amazon S3 からのバックアップファイルのインポートに関する制限と推奨事項を示します。

  • データは新しい DB インスタンスにのみインポートでき、既存の DB インスタンスにはできません。

  • オンプレミスデータベースのバックアップを作成するには、Percona XtraBackup を使用する必要があります。

  • デフォルトの MySQL データディレクトリ外で定義されたテーブルを含むソースデータベースから移行することはできません。

  • MySQL 5.5 または 5.7 データベースはインポートできません。

  • Amazon RDS MySQL 5.7 データベースにオンプレミスの MySQL 5.6 データベースをインポートすることはできません。インポートが完了した後 DB インスタンスをアップグレードできます。

  • 6 TB を超えるサイズのデータベースを復元することはできません。

  • 暗号化したソース データベースから復元することはできませんが、暗号化された Amazon RDS DB インスタンスには復元できます。

  • Amazon S3 バケットは暗号化できません。

  • Amazon RDS DB インスタンスとは異なる AWS リージョンで Amazon S3 バケットから復元することはできません。

  • Amazon S3 からのインポートは、db.t2.micro DB インスタンスクラスでサポートされていません。ただし、1 つの DB インスタンスクラスに復元した後、後でインスタンスクラスを変更できます。 インスタンスクラスの詳細については、「すべての利用可能な DB インスタンスクラスの仕様」を参照してください。

  • Amazon S3 では、Amazon S3 バケットにアップロードするファイルのサイズが 5 TB に制限されます。バックアップファイルが 5 TB を超える場合は、バックアップファイルを小さいファイルに分割する必要があります。

  • Amazon RDS では、Amazon S3 バケットにアップロードするファイルの数が百万までに制限されます。データベースのバックアップデータ (すべての完全および増分バックアップを含む) が百万ファイルを超える場合は、tarball (.tar.gz) ファイルを使用して完全および増分バックアップファイルを Amazon S3 バケットに保存します。

  • ユーザーアカウントは自動的にインポートされません。ソースデータベースからのユーザーアカウントを保存し、後でそれらを新しい DB インスタンスに追加します。

  • 関数は自動的にインポートされません。ソースデータベースからの関数を保存し、後でそれらを新しい DB インスタンスに追加します。

  • ストアドプロシージャは自動的にインポートされません。ソースデータベースからのストアドプロシージャを保存し、後でそれらを新しい DB インスタンスに追加します。

  • タイムゾーン情報は自動的にインポートされません。ソースデータベースのタイムゾーン情報を記録し、新しい DB インスタンスのタイムゾーンを設定します。詳細については、「MySQL DB インスタンスのローカルタイムゾーン」を参照してください。

  • 後方移行はメジャーバージョンとマイナーバージョン両方でサポートされません。たとえば、バージョン 5.7 からバージョン 5.6 に移行することはできません。また、バージョン 5.6.39 からバージョン 5.6.37 に移行することもできません。

Amazon S3 から Amazon RDS にバックアップ ファイルをインポートするための設定の概要

Amazon S3 から Amazon RDS にバックアップファイルをインポートするために設定が必要なコンポーネントは次のとおりです。

  • バックアップファイルを保存する Amazon S3 バケット。

  • Percona XtraBackup で作成されたオンプレミスデータベースのバックアップ。

  • Amazon RDS によるバケットへのアクセスを許可する AWS Identity and Access Management (IAM) ロール。

Amazon S3 バケットがすでにある場合はそれを使用できます。Amazon S3 バケットがない場合、新しいバケットを作成できます。Amazon S3 バケットは暗号化できません。新しいバケットを作成する場合は、「バケットの作成」を参照してください。

Percona XtraBackup ツールを使用してバックアップを作成します。詳細については、「データベースバックアップの作成」を参照してください。

IAM ロールがすでにある場合はそれを使用できます。IAM ロールがない場合、手動で新しいロールを作成できます。また、AWS マネジメントコンソールを使用してデータベースを復元するときに、ウィザードでアカウントに新しい IAM ロールを自動的に作成することもできます。新しい IAM ロールを手動で作成するか、信頼ポリシーとアクセス許可ポリシーを既存の IAM ロールにアタッチする場合は、「IAM ロールの手動作成」を参照してください。新しい IAM ロールを自動で作成する場合は、「AWS マネジメントコンソール」の手順に従ってください。

データベースバックアップの作成

Percona XtraBackup ソフトウェアを使用してバックアップを作成します。Amazon RDS は、Percona XtraBackup ソフトウェアの次のバージョンで作成されたバックアップファイルをサポートします。

  • MySQL 5.6 では、Percona XtraBackup バージョン 2.3 を使用します。

Percona XtraBackup をまだインストールしていない場合は、最新バージョンのソフトウェアを使用することをお勧めします。Percona XtraBackup は、Percona ウェブサイトからダウンロードできます。

Percona XtraBackup を使用して MySQL データベース ファイルの完全バックアップを作成できます。または、Percona XtraBackup を使用して MySQL データベースファイルをバックアップ済みである場合は、既存の完全および増分バックアップディレクトリおよびファイルをアップロードできます。

Percona XtraBackup を使用したデータベースのバックアップの詳細については、Percona ウェブサイトの「Percona XtraBackup - Documentation」および「The innobackupex Script」を参照してください。

Percona XtraBackup での完全バックアップの作成

Amazon S3 から復元できる、MySQL データベースファイルの完全バックアップを作成するには、Percona XtraBackup ユーティリティ (innobackupex) を使用してデータベースをバックアップします。

たとえば、次のコマンドは MySQL データベースのバックアップを作成し、ファイルを /on-premises/s3-restore/backup フォルダに保存します。

innobackupex --user=<myuser> --password=<password> --no-timestamp /on-premises/s3-restore/backup

バックアップを 1 つのファイル (必要に応じて分割できます) に圧縮する場合、以下のいずれかの形式を使用してバックアップを保存できます。

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

次のコマンドでは、複数の Gzip ファイルに分割された MySQL データベースのバックアップを作成します。

innobackupex --user=<myuser> --password=<password> --stream=tar \ /on-premises/s3-restore/backup | gzip - | split -d --bytes=500MB \ - /on-premises/s3-restore/backup/backup.tar.gz

次のコマンドでは、複数の tar ファイルに分割された MySQL データベースのバックアップを作成します。

innobackupex --user=<myuser> --password=<password> --stream=tar \ /on-premises/s3-restore/backup | split -d --bytes=500MB \ - /on-premises/s3-restore/backup/backup.tar

たとえば、次のコマンドでは、複数の xbstream ファイルに分割された MySQL データベースのバックアップを作成します。

innobackupex --stream=xbstream \ /on-premises/s3-restore/backup | split -d --bytes=500MB \ - /on-premises/s3-restore/backup/backup.xbstream

Percona XtraBackup での増分バックアップの使用

Percona XtraBackup を使用して MySQL データベースファイルの完全および増分バックアップを作成済みである場合は、完全バックアップを作成して Amazon S3 にアップロードする必要はありません。代わりに、既存のバックアップのディレクトリおよびファイルを Amazon S3 バケットにコピーして、多大な時間を節約できます。Percona XtraBackup を使用した増分バックアップの作成の詳細については、「Incremental Backups with innobackupex」を参照してください。

既存の完全および増分バックアップファイルを Amazon S3 バケットにコピーするときは、ベースディレクトリのコンテンツを再帰的にコピーする必要があります。これらのコンテンツには、完全バックアップと、すべての増分バックアップディレクトリおよびファイルが含まれます。このコピーは、Amazon S3 バケットのディレクトリ構造を維持する必要があります。Amazon RDS は、すべてのファイルとディレクトリを反復処理します。Amazon RDS では、各増分バックアップに含まれている xtrabackup-checkpoints ファイルを使用してベースディレクトリを識別し、ログシーケンス番号 (LSN) の範囲に従って増分バックアップを整理します。

Percona XtraBackup のバックアップに関する考慮事項

Amazon RDS では、ファイル名に基づいてバックアップファイルを使用します。ファイル形式に基づいた適切なファイル拡張子でバックアップファイルの名前を付けてください。たとえば、Percona xbstream 形式を使用して保存されるファイルでは、.xbstream のようにします。

Amazon RDS では、アルファベット順および通常の数値順にバックアップファイルを使用します。バックアップファイルが適切な順序で書き込まれ、名前が付けられるように、innobackupex コマンドを発行するときは必ず split オプションを使用します。

Amazon RDS では、Percona XtraBackup を使用して作成された部分バックアップがサポートされていません。データベースのソースファイルをバックアップするときに、--include--tables-file、または --databases オプションを使用して部分バックアップを作成することはできません。

Amazon RDS では、--no-timestamp オプションの有無にかかわらず、Percona XtraBackup を使用して作成された増分バックアップをサポートします。増分バックアップのディレクトリ構造の深さを制限するために、--no-timestamp オプションを使用することをお勧めします。

IAM ロールの手動作成

IAM ロールがない場合、手動で新しいロールを作成できます。また、AWS マネジメントコンソールを使用してデータベースを復元するときに、ウィザードで新しい IAM ロールを自動的に作成することもできます。新しい IAM ロールを自動で作成する場合は、「AWS マネジメントコンソール」の手順に従ってください。

Amazon S3 からデータベースをインポートするために使用する新しい IAM ロールを手動で作成するには、Amazon RDS サービスから Amazon S3 バケットにアクセス権限を委任するロールを作成します。IAM ロールを作成したら、信頼ポリシーとアクセス権限ポリシーをアタッチします。バックアップファイルを Amazon S3 からインポートするには、以下の例のような信頼ポリシーとアクセス許可ポリシーを使用します。ロールの作成の詳細については、「AWS サービスにアクセス許可を委任するロールの作成」を参照してください。

また、AWS マネジメントコンソールを使用してデータベースを復元するときに、ウィザードで新しい IAM ロールを自動的に作成することもできます。新しい IAM ロールを自動で作成する場合は、「AWS マネジメントコンソール」の手順に従ってください。

信頼ポリシーとアクセス権限ポリシーを使用するには、Amazon リソースネーム (ARN) を指定する必要があります。ARN 形式の詳細については、「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してください。

例 Amazon S3 からインポートする信頼ポリシー

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

例 Amazon S3 からインポートするアクセス許可ポリシー — IAM ユーザーのアクセス許可

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::IAM User ID:role/S3Access" } ] }

例 Amazon S3 からインポートするアクセス許可ポリシー — ロールのアクセス許可

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::bucket_name/prefix*" } ] }

注記

ファイル名プレフィックスを含める場合は、プレフィックスの後にアスタリスク (*) を含めます。プレフィックスを指定しない場合は、アスタリスクのみを指定します。

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

Amazon S3 から新しい MySQL DB インスタンスにデータをインポートするには

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

  2. Amazon RDS コンソールの右上隅で、DB インスタンスを作成する AWS リージョンを選択します。データベース バックアップを含む Amazon S3 バケットと同じ AWS リージョンを選択します。

  3. ナビゲーションペインで、[Instances] を選択します。

  4. [Restore from S3] を選択してウィザードを起動します。

    ウィザードが起動し、[Select engine] ページが開きます。

  5. [Select engine] ページで、MySQL アイコンを選択し、[Next] を選択します。

    [Specify source backup details] ページが表示されます。

     ソースデータベースのバックアップの詳細を指定するページ
  6. [Specify source backup details] ページで、バックアップ情報を指定します。

    1. [Source engine] で、[mysql] を選択します。

    2. [Source engine version] では、ソースデータベースの MySQL バージョンを選択します。

    3. [S3 bucket] で、自分の Amazon S3 バケットを選択します。

    4. (オプション) [S3 folder path prefix] で、Amazon S3 バケットに保存されているファイルのファイルパスのプレフィックスを入力します。プレフィックスを指定しない場合、RDS は S3 バケットのルートフォルダにあるすべてのファイルとフォルダを使用して DB インスタンスを作成します。プレフィックスを指定すると、RDS はファイルのパスが指定されたプレフィックスで始まる S3 バケットのファイルとフォルダを使用して DB インスタンスを作成します。たとえば、backup という名前のサブフォルダ内に S3 のバックアップファイルを保存し、複数のバックアップファイルセットがそれぞれ独自のディレクトリ (gzip_backup1、gzip_backup2 など) にあるとします。この場合、プレフィックス backups/gzip_backup1 を指定して、gzip_backup1 フォルダのファイルから復元することができます。

    5. [Create a new role] で [Yes] を選択し、アカウントに新しい IAM ロールを自動で作成するか、[No] を選択して既存の IAM ロールを選択します。

    6. [IAM role] では、既存の IAM を選択するか、新しい IAM ロールの名前を指定します。[Create a New Role] で [Yes] を選択することで新しい IAM ロールを作成できます。

  7. [Next ] を選択して続行します。[DB 詳細の指定] ページが表示されます。

    [Specify DB details] ページで、DB インスタンスの情報を指定します。各設定の詳細については、「MySQL DB インスタンスの設定」を参照してください。

    注記

    復元を成功させるために、新しい DB インスタンスには十分なメモリを割り当ててください。また将来的なの拡大のために追加のメモリを割り当てることもできます。

  8. [Next ] を選択して続行します。[Configure advanced settings] ページが表示されます。

    Amazon RDS で DB インスタンスを起動するために必要な追加情報を入力します。各設定の詳細については、「MySQL DB インスタンスの設定」を参照してください。

  9. [Launch DB instance] を選択します。

CLI

AWS CLI を使用してデータを Amazon S3 から新しい MySQL DB インスタンスにインポートするには、次のパラメータを指定して restore-db-instance-from-s3 コマンドを呼び出します。各設定の詳細については、「MySQL DB インスタンスの設定」を参照してください。

注記

復元を成功させるために、新しい DB インスタンスには十分なメモリを割り当ててください。また将来的なの拡大のために追加のメモリを割り当てることもできます。

  • --allocated-storage

  • --db-instance-identifier

  • --db-instance-class

  • --engine

  • --master-user-name

  • --master-user-password

  • --s3-bucket-name

  • --s3-ingestion-role-arn

  • --s3-prefix

  • --source-engine

  • --source-engine-version

Linux、OS X、Unix の場合:

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier myidentifier \ --db-instance-class db.m4.large \ --engine mysql \ --master-user-name masterawsuser \ --master-user-password masteruserpassword \ --s3-bucket-name mybucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 5.6.27

Windows の場合:

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m4.large ^ --engine mysql ^ --master-user-name masterawsuser ^ --master-user-password masteruserpassword ^ --s3-bucket-name mybucket ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucketprefix ^ --source-engine mysql ^ --source-engine-version 5.6.27

API

Amazon RDS API を使用して Amazon S3 から新しい MySQL DB インスタンスにデータをインポートするには、RestoreDBInstanceFromS3 アクションを呼び出します。

関連トピック