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

レプリケーションを使用した MySQL データのエクスポート

レプリケーションを使用して、MySQL 5.6 以降の DB インスタンスから Amazon RDS の外部で実行されている MySQL インスタンスにデータをエクスポートできます。Amazon RDS の外部の MySQL インスタンスは、データセンターのオンプレミスで実行されていても、Amazon EC2 インスタンスで実行されていてもかまいません。MySQL DB インスタンスは、バージョン 5.6.13 以降で実行されている必要があります。Amazon RDS の外部にある MySQL インスタンスは、Amazon RDS インスタンスと同じバージョン以降で実行されている必要があります。

Amazon RDS の外部で実行されている MySQL インスタンスへのレプリケーションは、MySQL DB インスタンスからデータベースをエクスポートしている間のみサポートされます。レプリケーションは、データがエクスポートされ、アプリケーションが外部インスタンスへのアクセスを開始できるようになったら終了する必要があります。

このプロセスは以下のステップで構成されます。各ステップについては、後のセクションで詳しく説明します。

  1. Amazon RDS の外部で実行されている MySQL のインスタンスを準備します。

  2. MySQL DB インスタンスがレプリケーションソースになるように設定します。

  3. mysqldump を使用して、Amazon RDS インスタンスから Amazon RDS の外部のインスタンスにデータベースを転送します。

  4. Amazon RDS の外部で実行されているインスタンスへのレプリケーションを開始します。

  5. エクスポートが完了したら、レプリケーションを停止します。

Amazon RDS の外部の MySQL インスタンスの準備

Amazon RDS の外部に MySQL のインスタンスをインストールします。

マスターユーザーとしてインスタンスに接続し、インスタンスにアクセスする管理者、アプリケーション、およびサービスをサポートするのに必要なユーザーを作成します。

MySQL ドキュメントの指示に従って、Amazon RDS の外部で実行されている MySQL のインスタンスをレプリカとして準備します。詳細については、「レプリケーションスレーブ構成の設定」を参照してください。

エクスポート中にリードレプリカとして動作する外部インスタンスの Egress ルールを設定します。Egress ルールは、レプリケーション中に MySQL リードレプリカが MySQL DB インスタンスに接続することを許可します。ソース Amazon RDS MySQL DB インスタンスのポートおよび IP アドレスへの TCP 接続を許可する Egress ルールを指定します。

リードレプリカが Amazon EC2 インスタンス (Amazon VPC 内) で実行されている場合、VPC セキュリティグループで Egress ルールを指定します。リードレプリカが VPC にない Amazon EC2 インスタンスで実行されている場合、Amazon EC2 セキュリティグループで Egress ルールを指定します。リードレプリカがオンプレミスにインストールされている場合、ファイアウォールで Egress ルールを指定します。

リードレプリカが VPC で実行されている場合、セキュリティグループの Egress ルールに加えて VPC ACL ルールを設定します。Amazon VPC ネットワーク ACL の詳細については、「ネットワーク ACL」を参照してください。

  • ACL Ingress ルール: ソース MySQL DB インスタンスの IP アドレスからポート 1024-65535 への TCP トラフィックを許可します。

  • ACL Egress ルール: ソース MySQL DB インスタンスのポートおよび IP アドレスへのアウトバウンド TCP トラフィックを許可します。

レプリケーションソースの準備

MySQL DB インスタンスをレプリケーションソースとして準備します。

レプリケーションのセットアップ中にバイナリログを保存するのに十分なディスク容量がクライアントコンピュータにあることを確認します。

レプリケーション用のユーザーの作成」の指示に従って、レプリケーションアカウントを作成します。

レプリケーションソース MySQL DB インスタンスを実行しているシステムで、レプリケーション中の接続を外部 MySQL リードレプリカに許可する Ingress ルールを設定します。Amazon RDS の外部で実行されている MySQL リードレプリカの IP アドレスから Amazon RDS インスタンスにより使用されるポートへの TCP 接続を許可する Ingress ルールを指定します。

Amazon RDS インスタンスが VPC で実行されている場合、VPC セキュリティグループで Ingress ルールを指定します。Amazon RDS インスタンスが VPC で実行されていない場合、データベースセキュリティグループで Ingress ルールを指定します。

Amazon RDS インスタンスが VPC で実行されている場合、セキュリティグループの Ingress ルールに加えて VPC ACL ルールを設定します。Amazon VPC ネットワーク ACL の詳細については、「ネットワーク ACL」を参照してください。

  • ACL Ingress ルール: 外部 MySQL リードレプリカの IP アドレスから Amazon RDS インスタンスにより使用されるポートへの TCP 接続を許可します。

  • ACL Egress ルール: ポート 1024-65535 から外部 MySQL リードレプリカの IP アドレスへの TCP 接続を許可します。

