このトピックでは、ApsaraDB RDS for MySQL インスタンスを PolarDB for MySQL クラスターに移行する手順について説明します。PolarDB はクラスターを自動的に作成し、データを同期するとともに、ソース RDS インスタンスのアカウント、データベース、IP アドレスホワイトリスト、および必須パラメーターを継承します。
このガイドでは、以下の操作を行います。
ソース RDS インスタンスの準備として事前チェックを実行します。
RDS からの移行 メソッドを使用して、送信先の PolarDB クラスターを作成します。
(オプション)スイッチオーバー後に接続変更を回避するためにエンドポイントを追加します。
サービスをスイッチオーバーして、PolarDB クラスターをプライマリの読み取り/書き込みデータベースにします。
(オプション)既存の DTS タスクをスイッチオーバーします。
移行を完了させてプロセスを確定します。
(オプション)ソース RDS インスタンスのリリースまたは登録解除を行います。
移行方法の選択
2 種類の移行方法が利用可能です。ご利用のソースインスタンスに適した方法を選択してください。
| 物理移行 | 論理移行 | |
|---|---|---|
| 仕組み | ストレージレベルでデータを直接レプリケーションします。 | Data Transmission Service (DTS) を使用してデータを同期します。 |
| サポートされるソースバージョン | RDS MySQL 5.6 または 5.7、ローカル SSD 搭載の High-availability Edition | その他のすべての RDS MySQL 仕様 |
| ターゲットバージョン | ソースと同じ MySQL バージョン | 同じまたは異なる MySQL バージョン |
| 速度 | 大規模なデータベースの場合、特に高速です。 | 大規模なデータセットでは低速です。完全同期中に DTS がソースおよび送信先データベースに対して読み取りと書き込みを実行します。 |
詳細な比較については、「物理移行と論理移行の比較」をご参照ください。
事前チェック
PolarDB のサービスリンクロールの作成確認(論理移行のみ)
論理移行を実行する前に、PolarDB のサービスリンクロールが存在し、Data Transmission Service (DTS) が Alibaba Cloud リソースへのアクセス権限を持っていることを確認してください。
ソース RDS インスタンスからの不要なシステムアカウントの削除(論理移行のみ)
移行中に送信先の PolarDB クラスター内のシステムアカウントが上書きされないようにするため、ソース RDS インスタンスにrootとaliyun_rootの両方が同時に存在しないようにしてください。正しいシステムアカウントは RDS MySQL のバージョンによって異なります。
| RDS MySQL バージョン | 正しいシステムアカウント |
|---|---|
| RDS MySQL 5.6 | root |
| RDS MySQL 5.7 | aliyun_root |
| RDS MySQL 8.0 | aliyun_root |
ご利用のバージョンに対して正しいと記載されていないアカウントは削除してください。たとえば、RDS MySQL 5.7 をご利用の場合にコンソールで手動でrootを作成している場合は、移行を開始する前に削除してください。ただし、本番環境でそのアカウントが使用されていないことを事前に確認してください。
以下の例は、RDS MySQL 5.6 インスタンスから不要なシステムアカウントを削除する方法を示しています。
特権アカウントを使用してデータベースに接続します。
rootおよびaliyun_rootのすべてのシステムアカウントを検索します。SELECT * FROM mysql.user WHERE `user` IN ('root', 'aliyun_root');不要なアカウントを削除します。RDS MySQL 5.6 の場合、
rootが正しいため、aliyun_rootを削除します。DELETE FROM mysql.user WHERE `user` = 'aliyun_root' LIMIT n;
(オプション)ホワイトリスト構成の確認
プライマリ RDS インスタンスと読み取り専用 RDS インスタンスのホワイトリスト構成が異なる場合は、移行を開始する前に、読み取り専用インスタンスのホワイトリストをプライマリインスタンスのホワイトリストにマージしてください。これにより、読み取り専用インスタンスのホワイトリストが送信先の PolarDB クラスターに自動的に同期されます。
ステップ 1:送信先の PolarDB クラスターの作成
ソース RDS インスタンスのデータをミラーする PolarDB クラスターを作成します。クラスター作成後、増分データがリアルタイムでソース RDS インスタンスから PolarDB クラスターへ継続的に同期されます。
開始前に移行評価を完了させてください。詳細については、「移行評価」をご参照ください。
PolarDB クラスターで利用可能なストレージ容量が、ソース RDS インスタンスで使用されているストレージ容量を超えることを確認してください。
論理移行の場合、完全なデータ同期中に DTS がソースおよび送信先の両方のデータベースに対して読み取りと書き込みを実行するため、データベース負荷が増加する可能性があります。影響を抑えるには、速度制限を有効にしてください。詳細については、「データ移行の速度制限の有効化」をご参照ください。
PolarDB コンソールにログインします。左側のナビゲーションウィンドウでクラスターをクリックします。クラスターページでクラスターの作成をクリックします。
課金方法をサブスクリプション、従量課金、またはServerlessに設定します。
サブスクリプション:コンピュートノードの料金を前払いします。ストレージは実際の時間単位の使用量に基づいて課金されます。
従量課金:前払いは不要です。コンピュートノードおよびストレージの料金は、実際の使用量に基づいて時間単位で差し引かれます。
Serverless:前払いは不要です。コンピュートノード、ストレージ、および PolarProxy は需要に応じて動的にスケーリングされます。料金は実際の使用量に基づきます。
クラスターパラメーターを設定します。主なパラメーターは以下の表に示されています。
説明 ここで記載されていないパラメーターについては、「クラスターの購入」をご参照ください。パラメーター 説明 作成方法 RDS からの移行を選択します。移行が完了するまで、PolarDB クラスターは読み取り専用モードで動作します。バイナリロギングはデフォルトで有効になります。 リージョン ソース RDS インスタンスがデプロイされているリージョン。送信先の PolarDB クラスターは同じリージョン内に配置する必要があります。 RDS エンジンタイプ ソース RDS インスタンスのデータベースエンジン。MySQLに固定されています。 RDS エンジンバージョン ソース RDS インスタンスの MySQL バージョン:5.6、5.7、または8.0。 ソース RDS インスタンス 移行元のソース RDS インスタンス。読み取り専用インスタンスは含まれません。 データベースエンジン 送信先の PolarDB クラスターの MySQL バージョン。ソースバージョンと同じでも異なっていてもかまいません。 ノードスペック コンピュートノードのスペック。ソース RDS インスタンスのスペック以上を選択してください。利用可能なスペックについては、「PolarDB for MySQL Enterprise Edition のコンピュートノードスペック」をご参照ください。 ストレージエンジン InnoDB または InnoDB & X-Engine。[InnoDB & X-Engine] を選択した場合、X-Engine のメモリ使用量比率を指定できます。詳細については、「X-Engine」をご参照ください。 右上隅で構成を確認し、期間、数量、および自動更新パラメーターを設定します。期間はサブスクリプションクラスターにのみ適用されます。
サービス利用規約を読み、同意したうえで注文の確認をクリックします。
購入ページで注文内容と支払方法を確認し、購入をクリックします。
説明支払い後、クラスターがクラスターページに表示されるまで 10~15 分ほどお待ちください。
ノードのステータスが作成中と表示されている場合は、クラスターがまだ初期化中です。クラスターはステータスが実行中になった時点で利用可能になります。
正しいリージョンを選択していることを確認してください。そうでない場合、リストにクラスターが表示されません。
クラスター作成後、クラスター ID をクリックして基本情報ページを開きます。
RDS 移行セクションで、レプリケーション遅延値をモニターします。この値が 60 秒未満になったら、ステップ 3:サービスのスイッチオーバーに進むことができます。
説明双方向の DTS データ同期タスクが進行中のインスタンスを移行またはアップグレードしないでください。データ不整合が発生する可能性があります。
クラスター作成後、RDS インスタンスからのデータ同期が開始されます。クラスター作成後 30 日以内にステップ 5 を完了させてください。期限を過ぎると、移行タスクは自動的に無効になります。
論理移行の場合:クラスター作成後にRDS 移行セクションに事前チェック失敗と表示された場合は、エラーメッセージの指示に従ってトラブルシューティングを行ってください。

