このセクションでは、PolarDB for MySQL クラスター間のアップグレード手順について説明します。
アップグレード前のチェック
PolarDB のサービスにリンクされたロールの確認 (論理移行のみ)
移行評価を完了し、例外が報告されなかった場合は、この確認をスキップできます。
論理移行 (Data Transmission Service (DTS) を使用したデータ同期) を使用してワンクリックアップグレードを実行する前に、PolarDB のサービスにリンクされたロールが作成されているか、および DTS にクラウドリソースへのアクセス権限が付与されているかを確認してください。
ソース PolarDB for MySQL クラスターから余分なシステムアカウントを削除
移行後に移行先 PolarDB for MySQL クラスターのシステムアカウントが上書きされるのを防ぐため、ソース PolarDB for MySQL クラスターに root アカウントと aliyun_root アカウントの両方が同時に存在してはいけません。アップグレードする前に、ソース PolarDB for MySQL クラスターから余分なシステムアカウントを削除してください。
各 PolarDB for MySQL バージョンの正しいシステムアカウント名は次のとおりです:
データベースエンジンのバージョン | 正しいシステムアカウント名 |
MySQL 5.6 | root |
MySQL 5.7 | aliyun_root |
MySQL 8.0 | root |
上記にリストされている各バージョンについて、正しいものを除いてすべてのシステムアカウントを削除してください。たとえば、PolarDB MySQL 5.7 クラスターの正しいシステムアカウントは aliyun_root です。コンソールで手動で root アカウントを作成した場合は、それを削除してください。削除する前に、アプリケーションが root アカウントを使用していないことを確認してください。
システムアカウントは手動で作成されたか、システムによって自動的に作成され、バージョンアップグレード後に残された可能性があります。場合によっては、これらのアカウントがコンソールに表示されないことがあります。
例
次の例では、PolarDB MySQL 5.6 クラスターから余分なシステムアカウントをクリーンアップする方法を示します。
特権アカウントを使用してデータベースに接続します。
すべての root と aliyun_root システムアカウントを検索します。
SELECT * FROM mysql.user WHERE `user` IN ('root', 'aliyun_root');余分なシステムアカウントを削除します。PolarDB MySQL 5.6 クラスターの正しいシステムアカウントは root なので、aliyun_root アカウントを削除します。
DELETE FROM mysql.user WHERE `user` = 'aliyun_root' LIMIT n;
(任意) インテリジェントストレステスト
メジャーエンジンバージョンのアップグレードを実行する前に、インテリジェントストレステストを使用して、移行先の PolarDB クラスターでサービストラフィックを実行するシミュレーションを行います。これは、以下の目的に役立ちます。
ピーク時のサービストラフィックを処理するために、クラスター仕様をスケールアウトする必要があるかどうかを検証します。
元の PolarDB クラスターと移行先の PolarDB クラスターとの間で、SQL テンプレート実行のパフォーマンスの違いを分析します。
詳細な手順については、「トラフィック再生とストレステスト」をご参照ください。
ステップ 1:PolarDB からのアップグレードと移行
このステップでは、ソース PolarDB for MySQL クラスターと同じデータを持つクラスターを作成し、ソース PolarDB for MySQL クラスターからの増分データがこのクラスターにリアルタイムで同期されます。
DTS 移行中、初期の完全なデータ同期はソースと移行先の両方のデータベースの読み取りおよび書き込みリソースを消費するため、データベースの負荷が増加する可能性があります。必要に応じて移行レートを調整できます。
PolarDB コンソールにログインします。
クラスターリストページで、[クラスターの作成] をクリックして、クラスター購入ページに移動します。
請求方法を選択します:[サブスクリプション]、[従量課金]、または [サーバーレス]。
サブスクリプション:クラスター作成時にコンピューティングノードの料金を前払いします。ストレージ容量は実際の使用量に基づいて時間単位で請求され、アカウントから時間単位で引き落とされます。
従量課金:前払いはありません。コンピューティングノードとストレージ容量 (実際の使用量に基づく) の両方が時間単位で請求され、アカウントから時間単位で引き落とされます。
サーバーレス:前払いはありません。コンピューティングノード、ストレージ容量、データベースプロキシ、およびその他のリソースは、クラスター使用中の実際の需要に基づいて動的に拡張され、実際の使用量に基づいて請求されます。
シナリオに基づいて次のパラメーターを設定します。
説明次の表に記載されていないパラメーターについては、「クラスターの購入」をご参照ください。
パラメーター
説明
[作成方法]
[PolarDB からのアップグレードと移行] を選択します。
[リージョン]
ソース PolarDB for MySQL クラスターが存在するリージョンを選択します。
[ソース PolarDB バージョン]
ソース PolarDB for MySQL クラスターのバージョン。5.6、5.7、または 8.0 を選択できます。
[ソース PolarDB クラスター]
ソース PolarDB for MySQL クラスターを選択します。
[データベースエンジン]
移行先クラスターのデータベースエンジンバージョン
バージョン間でアップグレードする場合、ソースクラスターと同じバージョンまたは異なるバージョンを選択できます。
アーキテクチャ間でアップグレードする場合、MySQL 8.0 を選択する必要があります。
説明[データベースのエディション]
ソースクラスターのエディションと一致します。選択は不要です。
[データベースカテゴリ]
移行先クラスターのシリーズ
説明バージョン間でアップグレードする場合は、Cluster Edition [推奨] を選択します。
アーキテクチャ間でアップグレードする場合は、Multi-master Cluster (Limitless) を選択します。
[CPU アーキテクチャ]
ソースクラスターの CPU アーキテクチャと一致します。選択は不要です。
[ノード数]
ソースクラスターのワーカー数と一致します。選択は不要です。
選択された仕様
移行先クラスターのノード仕様
データベースプロキシタイプ
ソースクラスターのデータベースプロキシ仕様と一致します。選択は不要です。
右上隅で、クラスター設定を確認します。[サブスクリプション期間] ([サブスクリプション] クラスターの場合)、購入数、および 自動更新 を有効にするかどうかを設定します。
サービス利用規約を読んで同意します。今すぐ購入する をクリックします。
[お支払い] ページで、未払いの注文詳細と支払い方法を確認し、[注文する] をクリックします。
説明支払いが成功すると、クラスターの作成に 10~15 分かかります。その後、[クラスターリスト] で新しいクラスターを確認できます。
クラスターノードが [作成中] と表示されている場合、クラスターはまだ準備ができていません。クラスターのステータスが [実行中] になってから使用できます。
正しいリージョンを選択したことを確認してください。そうでない場合、クラスターは表示されません。
事前チェックが失敗した場合、移行先クラスターは [作成中] の状態のままで、アップグレードは自動的に進行しません。エラーメッセージに基づいて事前チェックの失敗を解決し、[アップグレードを続行] をクリックします。この場合、クラスターの作成に 15 分以上かかることがありますが、これは正常です。
クラスターが作成されたら、クラスター ID をクリックして [基本情報] ページに移動します。
基本情報 ページの PolarDB のアップグレード セクションで、移行先 PolarDB クラスターの レプリケーションの遅延 が 60 秒未満であることを確認してから続行します。
説明既存の DTS 双方向同期を持つクラスターは[ワンクリックでアップグレードできず]、[データの不整合]が発生する可能性があります。
クラスター作成後、DTS はソース PolarDB クラスターからのデータ同期を開始します。30 日以内にアップグレードを完了する必要があります。30 日後、アップグレード機能は自動的に無効になります。
このセクションで [アップグレードのキャンセル] をクリックできます。アップグレードをキャンセルした場合の影響については、「よくある質問」をご参照ください。
ステータスが [事前チェック失敗] と表示された場合は、[エラーメッセージ] に基づいて問題を解決してください。
たとえば、ソース PolarDB クラスターにトリガーが作成されている場合、事前チェックは失敗し、「PolarDB cluster contains triggers」というエラーが返されます。PolarDB のトリガーを先に削除してから、[アップグレードを続行] をクリックするか、[アップグレードを中止] をクリックして DTS コンソールで手動で移行タスクを作成します。詳細については、「ソースデータベースにトリガーが存在する場合の同期または移行ジョブの設定方法」をご参照ください。
アーキテクチャのアップグレードの場合、移行先クラスターのデフォルトの書き込みエンドポイントは MasterID=1 の RW ノードです。通常の DTS データ同期を保証するため、アップグレードが完了するまで常にこの RW ノードに書き込みを行ってください。
ステップ 2:アドレスの調整 (任意)
PolarDB のメジャーエンジンバージョンのアップグレードは、アドレスを保持した切り替えをサポートしています。元のデータベースエンドポイントを保持し、アプリケーションが接続設定を変更することなく新しい PolarDB に切り替えることができます。相互切り替えは、ソース PolarDB とターゲット PolarDB クラスターの両方に存在するエンドポイントでのみサポートされることに注意してください。デフォルトでは、ターゲットはプライベートプライマリエンドポイントとプライベートクラスターエンドポイントのみを作成します。ソースに 2 つ以上のエンドポイントが含まれている場合、切り替える前にターゲットに対応するエンドポイントを作成する必要があります。そうしないと、切り替えは行えません。PolarDB クラスターのエンドポイントを作成する方法については、「接続アドレスの管理」をご参照ください。
アドレスの調整は、移行先クラスターが実行中になった後にのみ可能です。必要に応じて、アドレスプロパティ、クラスターパラメーターを設定し、読み取り専用ノードを追加することもできます。
アドレス切り替えでプライベートエンドポイントを切り替える前に、ソース PolarDB と移行先 PolarDB クラスターが同じ VPC にあることを確認してください。そうでない場合、切り替え後に既存のサービスは接続できなくなります。
ステップ 3:アップグレード切り替え
移行先 PolarDB クラスターのレプリケーション遅延が 60 秒未満になったら、アップグレード切り替えを実行します。
PolarDB コンソールにログインします。
移行先クラスターを見つけ、そのクラスター ID をクリックします。
基本情報 ページの PolarDB のアップグレード セクションで、切り替えのアップグレード をクリックします。
説明アップグレードは通常 5 分以内に完了します。
この操作は、ソース PolarDB クラスターとターゲット PolarDB クラスターの読み取り/書き込みステータスを、ソース PolarDB クラスターを読み取り専用に、ターゲット PolarDB クラスターを読み取り/書き込みに変更することで切り替えます。同時に、DTS は、ターゲット PolarDB クラスターからソース PolarDB クラスターに新しいデータを同期することで、データレプリケーションの方向を逆にします。
切り替えのアップグレード ダイアログボックスで、[アドレス付きで切り替え (アプリケーション設定の変更なし)] または [アドレスなしで切り替え (アプリケーション接続設定を新しい PolarDB エンドポイントに更新)] のいずれかを選択します。ダイアログには、[ソース PolarDB エンドポイント] と [移行先エンドポイント] の間のマッピングが表示されます。
[アドレス付きで切り替え (アプリケーション設定の変更なし)] を選択した場合は、次の手順に従います。
[アドレス交換で切り替え (アプリケーション接続設定の変更不要)] を選択します。システムはソース PolarDB とターゲット PolarDB の接続エンドポイントを自動的に交換するため、アプリケーションで設定を変更することなく、自動的にターゲット PolarDB クラスターに接続できます。
重要[アドレス付きで切り替え (アプリケーション設定の変更なし)] を選択する前に、「アドレス切り替えに関する考慮事項」をお読みください。
アップグレード対象の PolarDB クラスターが既存の Data Transmission Service (DTS) タスクのソースまたはデスティネーションである場合、アップグレード後に DTS タスクを更新して、アップグレード後の PolarDB クラスターをソースまたはデスティネーションとして使用する必要があります。これは、データ同期タスク、データ移行タスク、および変更追跡タスクに適用されます。詳細については、「DTS タスクオブジェクトの変更」をご参照ください。
[OK] をクリックします。
[アドレスなしで切り替え (アプリケーション接続設定を新しい PolarDB エンドポイントに更新)] を選択した場合は、次の手順に従います。
[アドレスなしで切り替え (アプリケーション接続設定を新しい PolarDB エンドポイントに更新)] を選択します。
[OK] をクリックします。
ページを更新します。移行先 PolarDB クラスターの [読み取り/書き込みステータス] が [読み取り/書き込み] と表示されたら、すぐにアプリケーションのデータベースエンドポイントを更新してください。
アップグレード切り替え後にデータの異常が発生した場合は、ロールバックしてアップグレード前の状態に復元できます。詳細については、「アップグレードのロールバック」をご参照ください。
アーキテクチャのアップグレードと切り替えを完了した後は、DTS 同期の問題を避けるため、移行先 Multi-master Cluster (Limitless) の書き込みエンドポイントを変更しないでください。
ステップ 4:ソースインスタンス DTS タスク切り替え (任意)
ソースインスタンスに関連する DTS リンク (ワンクリック移行の DTS リンクを除く) がある場合、この機能を使用して DTS の同期または移行タスクのソースまたはデスティネーションインスタンスを変更 (置換) し、ビジネスの円滑な移行を実現します。実装の詳細と考慮事項については、「DTS タスクのソースまたはデスティネーションインスタンスの変更」をご参照ください。
PolarDB コンソールに移動します。
移行先クラスターを見つけ、そのクラスター ID をクリックします。
概要 ページの [Apsara PolarDB] 移行機能 セクションで、ソースインスタンスの DTS タスクの切り替え をクリックします。
[ビジネス DTS データベースの切り替え] ダイアログボックスで、同期元インスタンスの DTS タスク (フォワードスイッチ) または 同期先インスタンスの DTS タスク (ロールバックスイッチ) のいずれかを選択します。
重要切り替える前に、ソースインスタンスとデスティネーションインスタンスの両方で DTS の同期ステータスを確認してください。DTS のステータスを確認する方法の詳細については、「DTS ステータスの確認」をご参照ください。
ソースインスタンス DTS タスク (フォワードスイッチ)
同期元インスタンスの DTS タスク (フォワードスイッチ) を選択した場合は、次の手順に従います。DTS タスクリストが表示され、[DTS タスク名]、[同期ステータス]、[ソースインスタンス]、[デスティネーションインスタンス] などの列が表示されます。
データベースインスタンスを切り替えたい DTS タスクを選択します。
フォワードスイッチの申請 をクリックします。
デスティネーションインスタンス DTS タスク (ロールバックスイッチ)
同期先インスタンスの DTS タスク (ロールバックスイッチ) を選択した場合は、次の手順に従います。
インターフェイスは [ソースインスタンス DTS タスク (フォワードスイッチ)] タブに似ており、ロールバックする DTS タスクのリストが表示されます。
データベースインスタンスを切り替えたい DTS タスクを選択します。
ロールバックスイッチの申請 をクリックします。
ソースインスタンス DTS タスク (フォワードスイッチ) は、移行切り替え後に適用され、ソースインスタンスの DTS タスクをデスティネーションインスタンスにリダイレクトし、移行前の DTS 操作を完了します。
デスティネーションインスタンス DTS タスク (ロールバックスイッチ) は、ロールバック切り替え後に適用され、デスティネーションインスタンスの DTS タスクをソースインスタンスに戻し、移行をキャンセルする前の操作を完了します。
ステップ 5:アップグレードの完了
ステップ 1:PolarDB からのアップグレードを完了した後、30 日以内にアップグレードを完了する必要があります。
[アップグレードの完了] をクリックする前に、データ移行が完了し、データ同期が不要になったことを確認してください。
この操作はソース PolarDB クラスターとターゲット PolarDB クラスター間のデータ同期タスクを中断し、アップグレードのロールバック機能が利用できなくなるため、ターゲット PolarDB クラスターを一定期間使用し、正常に動作していることを確認してからアップグレードを完了することを推奨します。
PolarDB コンソールにログインします。
移行先クラスターを見つけ、そのクラスター ID をクリックします。
基本情報 ページの PolarDB のアップグレード セクションで、アップグレードを完了 をクリックします。
アップグレードを完了 ダイアログボックスで、PolarDB クラスターのバイナリロギングを無効にするかどうかを選択し、[OK] をクリックします。
説明[OK] をクリックすると、システムは 2 分以内に同期関係を中断し、アップグレードステータスは [同期無効] に変わります。
バイナリロギングを無効にすることを選択した場合、PolarDB クラスターは新しい設定を適用するために自動的に再起動します。
ソース PolarDB クラスターが不要になった場合は、ソース PolarDB クラスターをリリースすることを選択できます。クラスターのリリースに関する詳細については、「クラスターのリリース」をご参照ください。
アーキテクチャのアップグレードを実行した場合、[アップグレードの完了] ダイアログで [OK] をクリックすると、書き込みエンドポイントが初期状態に戻り、データベースがランダムに RW ノードを書き込みエンドポイントとして割り当てます。
データ同期タスクの詳細の表示 (任意)
バージョンアップグレード中にエラーや異常が発生した場合は、対応する DTS データ同期タスクの詳細ページに移動して詳細情報を確認します。
PolarDB コンソールにログインします。
移行先クラスターを見つけ、そのクラスター ID をクリックします。
基本情報 ページの PolarDB のアップグレード セクションで、DTS データ同期タスク の下のタスク名をクリックして、DTS コンソールのデータ同期タスクリストに移動します。
データ同期タスクリストで、関連するタスクを見つけて同期の詳細とタスクログを表示します。
アップグレード中に要件が変更された場合 (たとえば、ソース PolarDB クラスターに新しいデータベースが追加され、同期に含める必要がある場合)、[同期オブジェクトの変更] をクリックして再設定します。
アップグレードのロールバック (任意)
アップグレードを完了する前に、データの異常などの問題を発見した場合、ロールバック操作を実行してクラスターをアップグレード前の状態に迅速に復元できます (ソース PolarDB クラスターは読み書き可能、ターゲット PolarDB クラスターは読み取り専用、ソース PolarDB クラスターからのデータはターゲット PolarDB クラスターに同期されます)。ロールバックが完了した後、メジャーエンジンバージョンのアップグレードを続行するには、ステップ 3:切り替え操作から直接開始できます。
PolarDB コンソールにログインします。
移行先クラスターを見つけ、そのクラスター ID をクリックします。
基本情報 ページの PolarDB のアップグレード セクションで、ロールバックのアップグレード をクリックします。
フェイルバックダイアログボックスで、[アドレス付きでフェイルバック (アプリケーション設定の変更なし)] または [アドレスなしでフェイルバック (アプリケーション接続設定をソースインスタンスのエンドポイントに更新)] のいずれかを選択します。
[アドレス付きでフェイルバック (アプリケーション設定の変更なし)] を選択した場合は、次の手順に従います。
[アドレス交換による切り戻し (アプリケーション接続設定の変更不要)] を選択すると、システムはソース PolarDB クラスターとターゲット PolarDB クラスター間の接続アドレスを自動的に交換し、アプリケーション側で設定を変更することなく、自動的にソース PolarDB クラスターに切り替えることができます。
[OK] をクリックします。
この時点で、ソース PolarDB クラスターは読み書き可能になり、ターゲット PolarDB クラスターは読み取り専用になり、ソース PolarDB クラスターからのデータはターゲット PolarDB クラスターに同期されます。
説明アーキテクチャアップグレードのロールバックでは、どのアドレスをロールバックするかを選択できます。
[アドレスなしでフェイルバック (アプリケーション接続設定をソースクラスターのエンドポイントに更新)] を選択した場合は、次の手順に従います。
[アドレスなしでフェイルバック (アプリケーション接続設定をソースクラスターのエンドポイントに更新)] を選択します。フェイルバック後、すぐにアプリケーションのデータベース接続プールのエンドポイントを更新してください。
[OK] をクリックします。ソース PolarDB クラスターは読み書き可能になり、ターゲット PolarDB クラスターは読み取り専用になり、ソース PolarDB クラスターのデータはターゲット PolarDB クラスターに同期されます。
ページを更新し、ソース PolarDB クラスターのステータスが読み書き可能に変わったら、速やかにアプリケーションのデータベースエンドポイントをソース PolarDB クラスターのものに更新してください。
アップグレードのキャンセル (任意)
PolarDB コンソールにログインします。
移行先クラスターを見つけ、そのクラスター ID をクリックします。
基本情報 ページの PolarDB のアップグレード セクションで、アップグレードをキャンセル をクリックします。
アップグレードをキャンセル ダイアログボックスで、OK をクリックします。ダイアログには、アップグレードをキャンセルするとソースクラスターとデスティネーションクラスター間のデータ同期が中断されることが説明されています。オプションで、[デスティネーションインスタンスのバイナリロギングを無効にする] を選択します。
アップグレードをキャンセルしても、新しく作成されたターゲット PolarDB クラスターは自動的にリリースまたは返金されません。システムはソースクラスターとターゲットクラスター間の DTS 同期リンクを終了するだけです。ターゲットクラスターは独立した正常に稼働するクラスターとなり、引き続き課金されます。課金を停止するには、手動でクラスターをリリースする (従量課金クラスターの場合) か、サブスクリプションクラスターを適宜処理する必要があります。