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

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

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

注記

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

外部のデータベースから Amazon RDS DB インスタンスにデータを移動する一般的な mysqldump コマンドは、次のような内容です。

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

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

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

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

  • ダンプファイルから次のスキーマを除外します: sysperformance_schemainformation_schemamysqldump ユーティリティを使用すると、これらのスキーマをデフォルトで除外できます。

  • ユーザーや権限を移行する必要がある場合は、再作成するデータ制御言語 (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 - 各テーブルのデータをプライマリキーでソートすることで、ロード時間を短縮します。

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

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

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

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

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

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

次の例では、ローカルホストにある world サンプルデータベースを、MySQL DB インスタンスにコピーします。

Linux、macOS、Unix の場合:

sudo mysqldump -u localuser \ --databases world \ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocalpassword | mysql -u rdsuser \ --port=3306 \ --host=myinstance.123456789012.us-east-1.rds.amazonaws.com \ -prdspassword

Windows の場合、Windows プログラムメニューの [Command Prompt] (コマンドプロンプト) を右クリックし、[Run as administrator] (管理者として実行) を選択して開いたコマンドプロンプトで次のコマンドを実行します。

mysqldump -u localuser ^ --databases world ^ --single-transaction ^ --compress ^ --order-by-primary ^ --routines=0 ^ --triggers=0 ^ --events=0 ^ -plocalpassword | mysql -u rdsuser ^ --port=3306 ^ --host=myinstance.123456789012.us-east-1.rds.amazonaws.com ^ -prdspassword
注記

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