たとえば、ソース RDS インスタンスにトリガーが含まれている場合、「RDS インスタンスにトリガーがあります」というメッセージで事前チェックが失敗します。トリガーを削除して移行の続行をクリックするか、移行のキャンセルをクリックして DTS コンソールで手動でデータ同期タスクを作成してください。詳細については、「トリガーを含むソースデータベースのデータ同期タスクの設定」をご参照ください。
この段階で移行のキャンセルをクリックすることもできます。移行キャンセルの影響については、「よくある質問」をご参照ください。

(オプション)ステップ 2:エンドポイントの追加
アプリケーションの接続文字列を変更せずにサービスをスイッチオーバーしたい場合は、スイッチオーバー時にエンドポイントを使用したスイッチオーバー(接続変更不要)オプションを選択してください。これにより、ソース RDS インスタンスと送信先の PolarDB クラスターのエンドポイントが自動的に交換されます。スイッチオーバー後、アプリケーションは元の接続文字列を使用して PolarDB に接続します。
エンドポイントの交換を機能させるには、ソース RDS インスタンスと送信先の PolarDB クラスターが一致するエンドポイントを持つ必要があります。デフォルトでは、PolarDB はプライベートプライマリエンドポイントとプライベートクラスターエンドポイントのみを作成します。ソース RDS インスタンスに追加のエンドポイントがある場合は、スイッチオーバー前に PolarDB に該当するエンドポイントを作成してください。
PolarDB クラスターにエンドポイントを追加するには、「エンドポイントの管理」をご参照ください。
RDS インスタンスにエンドポイントを追加するには、「RDS インスタンスのエンドポイント設定」をご参照ください。
スイッチオーバー前にエンドポイントを追加しなかった場合は、スイッチオーバー後に PolarDB クラスターが実行状態になった時点で追加してください。
プライベートエンドポイントを交換するには、ソース RDS インスタンスと送信先の PolarDB クラスターが同じ VPC に属している必要があります。異なる VPC に属している場合、スイッチオーバー後に既存のサービスが接続できなくなります。
ステップ 3:サービスのスイッチオーバー
RDS 移行セクションのレプリケーション遅延が 60 秒未満になったら、スイッチオーバーを実行します。
PolarDB コンソールにログインします。
送信先クラスターを見つけ、クラスター ID をクリックします。
基本情報ページのRDS 移行セクションで、スイッチオーバーをクリックします。
説明スイッチオーバーには通常、約 5 分かかります。
スイッチオーバー後、ソース RDS インスタンスは読み取り専用になり、PolarDB クラスターは読み取り/書き込みになります。その後、増分データが PolarDB クラスターから RDS インスタンスへと逆方向にレプリケーションされます。

