すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:mysqldumpを使用して、セルフマネージド型MariaDBデータベースからApsaraDB RDS for MariaDBインスタンスにデータを移行する

最終更新日:Jan 18, 2024

このトピックでは、自己管理型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アドレスホワイトリストの設定」および「パブリックエンドポイントの申請またはリリース」をご参照ください。

手順

  1. リモート接続ツールを使用してRDSインスタンスにログインし、空のデータベースを作成します。 このデータベースは、データの移行先データベースです。 たとえば、test001という名前の空のデータベースを作成できます。 詳細については、「ApsaraDB RDS For MariaDBインスタンスへの接続」をご参照ください。

  2. オンプレミスのデータベースサーバーにログインします。 次に、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
    重要

    エクスポート処理中にデータを更新しないでください。 このステップでは、データのみがエクスポートされます。 ストアドプロシージャ、トリガー、および関数はエクスポートされません。

  3. 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を削除する必要があります。

  4. 次のコマンドを実行して、データファイルとストアドプロシージャファイルを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 
  5. リモート接続ツールを更新し、RDSインスタンスのターゲットデータベースのテーブルを表示します。 テーブルにデータが含まれている場合、移行は成功です。