外部の MySQL データベースから Amazon RDS for MySQL DB インスタンスにデータをインポートする - Amazon Relational Database Service

外部の MySQL データベースから Amazon RDS for MySQL DB インスタンスにデータをインポートする

既存の MySQL または MariaDB データベースから RDS for MariaDB または RDS for MySQL DB インスタンスに、データをインポートすることもできます。これは、データベースを mysqldump でコピーして、RDS for MariaDB または RDS for MySQL DB インスタンスに直接パイプ処理することで行います。mysqldump コマンドラインユーティリティは、データのバックアップや、MariaDB または MySQL サーバーから別の場所への転送によく使用されます。このユーティリティは、MySQL および MariaDB クライアントソフトウェアに含まれています。

MariaDB 10.5 では、クライアントは mariadb-dump と呼ばれます。MariaDB 11.0.1 以降では、mariadb-dumpmysqldump の代わりに使用する必要があります。

注記

MySQL DB インスタンスを使用して大量のデータをインポートまたはエクスポートする場合、xtrabackup バックアップファイルと Amazon S3 を使用して Amazon RDS との間でデータを移動する方が信頼性が高く、高速です。詳細については、「Amazon RDS for MySQL DB インスタンスへのバックアップの復元」を参照してください。

Amazon RDS は MariaDB の xtrabackup、または mariabackup をサポートしていません。Amazon RDS は、Amazon S3 for MySQL からのインポートのみをサポートしています。

外部のデータベースから Amazon RDS DB インスタンスにデータを移動するための一般的な mysqldump コマンドは、次の例のようになります。値を自分の情報に置き換えます。MariaDB 11.0.1 以降のバージョンでは、mysqldumpmariadb-dump に、mysqlmariadb に置き換えます。

mysqldump -u local_user \ --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password | mysql -u RDS_user \ --port=port_number \ --host=host_name \ -pRDS_password
重要

-p オプションと入力するパスワードの間にスペースを残していないことを確認します。

セキュリティのベストプラクティスとして、この例に表示されているプロンプト以外の認証情報を指定してください。

次の推奨事項と考慮事項に注意してください。

  • ダンプファイルから次のスキーマを除外します。

    • sys

    • performance_schema

    • information_schema

    mysqldump および mariadb-dump ユーティリティは、これらのスキーマをデフォルトで除外します。

  • ユーザーや権限を移行する必要がある場合は、再作成するデータ制御言語 (DCL) を生成するツールの使用を検討します。例えば、pt-show-grants ユーティリティがあります。

  • インポートを実行するには、そのユーザーに DB インスタンスへのアクセスが許可されていることを確認してください。詳細については、「セキュリティグループによるアクセス制御」を参照してください。

使用するパラメータは次のとおりです。

  • -u local_user - ユーザー名を指定します。このパラメータの初回の使用では、--databases パラメータによって識別されたローカル MariaDB または MySQL データベースのユーザーアカウントの名前を指定します。

  • --databases database_name — Amazon RDS にインポートするローカル MariaDB または MySQL インスタンスのデータベースの名前を指定します。

  • --single-transaction​ - ローカルデータベースからロードされたすべてのデータが、ある時点において一貫していることを確認します。mysqldump によるデータの読み取り中に他のプロセスがデータを変更する場合は、このパラメータを使用することでデータの整合性を維持できます。

  • --compress - ローカルデータベースからのデータを、Amazon RDS に送信する前に圧縮することで、ネットワーク帯域幅の消費量を削減します。

  • --order-by-primary - 各テーブルのデータをプライマリキーでソートすることで、ロード時間を短縮します。

  • --routines − ストアドプロシージャや関数などのルーチンが、コピーするデータベースに存在する場合に使用します。パラメータを 0 に設定し、インポートプロセス中にルーチンを除外します。その後、Amazon RDS データベースでルーチンを手動で再作成します。

  • --triggers − コピーするデータベースにトリガーが存在する場合に使用します。パラメータを 0 に設定し、インポートプロセス中にトリガーを除外します。その後、Amazon RDS データベースでトリガーを手動で再作成します。

  • --events − コピーするデータベースにイベントが存在する場合に使用します。パラメータを 0 に設定し、インポートプロセス中にイベントを除外します。その後、Amazon RDS データベースでイベントを手動で再作成します。

  • -plocal_password - パスワードを指定します。このパラメータの初回の使用では、初期の -u パラメータにより識別されるユーザーアカウントのパスワードを指定します。

  • -u RDS_user - ユーザー名を指定します。このパラメータの 2 回目の使用では、--host パラメータによって識別された MariaDB または MySQL DB インスタンスのデフォルトデータベースのユーザーアカウントの名前を指定します。

  • --port port_number — MariaDB または MySQL DB インスタンスのポートを指定します。DB インスタンスの作成時に値を変更していない限り、デフォルトでは 3306 です。

  • --host host_name​ — Amazon RDS DB インスタンスのエンドポイント、例えば myinstance.123456789012.us-east-1.rds.amazonaws.com からのドメインネームシステム (DNS) 名を指定します。エンドポイントの値は、Amazon RDS コンソールの DB インスタンスの詳細で確認できます。

  • -pRDS_password - パスワードを指定します。このパラメータの 2 回目の使用では、2 回目の -u パラメータにより識別されるユーザーアカウントのパスワードを指定します。

Amazon RDS データベースで、ストアドプロシージャ、トリガー、関数、イベントを必ず手動で作成してください。これらのオブジェクトのいずれかがコピー対象のデータベースに含まれている場合は、mysqldump または mariadb-dump の実行時に除外します。これを行うには、mysqldump または mariadb-dump コマンドに次のパラメータを含めます。

  • --routines=0

  • --triggers=0

  • --events=0

次の例では、ローカルホストにある world サンプルデータベースを、RDS for MySQL DB インスタンスにコピーします。値を自分の情報に置き換えます。サンプルデータベースを RDS for MariaDB DB インスタンスにコピーするには、mysqldumpmariadb-dump に、mysqlmariadb に置き換えます。

Linux、macOS、Unix の場合:

sudo mysqldump -u local_user \ --databases world \ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password | mysql -u rds_user \ --port=3306 \ --host=my_instance.123456789012.us-east-1.rds.amazonaws.com \ -pRDS_password

Windows の場合:

Windows プログラムメニューの [コマンドプロンプト] を右クリックし、[管理者として実行] を選択して開いたコマンドプロンプトで次のコマンドを実行します。値を自分の情報に置き換えます。サンプルデータベースを RDS for MariaDB DB インスタンスにコピーするには、mysqldumpmariadb-dump に、mysqlmariadb に置き換えます。

mysqldump -u local_user ^ --databases world ^ --single-transaction ^ --compress ^ --order-by-primary ^ --routines=0 ^ --triggers=0 ^ --events=0 ^ -plocal_password | mysql -u RDS_user ^ --port=3306 ^ --host=my_instance.123456789012.us-east-1.rds.amazonaws.com ^ -pRDS_password
注記

セキュリティのベストプラクティスとして、例に表示されているプロンプト以外の認証情報を指定します。