ビジネスを新しいデータベースに切り替えますダイアログボックスで、スイッチオーバー方法を選択します。
エンドポイントを使用したスイッチオーバー(接続変更不要) システムが RDS インスタンスと PolarDB クラスターのエンドポイントを交換します。アプリケーションは既存の接続文字列を使用して PolarDB に接続し、構成変更は不要です。> 重要: このオプションを選択する前に、「エンドポイントを使用したスイッチオーバーに関する注意事項」を確認してください。OKをクリックし、ダイアログボックスで確認します。
エンドポイントを使用しないスイッチオーバー(接続変更が必要) OKをクリックし、ダイアログボックスで確認します。スイッチオーバーが完了したらページをリフレッシュします。PolarDB の読み取り/書き込みステータスが読み取り/書き込みに変わったら、アプリケーションのデータベースエンドポイントを更新してください。

(オプション)ステップ 4:DTS タスクのスイッチオーバー
ソースインスタンスがワンクリック移行タスク以外の DTS タスクに関与していない場合、コンソールにビジネス DTS タスク データベースエンドポイント スイッチオーバーボタンは表示されません。このステップはスキップしてください。
スキーマ移行および完全なデータ移行中は、データベースまたはテーブルスキーマを変更する DDL 文を実行しないでください。そうすると、移行タスクが失敗します。
ソースインスタンスが DTS タスク(ワンクリック移行タスクではない)に関与している場合は、スムーズなスイッチオーバーのために DTS タスクのソースまたはターゲットデータベースを変更してください。この機能の動作の詳細については、「ModifyDtsJobEndpoint」をご参照ください。
PolarDB コンソールにログインします。
送信先クラスターを見つけ、クラスター ID をクリックします。
基本情報ページのRDS 移行セクションで、ビジネス DTS タスク データベースエンドポイント スイッチオーバーをクリックします。

