このトピックでは、自己管理型MariaDBデータベースからApsaraDB RDS for MariaDBインスタンスにデータを移行する方法について説明します。
背景情報
ApsaraDB RDS for MariaDBは、ネイティブのMariaDBデータベースサービスと完全に互換性があります。 自己管理型MariaDBデータベースからRDSインスタンスにデータを移行するプロセスは、2つのMariaDBデータベースサーバー間でデータを移行するプロセスと似ています。
このトピックでは、自己管理型MariaDBデータベースをホストするデータベースサーバーはLinux 7およびMariaDB 10.2.4を実行します。
使用上の注意
移行が完了すると、テーブル名は大文字と小文字を区別しません。 すべてのテーブル名は小文字で提供されます。
前提条件
RDSインスタンスのIPアドレスホワイトリストが設定され、パブリックエンドポイントが取得されます。 詳細については、「ApsaraDB RDS For MariaDBインスタンスのIPアドレスホワイトリストの設定」および「パブリックエンドポイントの申請またはリリース」をご参照ください。
手順
リモート接続ツールを使用してRDSインスタンスにログインし、空のデータベースを作成します。 このデータベースは、データの移行先データベースです。 たとえば、test001という名前の空のデータベースを作成できます。 詳細については、「ApsaraDB RDS For MariaDBインスタンスへの接続」をご参照ください。
オンプレミスのデータベースサーバーにログインします。 次に、MariaDBに付属のmysqldumpツールを使用して、オンプレミスデータベースのデータをファイルとしてエクスポートします。 このファイルはデータファイルと呼ばれます。
mysqldump -h localhost -u <自己管理データベースのアカウントのユーザー名>-p_opt -- default-character-set=utf8-- hex-blob <自己管理データベースの名前> -- skip-triggers > /tmp/<自己管理データベースの名前>.sql
サンプルコマンド
説明後続の手順で使用されるユーザーには、必要な権限が必要です。 詳細については、「mariadb-dump/mysqldump」をご参照ください。
mysqldump -h localhost -u user -p -- opt -- default-character-set=utf8 -- hex-blob testdb -- skip-triggers > /tmp/testdb.sql
重要エクスポート処理中にデータを更新しないでください。 このステップでは、データのみがエクスポートされます。 ストアドプロシージャ、トリガー、および関数はエクスポートされません。
mysqldumpツールを使用して、ストアドプロシージャ、トリガー、および関数をファイルとしてエクスポートします。 このファイルはストアドプロシージャファイルと呼ばれます。
mysqldump -h localhost -u <自己管理データベースのアカウントのユーザー名>-p_opt -- default-character-set=utf8-- hex-blob <自己管理データベースの名前> -R | sed -e 's/DEFINER[ ]*=[ ]*[^ *]*\*/\*/' > /tmp/<自己管理データベースの名前>_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
説明自己管理型MariaDBデータベースにストアドプロシージャ、トリガー、または関数が含まれていない場合は、この手順をスキップできます。 このエクスポートプロセスでは、ApsaraDB RDS for MariaDBとの互換性を確保するためにDEFINERを削除する必要があります。
次のコマンドを実行して、データファイルとストアドプロシージャファイルをRDSインスタンスにインポートします。
mysql -h <RDSインスタンスのパブリックエンドポイント> -P <RDSインスタンスのパブリックポート> -u <RDSインスタンスの特権アカウントのユーザー名> -p <RDSインスタンスのターゲットデータベースの名前> < /tmp/<セルフマネージドデータベースの名前>.sql mysql -h <RDSインスタンスのパブリックエンドポイント> -P <RDSインスタンスのパブリックポート> -u <RDSインスタンスの特権アカウントのユーザー名> -p <RDSインスタンスのターゲットデータベースの名前 < /tmp/<自己管理データベースの名前> トリガー。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
リモート接続ツールを更新し、RDSインスタンスのターゲットデータベースのテーブルを表示します。 テーブルにデータが含まれている場合、移行は成功です。