外部の MySQL データベースから Amazon RDS for MySQL DB インスタンスにデータをインポートする
既存の MariaDB または MySQL データベースから、MySQL または MariaDB DB インスタンスにデータをインポートすることもできます。これは、データベースを mysqldumpmysqldump
コマンドラインユーティリティは、データのバックアップや、MariaDB または MySQL サーバーから別の場所への転送によく使用されます。このユーティリティは、MySQL および MariaDB クライアントソフトウェアに含まれています。
MariaDB 10.5 では、クライアントは mariadb-dumpmariadb-dump
を mysqldump
の代わりに使用する必要があります。
注記
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 以降のバージョンでは、次の例で mysqldump
を mariadb-dump
に、mysql
を mariadb
に置き換えます。
mysqldump -u
local_user
\ --databasesdatabase_name
\ --single-transaction \ --compress \ --order-by-primary \ -plocal_password
| mysql -uRDS_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
— Amazon RDS にインポートするローカル MariaDB または MySQL インスタンスのデータベースの名前を指定します。database_name
-
--single-transaction
- ローカルデータベースからロードされたすべてのデータが、ある時点において一貫していることを確認します。mysqldump
によるデータの読み取り中に他のプロセスがデータを変更する場合は、このパラメータを使用することでデータの整合性を維持できます。 -
--compress
- ローカルデータベースからのデータを、Amazon RDS に送信する前に圧縮することで、ネットワーク帯域幅の消費量を削減します。 -
--order-by-primary
- 各テーブルのデータをプライマリキーでソートすることで、ロード時間を短縮します。 -
-p
- パスワードを指定します。このパラメータの初回の使用では、初期のlocal_password
-u
パラメータにより識別されるユーザーアカウントのパスワードを指定します。 -
-u
- ユーザー名を指定します。このパラメータの 2 回目の使用では、RDS_user
--host
パラメータによって識別された MariaDB または MySQL DB インスタンスのデフォルトデータベースのユーザーアカウントの名前を指定します。 -
--port
— MariaDB または MySQL DB インスタンスのポートを指定します。インスタンスの作成時に値を変更していない限り、デフォルトでは 3306 です。port_number
-
--host
— Amazon RDS DB インスタンスのエンドポイント、例えばhost_name
myinstance.123456789012.us-east-1.rds.amazonaws.com
からのドメインネームシステム (DNS) 名を指定します。エンドポイントの値は、Amazon RDS マネジメントコンソールのインスタンスの詳細で確認できます。 -
-p
- パスワードを指定します。このパラメータの 2 回目の使用では、2 回目のRDS_password
-u
パラメータにより識別されるユーザーアカウントのパスワードを指定します。
Amazon RDS データベースで、ストアドプロシージャ、トリガー、関数、イベントを必ず手動で作成してください。これらのオブジェクトのいずれかがコピー対象のデータベースに含まれている場合は、mysqldump
または mariadb-dump
の実行時に除外します。これを行うには、mysqldump
または mariadb-dump
コマンドにパラメータ --routines=0 --triggers=0
--events=0
を含めます。
次の例では、ローカルホストにある world
サンプルデータベースを、MySQL DB インスタンスにコピーします。サンプルデータベースを MariaDB DB インスタンスにコピーするには、mysqldump
を mariadb-dump
に、mysql
を mariadb
に置き換えます。
Linux、macOS、Unix の場合:
sudo mysqldump -u
localuser
\ --databasesworld
\ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocalpassword
| mysql -urdsuser
\ --port=3306
\ --host=myinstance.123456789012.us-east-1.rds.amazonaws.com
\ -prdspassword
Windows の場合、Windows プログラムメニューの [Command Prompt] (コマンドプロンプト) を右クリックし、[Run as administrator] (管理者として実行) を選択して開いたコマンドプロンプトで次のコマンドを実行します。
mysqldump -u
localuser
^ --databasesworld
^ --single-transaction ^ --compress ^ --order-by-primary ^ --routines=0 ^ --triggers=0 ^ --events=0 ^ -plocalpassword
| mysql -urdsuser
^ --port=3306
^ --host=myinstance.123456789012.us-east-1.rds.amazonaws.com
^ -prdspassword
注記
セキュリティのベストプラクティスとして、ここに表示されているプロンプト以外の認証情報を指定してください。