バックアップ保持期間について、エクスポート中にバイナリログが消去されない十分な長さに設定されていることを確認します。エクスポートが完了する前にいずれかのログが消去された場合、レプリケーションを最初から再開しなければなりません。バックアップ保持期間の設定の詳細については、「バックアップの使用 」を参照してください。

mysql.rds_set_configuration ストアドプロシージャを使用して、バイナリログの保持期間を、エクスポート中にバイナリログが消去されない十分な長さに設定します。詳細については、「MySQL バイナリログにアクセスする」を参照してください。

ソースインスタンスのバイナリログが消去されないことをさらに確実にするため、ソースインスタンスから Amazon RDS リードレプリカを作成します。詳細については、「リードレプリカの作成」を参照してください。Amazon RDS リードレプリカが作成されたら、mysql.rds_stop_replication ストアドプロシージャを呼び出してレプリケーションプロセスを停止します。ソースインスタンスによりバイナリログファイルが消去されることがないため、レプリケーションプロセスで使用できます。

データベースのコピー

Amazon RDS の外部で実行されている MySQL インスタンスに対して MySQL SHOW SLAVE STATUS ステートメントを実行し、master_host、master_port、master_log_file、および exec_master_log_pos 値を書き留めます。

mysqldump ユーティリティを使用してスナップショットを作成します。Amazon RDS からローカルクライアントコンピュータにデータがコピーされます。次に、別のユーティリティを実行して、RDS の外部で実行されている MySQL インスタンスにデータをロードします。レプリケートするデータベースにある mysqldump ファイルを保存するのに十分な容量がクライアントコンピュータにあることを確認します。非常に大きなデータベースでは、このプロセスに数時間かかる可能性があります。「mysqldump を使用したダンプスナップショットの作成」の指示に従ってください。

以下の例は、クライアントで mysqldump を実行し、外部 MySQL インスタンスにデータをロードする mysql ユーティリティにダンプをパイプ処理する方法を示しています。

Linux、OS X、Unix の場合:

Copy
mysqldump -h RDS instance endpoint \ -u user \ -p password \ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databases database database2 \ --compress \ --compact | mysql \ -h MySQL host \ -u master user \ -p password \ --port 3306

Windows の場合:

Copy
mysqldump -h RDS instance endpoint ^ -u user ^ -p password ^ --port=3306 ^ --single-transaction ^ --routines ^ --triggers ^ --databases database database2 ^ --compress ^ --compact | mysql ^ -h MySQL host ^ -u master user ^ -p password ^ --port 3306

以下の例は、クライアントで mysqldump を実行し、ダンプをファイルに書き込む方法を示しています。

Linux、OS X、Unix の場合:

Copy
mysqldump -h RDS instance endpoint \ -u user \ -p password \ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databases database database2 > path/rds-dump.sql

Windows の場合:

Copy
mysqldump -h RDS instance endpoint ^ -u user ^ -p password ^ --port=3306 ^ --single-transaction ^ --routines ^ --triggers ^ --databases database database2 > path\rds-dump.sql

エクスポートの完了

mysqldump ファイルをロードし、Amazon RDS の外部で実行されている MySQL インスタンスにデータベースを作成したら、ソース MySQL DB インスタンスからレプリケーションを開始し、Amazon RDS リードレプリカからのレプリケーションを停止してから行われたすべてのソース変更をエクスポートします。

MySQL CHANGE MASTER ステートメントを使用し、外部 MySQL インスタンスを設定します。REPLICATION SLAVE アクセス許可が付与されたユーザーの ID とパスワードを指定します。RDS リードレプリカで実行した Mysql SHOW SLAVE STATUS ステートメントから取得した master_host、master_port、relay_master_log_file、および exec_master_log_pos 値を指定します。詳細については、「スレーブでのマスター構成の設定」を参照してください。

MySQL START SLAVE コマンドを使用し、ソース MySQL DB インスタンスと MySQL レプリカからのレプリケーションを開始します。

Amazon RDS インスタンスで MySQL SHOW SLAVE STATUS コマンドを実行し、リードレプリカとして動作していることを確認します。結果の解釈方法の詳細については、「SHOW SLAVE STATUS 構文」を参照してください。

MySQL インスタンスでのレプリケーションが Amazon RDS ソースに追いついたら、MySQL STOP SLAVE コマンドを使用してソース MySQL DB インスタンスからのレプリケーションを終了します。

Amazon RDS リードレプリカで、mysql.rds_start_replication ストアドプロシージャを呼び出します。これにより、Amazon RDS がソース MySQL DB インスタンスからのバイナリログファイルの消去を開始できるようになります。