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

ApsaraDB RDS:mysqldump を使用した自己管理 MariaDB のクラウド移行

最終更新日:Mar 29, 2026

ApsaraDB RDS for MariaDB はネイティブの MariaDB と完全に互換性があるため、データ移行は 2 台の MariaDB サーバー間でのデータ移動と同じ手順で実行できます。本トピックでは、mysqldump を用いた完全な移行手順を説明します。すなわち、ご利用の自己管理データベースからテーブルデータおよびストアドプロシージャをエクスポートし、それを RDS インスタンスにインポートします。

本トピックの例では、Linux 7 上で実行される MariaDB 10.2.4 を搭載したソースデータベースを使用します。

移行後、RDS インスタンス上のすべてのテーブル名は小文字で格納され、大文字・小文字を区別しなくなります。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

データの移行

ステップ 1:ターゲットデータベースの作成

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

ステップ 2:データファイルのエクスポート

重要

エクスポート中にソースデータベースへの書き込みを行わないでください。同時書き込みにより、ダンプファイル内のデータが不整合になる可能性があります。

オンプレミスデータベースサーバー上で mysqldump コマンドを実行し、テーブルデータを SQL ファイルにエクスポートします。このコマンドでは、ストアドプロシージャ、トリガー、および関数は除外されます。これらはステップ 3 で個別にエクスポートします。

mysqldump -h localhost -u <username> -p --opt --default-character-set=utf8 --hex-blob <db_name> --skip-triggers > /tmp/<db_name>.sql

プレースホルダーを実際の値に置き換えてください。

プレースホルダー説明
<username>自己管理データベースアカウントのユーザー名user
<db_name>エクスポート対象の自己管理データベース名testdb

例:

mysqldump -h localhost -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers > /tmp/testdb.sql
mysqldump を実行するには、データベースアカウントに必要な権限が付与されている必要があります。必要な権限の完全な一覧については、mysqldump リファレンスをご参照ください。

ステップ 3:ストアドプロシージャ、トリガー、および関数のエクスポート

データベースにストアドプロシージャ、トリガー、または関数が含まれる場合は、それらを別のファイルにエクスポートします。sed コマンドは、ApsaraDB RDS for MariaDB との互換性を確保するために必須となる DEFINER 句を削除します。

mysqldump -h localhost -u <username> -p --opt --default-character-set=utf8 --hex-blob <db_name> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/<db_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
ソースデータベースにストアドプロシージャ、トリガー、または関数が存在しない場合は、本ステップをスキップしてください。

ステップ 4:RDS インスタンスへのインポート

以下のコマンドを実行して、データファイルおよびストアドプロシージャファイルをターゲットデータベースにインポートします。まずデータファイルをインポートしてください。

mysql -h <endpoint> -P <port> -u <username> -p <dest_db> < /tmp/<db_name>.sql
mysql -h <endpoint> -P <port> -u <username> -p <dest_db> < /tmp/<db_name>_trigger.sql

プレースホルダーを実際の値に置き換えてください。

プレースホルダー説明
<endpoint>RDS インスタンスのパブリックエンドポイントrm-bpxxxxx.mariadb.rds.aliyuncs.com
<port>RDS インスタンスのパブリックポート3306
<username>RDS インスタンス上の特権アカウントのユーザー名testuser
<dest_db>RDS インスタンス上のターゲットデータベース名test001
<db_name>自己管理データベース名(ファイルパスで使用)testdb

例:

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:移行の検証

リモート接続ツールを更新し、ターゲットデータベース内のテーブルを確認します。テーブルが存在し、かつデータが正しく格納されていれば、移行は完了です。