ビジネス DTS タスク データベースエンドポイント スイッチオーバーダイアログボックスで、オプションを選択します。
ソースインスタンス DTS タスク(フォワードスイッチオーバー):ソース RDS インスタンスの DTS タスクを選択し、フォワードスイッチオーバーのコミットをクリックします。
送信先インスタンスの DTS タスク (切り替えロールバック):
送信先の PolarDB クラスターの DTS タスクを選択し、[切り替えロールバックをコミット] をクリックします。
重要進める前に、ソース RDS インスタンスおよび送信先の PolarDB クラスターの両方の DTS 同期タスクのステータスを確認してください。詳細については、「DescribeDtsJobDetail」をご参照ください。

フォワードスイッチオーバー:ステップ 3(サービスのスイッチオーバー)の後、ステップ 5(移行の完了)の前にこのオプションを使用します。これにより、DTS タスクがソース RDS インスタンスから PolarDB クラスターに切り替わります。
スイッチオーバーロールバック:移行をロールバックした後、キャンセルする前にこのオプションを使用します。これにより、DTS タスクが PolarDB クラスターからソース RDS インスタンスに戻ります。
ステップ 5:移行の完了
ステップ 1 で PolarDB クラスターを作成した後、30 日以内に移行の完了をクリックします。
データ移行が完了しており、データ同期が不要であることを確認した後でのみ、移行の完了をクリックしてください。物理移行の場合、これは RDS インスタンスから PolarDB クラスターへのデータレプリケーションを終了します。論理移行の場合、これは DTS データ同期タスクを削除します。
この操作により、PolarDB クラスターと RDS インスタンス間のデータ同期が永久に中断されます。移行のキャンセルオプションは以降利用できなくなります。移行を完了する前に、PolarDB クラスターを本番環境で一定期間運用し、安定性を確認してください。
PolarDB コンソールにログインします。
クラスターを見つけ、クラスター ID をクリックします。
基本情報ページのRDS 移行セクションで、移行の完了をクリックします。ダイアログボックスでOKをクリックします。
説明OKをクリックすると、システムは約 2 分以内にデータ同期を停止します。このプロセス中、移行ステータスは同期の無効化と表示されます。移行が完了するまでお待ちください。
移行の完了ダイアログボックスで、PolarDB クラスターのバイナリロギングを無効にするかどうかを選択できます。バイナリロギングを無効にすると、書き込みパフォーマンスが若干向上します。変更を有効にするためにクラスターが自動的に再起動します。
ソース RDS インスタンスで更新または構成変更を行う必要がある場合は、まず移行の完了をクリックしてください。

(オプション)ソース RDS インスタンスのリリースまたは登録解除
PolarDB クラスター上でサービスが正しく動作していることと、ソース RDS インスタンスが不要であることを確認した後、以下の手順でリリースまたは登録解除を行ってください。
サブスクリプションインスタンス:今後の課金を停止するために登録を解除します。詳細については、「サブスクリプションプライマリ RDS インスタンスの登録解除」をご参照ください。
従量課金インスタンス:時間単位の課金を停止するために、速やかにインスタンスをリリースします。詳細については、「ApsaraDB RDS for MySQL インスタンスのリリースまたは登録解除」をご参照ください。
(オプション)DTS データ同期タスクの詳細の確認(論理移行のみ)
論理移行中に事前チェック失敗などの移行エラーや、レプリケーション遅延が高いなどの異常が発生した場合は、DTS タスクの詳細を確認して問題を診断してください。
PolarDB コンソールにログインします。
クラスターを見つけ、クラスター ID をクリックします。
基本情報ページのRDS 移行セクションで、DTS データ同期タスク名をクリックして、DTS コンソールのタスクリストを開きます。

同期タスクを見つけます。事前チェック失敗の詳細、タスクの詳細、およびタスクログを確認できます。


移行中に同期範囲に新しいデータベースを追加するには、オブジェクトの再選択をクリックします。






