Amazon RDS DB インスタンスにデータをインポートする方法を教えてください。

最終更新日: 2018 年 11 月 6 日

ダウンタイムを最小にしながら、既存のデータベースから Amazon Relational Database Service (Amazon RDS) インスタンスにデータをインポートする方法を教えてください。

簡単な説明

既存のデータベースからデータを RDS DB インスタンスにインポートするには

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

データインポートプロセスでは、インポートするソースデータベースのサイズに応じて、さまざまな規模でのサーバーのダウンタイムが必要となります。必要とされるダウンタイムは、送信先の DB インスタンスが使用するデータベースエンジンの種類によっても影響を受けます。詳細については、次の DB 固有の解決方法をご参照ください。

解決方法

一般的なデータインポートパフォーマンスのガイドライン

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

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

データベースエンジン固有のデータインポートのガイドライン

Amazon RDS MySQL または MariaDB へのデータのインポートmysqldumpmysqlレプリケーションなどの MySQL ツールを使用して、Amazon RDS にデータをインポートできます。MySQL 5.6.13 以降を使用したレプリケーションは、外部 RDS インスタンスとの間でデータをレプリケートできます。MariaDB DB インスタンスにデータをインポートするときは、mysqldumpmysql標準レプリケーションなどの MariaDB ツールを使用して、Amazon RDS にデータをインポートできます。

Amazon RDS で PostgreSQL にデータをインポートするpg_dumppsqlcopy コマンドなどの PostgreSQL ツールを使用して、Amazon RDS にデータをインポートできます。

Amazon RDS で Oracle にデータをインポートする – 小規模データベースでは、Oracle SQL Developer で利用できるデータベースコピー機能を使用できます。大規模なデータベースでは、Data Pump を使ってエクスポートインポートを行う必要があります。これには、データベースリンクと RDS インスタンスで定義されているディレクトリへのファイル転送を使用します (エクスポートパラメータを指定するとき)。

SQL Server データベースのインポートとエクスポート – .bak ファイルを使うと、Microsoft SQL Server データベースのネイティブバックアップの利用と復元が可能です。オンプレミスデータベースのフルバックアップを作成し、そのバックアップを Amazon Simple Storage Service (Amazon S3) に保存してから、そのバックアップファイルを Amazon RDS に復元することもできます。

Aurora MySQL へのデータのインポート – Amazon RDS へのインポートと同様に、mysqldump や mydumper などのネイティブツールを使用して、Amazon Aurora for MySQL に移行できます。Aurora MySQL 互換のバイナリログのレプリケーションを使用すると、ダウンタイムを短縮できます。Amazon S3 に保存されている Percona Xtrabakup を使用するか、RDS MySQL DB インスタンスのスナップショットを使用するか、既存の RDS MySQL DB インスタンスの Aurora レプリカを作成することで、Aurora MySQL に移行することも可能です。すべての移行オプションにおいて、必ずどのソーステーブルも動的な行フォーマットで InnoDB ストレージエンジンに変換されるようにしてください。これにより、移行の速度が上がり、Aurora への移行が成功しやすくなります。詳細については、「Best Practices for Migrating MySQL Databases to Amazon Aurora」をご参照ください。

AWS Database Migration Service (AWS DMS) の使用 – AWS DMS を使用して、オンプレミス環境から AWS にデータをインポートできます。DMS はダウンタイムを最小限に抑えながら、同種のデータベース間の移行も、異なるデータベース間の移行もサポートします。DMS は次のタイプの移行でご利用いただけます。

  • 既存データの移行 (全ロード) – 既存のデータをソースからターゲットデータベースインスタンスに移行します。これは 1 回限りのロードで、前述のインポートとエクスポートのオプションと類似しています。このタイプの移行は、大きなダウンタイムが発生する可能性がある中小規模のデータベースに最適です。
  • 既存のデータを移行し、進行中の変更をレプリケートする (全ロード + 変更データキャプチャ (CDC)) – 最小限のダウンタイムでデータを移行するため、AWS DMS は既存のデータを移行し、カットオーバーまでソースからターゲットにデータ変更をレプリケートできます。このタイプの移行は、カットオーバーの期間中だけ持続する最小限のダウンタイムを必要とする、小規模から中規模のデータベースに最適です。
  • データ変更のみのレプリケート (CDC) – ネイティブのインポートおよびエクスポートツールの効率を利用して、既存のデータを移行し、ソースからターゲットインスタンスへの進行中の変更を取り込む CDC のみのタスクを設定します。CDC カスタム開始時刻パラメータは、データ同期を開始する時点を指定します。このタイプの移行は、カットオーバーの期間中だけ持続する最小限のダウンタイムを必要とする、中規模から大規模データベースに最適です。