mysqldump ツールを使用して、セルフマネージド MariaDB データベースから ApsaraDB RDS for MariaDB インスタンスにデータを移行します。
背景情報
ApsaraDB RDS for MariaDB は、ネイティブ MariaDB と完全に互換性があります。そのため、RDS インスタンスへのデータベース移行は、2 つの MariaDB サーバー間でのデータ移行と同様です。
このトピックでは、Linux 7 および MariaDB 10.2.4 で実行されているセルフマネージドデータベースを例として使用します。
注意事項
移行後、テーブル名は小文字に変換され、大文字と小文字を区別しなくなります。
前提条件
ApsaraDB RDS for MariaDB インスタンスで、IP アドレスホワイトリストの設定とパブリックエンドポイントの申請が完了している必要があります。
操作手順
-
クライアントツールを使用してApsaraDB RDS for MariaDB インスタンスに接続し、空のデータベースを作成します。この例では、データベース名は test001 です。MySQL-Front クライアントで MariaDB インスタンスに接続し、[SQL エディター] で
create database test001;コマンドを実行して、ターゲットデータベースを作成します。コマンドの実行後、左側のデータベースリストに [test001] データベースが表示されます。 -
ローカルの Linux サーバーにログインし、
mysqldumpツールを使用してデータベースのデータをデータファイルにエクスポートします。mysqldump -h localhost -u <source_username> -p --opt --default-character-set=utf8 --hex-blob <source_database_name> --skip-triggers > /tmp/<source_database_name>.sql例:
説明次の例の
userアカウントには、特定の権限が必要です。詳細については、権限設定をご参照ください。mysqldump -h localhost -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers > /tmp/testdb.sql重要エクスポート中は、データの更新を行わないでください。この手順では、データベースのデータのみをエクスポートし、ストアドプロシージャ、トリガー、ファンクションはエクスポートされません。
-
mysqldumpを使用して、ストアドプロシージャ、トリガー、ファンクションをエクスポートします。mysqldump -h localhost -u <source_username> -p --opt --default-character-set=utf8 --hex-blob <source_database_name> -R | sed -e 's/DEFINER[ ]*=[ ]*`[^`]*`@`[^`]*`//' > /tmp/<source_database_name>_trigger.sql例:
mysqldump -h localhost -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*`[^`]*`@`[^`]*`//' > /tmp/testdb_trigger.sql説明データベースでストアドプロシージャ、トリガー、ファンクションを使用していない場合は、この手順をスキップしてください。これらのオブジェクトをエクスポートする際は、ApsaraDB RDS for MariaDB との互換性のため、
DEFINER句を削除します。 -
次のコマンドを実行して、エクスポートしたファイルを移行先の ApsaraDB RDS for MariaDB インスタンスにインポートします。
mysql -h <rds_public_endpoint> -P <rds_port> -u <privileged_account> -p <target_database_name> < /tmp/<source_database_name>.sql mysql -h <rds_public_endpoint> -P <rds_port> -u <privileged_account> -p <target_database_name> < /tmp/<source_database_name>_trigger.sql例:
mysql -h rm-bpxxxxx.mariadb.rds.aliyuncs.com -P 3306 -u testuser -p test001 < /tmp/testdb.sql mysql -h rm-bpxxxxx.mariadb.rds.aliyuncs.com -P 3306 -u testuser -p test001 < /tmp/testdb_trigger.sql -
クライアントツールを更新し、移行先のデータベースのテーブルを確認して、データが正常に移行されたことを確かめます。