このトピックでは、mysqldumpを使用して、自己管理型MySQLデータベースからPolarDB for MySQLクラスターにデータを移行する方法について説明します。
前提条件
移行先PolarDB for MySQLクラスターの次の操作が完了しました。
データベースを作成します。 データベースの作成方法については、「データベース管理」をご参照ください。
パブリックエンドポイントを申請します。 パブリックエンドポイントを申請する方法については、「クラスターのエンドポイントの管理」をご参照ください。
データ移行方法の違い
mysqldumpまたはData Transmission Service (DTS) を使用して、自己管理型MySQLデータベースからPolarDB for MySQLクラスターにデータを移行できます。 次の表に、2つのデータ移行方法の違いを示します。
項目 | mysqldump | DTS |
自己管理型MySQLデータベースのバージョン | 制限なし | 5.1、5.5、5.6、5.7、または8.0 |
スキーマ移行とフルデータ移行 | 対応 | 対応 |
増分データ移行 | 非対応 | 対応 |
ホット移行 | 非対応 | 対応 |
DTSを使用してデータを移行する方法の詳細については、「自己管理型MySQLデータベースからPolarDB For MySQLクラスターへのデータの移行」をご参照ください。
使用上の注意
移行先のPolarDB for MySQLクラスターに移行されるテーブルの名前は、大文字と小文字に区別されず、一律に小文字に変換されます。
手順
この例では、Linuxオペレーティングシステムで実行される自己管理型MySQL 8.0データベースが使用されます。
mysqldumpを使用して、自己管理型MySQLデータベースのデータ、ストアドプロシージャ、トリガー、および関数をエクスポートします。
説明データのエクスポート中にデータを更新しないでください。
Linux CLIで、次のコマンドを実行して自己管理MySQLデータベースのデータをエクスポートします。
説明自己管理MySQLデータベースのエンドポイントを入力するときは、次の点に注意してください。
自己管理型MySQLデータベースがElastic Compute Service (ECS) インスタンスにデプロイされている場合は、127.0.0.1を入力します。
自己管理型MySQLデータベースがオンプレミスデータベースの場合は、データベースのパブリックエンドポイントを入力します。
mysqldump -h <自己管理MySQLデータベースのエンドポイント> -u user-p_opt -- default-character-set=utf8-- hex-blob <自己管理MySQLデータベースの名前> -- skip-triggers -- skip-lock-tables > /tmp/<自己管理MySQLデータベースの名前> sql
例:
mysqldump -h 127.0.0.1 -u user -p -- opt -- default-character-set=utf8 -- hex-blob testdb -- skip-triggers -- skip-lock-tables > /tmp/testdb.sql
(オプション) Linux CLIで、次のコマンドを実行して、自己管理MySQLデータベースのストアドプロシージャ、トリガー、および関数をエクスポートします。
説明データベースにストアドプロシージャ、トリガー、または関数がない場合は、この手順をスキップします。
mysqldump -h 127.0.0.1 -u user -p -- opt -- default-character-set=utf8-- hex-blob <自己管理MySQLデータベースの名前> -R | sed -e 's/DEFINER[ ]*=[ ]*[^ *]*\*/*/' > /tmp/<自己管理MySQLデータベースの名前> Trigger.sql
例:
mysqldump -h 127.0.0.1 -u user -p -- opt -- default-character-set=utf8 -- hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^ *]*\*/\*/' > /tmp/testdbTrigger.sql
次のコマンドを実行して、エクスポートしたファイルをターゲットPolarDBクラスターにインポートします。
mysql -h <PolarDBクラスターのエンドポイント> -P <PolarDBクラスターのポート> -u <PolarDBクラスターのアカウント> -p <PolarDBデータベース名> < /tmp/<自己管理型MySQLデータベースの名前>.sql mysql -h <PolarDBクラスターのエンドポイント> -P <PolarDBクラスターのポート> -u <PolarDBクラスターのアカウント> -p <PolarDBデータベース名> < /tmp/<自己管理型MySQLデータベーストリガーの名前>. sql
例:
mysql -h polardbtest.mysql.polardb.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdb.sql mysql -h polardbtest.mysql.polardb.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdbTrigger.sql
説明PolarDBデータベース名は、PolarDBクラスター上の既存のデータベースの名前である必要があります。 データベースの作成方法については、「データベース管理」をご参照ください。
PolarDBクラスターのアカウントは、特権アカウントまたは読み取りおよび書き込み権限を持つアカウントである必要があります。
ファイルをインポートした後、PolarDBクラスターデータベースにログインして、データが正常かどうかを確認できます。 PolarDBクラスターデータベースへのログイン方法については、「クラスターへの接続」をご参照ください。
よくある質問
エラーメッセージアクセスが拒否されました。この操作のSUPER特権が (少なくとも1つ必要です)
が表示された場合はどうすればよいですか?
SUPER権限を必要とするスクリプト内のステートメントを削除してから、スクリプトを実行します。