既存のデータベースから Amazon RDS DB インスタンスにデータをインポートする必要があります。ダウンタイムを最小にしながらこれを実行する方法を教えてください。

既存のデータを RDS DB インスタンスにインポートするために必要な基本ステップは以下のとおりです。

  1. ソースデータベースからデータをエクスポートします。
  2. エクスポートしたデータをアップロードします。
  3. アップロードしたデータを RDS DB インスタンスにインポートします。

データのインポートプロセスには、さまざまな規模でサーバーのダウンタイムが必要になります。主にインポートするソースデータベースのサイズによりますが、インポート先の RDS DB インスタンスが使用しているデータベースエンジンも関係してきます。

以下のパフォーマンスガイドラインは、すべての RDS データのインポート/エクスポートオペレーションに適用されます。

  • 圧縮および複数のスレッドを使用してデータを並列でロードおよびアンロードします。
  • 大規模なデータをロードする場合は、RDS DB インスタンスのバックアップ保持期間パラメーターを 0 に設定して DB インスタンスの自動バックアップを無効にすることを検討してください。この変更を有効にするには、RDS DB インスタンスの再起動が必要です。本稼働インスタンスでバックアップを無効にすることは推奨されません。バックアップを無効にすると、ポイントインタイムリカバリ機能が使えなくなり、DB インスタンスのそれまでの自動スナップショットがすべて削除されます。また、削除されたスナップショットのリカバリーもできなくなります。DB インスタンスがまだ本稼働ではない場合は、バックアップを無効にすることでロードパフォーマンスが向上します。この変更は、データのロードが完了し次第すぐにロールバックする必要があります。また、データのロードプロセス中に、重要な段階ごとに手動でスナップショットを作成して復旧ポイントを生成することも検討してください。
  • データのロードオペレーション中にマルチ AZ を無効にして、マルチ AZ のデータロードの同期書き込みオペレーションで発生するオーバーヘッドを削減することを検討してください。マルチ AZ 機能はすべての本稼働 RDS DB インスタンスでの推奨ベストプラクティスです。データのロードが完了し次第有効にする必要があります。
  • 大規模なデータを並列でロードする場合は、クライアントマシンに十分なリソースがあり、データのロードプロセス中のボトルネックにならないことを確認してください。

データを RDS DB インスタンスにインポートするために必要なステップとツールは、次のセクションで説明するように、データベースエンジンによって異なります。

MySQL – 「MySQL DB インスタンスからのデータのインポートおよびエクスポート」を参照してください。このプロセスで使用できる MySQL ツールには、mysqldumpmysql、および replication があります。MySQL 5.6.13 以降を使用したレプリケーションでは、外部 RDS インスタンスのデータをレプリケートしたり、外部 RDS インスタンスからデータをレプリケートしたりできます。レプリケーションは、データベースをエクスポート、アップロード、インポートしながら、すべての変更をソースデータにログ記録するため、大きめのデータベースで作業を行う場合には便利です。すべてのデータがターゲット RDS DB インスタンスにインポートされた後、ソースデータに対するすべての変更がターゲット RDS DB インスタンスにレプリケートされます。こうすることで、RDS DB インスタンスへの切り替え時の「サーバーメンテナンス」ウィンドウが他にないほど大幅に縮小されます。

MariaDB – 「MariaDB DB インスタンスへのデータのインポート」を参照してください。このプロセスで使用できる MariaDB ツールには、mysqldumpmysql、および standard replication があります。MariaDB 5.3 以降を使用した標準的なレプリケーションでは、外部 RDS インスタンスのデータをレプリケートしたり、外部 RDS インスタンスからデータをレプリケートしたりできます。レプリケーションは、データベースをエクスポート、アップロード、インポートしながら、すべての変更をソースデータにログ記録するため、大きめのデータベースで作業を行う場合には便利です。すべてのデータがターゲット RDS DB インスタンスにインポートされた後、ソースデータに対するすべての変更がターゲット RDS DB インスタンスにレプリケートされます。こうすることで、RDS DB インスタンスへの切り替え時の「サーバーメンテナンス」ウィンドウが他にないほど大幅に縮小されます。

MariaDB および MySQL – MariaDB および MySQL の両方でデータのロードパフォーマンスを向上させるために、以下のオプションを検討してください。

  • システム変数 innodb_flush_log_at_trx_commit を 0 に設定する。
  • システム変数 innodb_log_file_size の値を大きくしてログファイル容量を追加する。
  • システム変数 max_allowed_packet の値を大きくしてパケットメッセージのバッファサイズの上限を引き上げる。
  • データロードの継続期間中、カスタムパラメータグループを使用して auto_commit を無効にする。
  • サードパーティー製ユーティリティ MySQL Data Dumper を使用した RDS DB インスタンスへのデータのインポートを検討する。


データのインポートが完了したら、これらの設定変更を元に戻してください。ここで行った変更は、通常のサーバーオペレーションには適していません。

PostgreSQL – 「Amazon RDS 上の PostgreSQL にデータをインポートする」を参照してください。このプロセスで使用できる PostgreSQL ツールには、pg_dumppsql、および copy コマンドがあります。データのロードパフォーマンスを向上させるために、以下のオプションの採用を検討してください。

  • pg_dump –Fc (compressed) pg_restore –j (parallel) を使用して、圧縮および複数の並列スレッドを利用する。これらのユーティリティの詳細については、pg_dump および pg_restore を参照してください。
  • Increase the value of the maintenance_work_mem サーバー設定オプションの値を大きくして、メンテナンスオペレーションに使用するメモリを追加する。maintenance_work_mem のデフォルト値は 16 (MB) です。
  • checkpoint_segments および checkpoint_timeout ランタイム設定オプションの値を大きくする。これらのオプションの詳細については、「Checkpoints」を参照してください。
  • データロードの継続期間中カスタムパラメータグループを使用して synchronous_commit パラメーターを無効にする。


データのインポートが完了したら、これらの設定変更を元に戻してください。ここで行った変更は、通常のサーバーオペレーションには適していません。

Oracle – 「Amazon RDS での Oracle へのデータのインポート」を参照してください。小規模データベースでは、Oracle SQL Developer で使用できる Database Copy 機能を使用できます。より大規模なデータベースでは、データベースリンクを使用したエクスポートおよびインポート、およびパラメーターを指定した場合の RDS インスタンスで定義されたディレクトリへのファイル転送には Data Pump が必要です。

SQL サーバー – RDS SQL サーバー DB インスタンスは、.BAK ファイルからのデータの復元では作成されません。詳細については、「SQL サーバーデータのインポートとエクスポート」を参照してください。このプロセスで使用できる SQL サーバーツールには、スクリプトの生成とパブリッシュウィザードSQL サーバーのインポートおよびエクスポートウィザード、およびBulk Copy Operations in SQL Server で説明されている一括コピー (bcp.exe) コマンドラインがあります。ブログ投稿「How to Migrate SQL Server Database to Amazon RDS Instance」に、SQL サーバーから SQL サーバーデータベースエンジンを実行する RDS DB インスタンスへのデータのインポートの追加情報が掲載されています。

RDS、インポート、データ、移行、レプリケーション、エクスポート、コピー、Data Pump、DB インスタンス


このページは役に立ちましたか? はい | いいえ

AWS サポートナリッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。

公開日: 2015 年 11 月 4 日