Kubernetes で AlloyDB Omni のデータベースのマイナー バージョンをアップグレードする

ドキュメントのバージョンを選択します。

このページでは、Kubernetes で AlloyDB Omni のデータベースのマイナー バージョンをアップグレードする方法について説明します。

マイナー バージョンのデータベースをアップグレードするには、次の 2 つの方法があります。

  • ダウンタイムの少ないアップグレード: AlloyDB Omni バージョン 15.7.1 以降を実行している高可用性(HA)環境の場合、AlloyDB Omni はまずスタンバイ インスタンスをアップグレードします。次に、AlloyDB Omni オペレーターがスイッチオーバーを実行し、アップグレードされたスタンバイ インスタンスのうち 1 つを新しいプライマリ インスタンスにプロモートします。スイッチオーバーが成功すると、古いプライマリ インスタンスが更新されます。

    このプロセスにより、アップグレード中のダウンタイムを最小限に抑えることができます。

  • 同時アップグレード: その他のすべての状況では、AlloyDB Omni オペレーターはすべてのインスタンスを同時にアップグレードします。つまり、アップグレード中にダウンタイムが発生します。

制限事項

ダウンタイムが短いアップグレードでは、常にスタンバイ インスタンスの 1 つが使用できません。データベース クラスタがゼロの復旧ポイント目標(RPO)に達し、データ損失のリスクがないようにするには、データベース クラスタに 1 つのプライマリ インスタンスと少なくとも 2 つのスタンバイ インスタンスが必要です。

始める前に

  • クラスタが HA で、AlloyDB Omni のバージョンが 15.7.1 より前の場合は、このマイナー バージョンのアップグレード プロセスを行う前に、データベース クラスタを更新するの手順で操作します。
  • マイナー バージョンのアップグレードを実行できる、トラフィックの少ない期間を特定します。
  • データの損失を防ぐため、データをバックアップします。

ダウンタイムが短いデータベースのマイナー バージョンのアップグレード プロセスを有効にする

ダウンタイムが短いデータベースのマイナー バージョンのアップグレード プロセスを有効にするには、データベース クラスタに次のアノテーションを追加します。

kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME
dbcluster.dbadmin.goog/enableLDTM=true

次の変数を置き換えます。

AlloyDB Omni のバージョンをアップグレードする

16.8.0 バージョンをアップグレードするには、クラスタのマニフェスト ファイルで databaseVersion フィールドと controlPlaneAgentsVersion フィールドを更新し、ファイルを再度適用します。

次のマニフェスト ファイルの冒頭部分は、databaseVersion のバージョン 16.8.0 と controlPlaneAgentsVersion のバージョン 1.5.0 を指定しています。

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
    name: DB_CLUSTER_NAME
spec:
    databaseVersion: "16.8.0"
    controlPlaneAgentsVersion: "1.5.0"
...

次の変数を置き換えます。

アップグレード プロセスをモニタリングする

マニフェスト ファイルを更新すると、AlloyDB Omni オペレーターによりアップグレード プロセスが開始されます。アップグレード プロセスをモニタリングするには、DBCUpgradeInProgress 条件を確認します。

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "DBCUpgradeInProgress")'

次の変数を置き換えます。

プロセスの進行中は、ステータスが true になります。プロセスが完了すると、条件のステータスは false に変わります。

トラブルシューティング

アップグレード プロセス中にエラー メッセージが表示された場合は、次のセクションをご覧ください。

アップグレード前のエラー

データベース クラスタでアップグレード前のエラーが発生した場合は、メッセージを確認して問題に対処します。

アップグレード前のエラー メッセージをバイパスする場合は、force-upgrade アノテーションを有効にします。

kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/force-upgrade=true

次の変数を置き換えます。

アップグレード プロセスが完了したら、force-upgrade アノテーションを false に設定します。

アップグレードの失敗

自動アップグレード プロセスでは、HA 環境で失敗する可能性のあるポイントがいくつかあります。それぞれの失敗のシナリオと AlloyDB Omni オペレーターが実行する後続のアクションの詳細については、次の表をご覧ください。

エラー メッセージ 説明 必要なユーザー アクション
standby instance upgrade succeeded but the replication lag of the standby(s) is too high to be promoted to synchronous standby(s)

アップグレード プロセスは成功しましたが、スタンバイ インスタンスがプライマリ インスタンスに追いつかず、同期レプリケーションを確立できませんでした。

大量のトラフィックがプライマリ インスタンスに送信されます。トラフィックが減少すると、スタンバイ インスタンスは徐々に追いつきます。この後、HAReady 条件は true になります。

マイナー バージョンが異なるプライマリ インスタンスとスタンバイ インスタンスを修正するでオプションを選択します。

all standbys upgrade succeeded but the switchover instance failed to promote an upgraded standby.

スタンバイ インスタンスは正常にアップグレードされましたが、スイッチオーバー プロセスが失敗しました。

  1. スイッチオーバー カスタム リソースのステータスを確認して、障害の原因を特定します。
  2. マイナー バージョンが異なるプライマリ インスタンスとスタンバイ インスタンスを修正するでオプションを選択します。
standby instance upgrade failed but rollback succeeded.

スタンバイ インスタンスは正常にアップグレードされませんでしたが、AlloyDB Omni オペレーターによって以前のバージョンに正常に復元されました。

  1. アップグレード エラー メッセージを確認します。
  2. マイナー バージョンが異なるプライマリ インスタンスとスタンバイ インスタンスを修正するでオプションを選択します。
standby instance upgrade failed and rollback failed.

スタンバイ インスタンスが正常にアップグレードされず、AlloyDB Omni オペレーターがインスタンスを以前のバージョンに復元できない。

Google サポートに連絡してトラブルシューティングを依頼します。

マイナー バージョンが異なるプライマリ インスタンスとスタンバイ インスタンスを修正する

この問題を解決するには、次のいずれかのオプションを選択します。

  • アップグレードの失敗の原因となった問題が解決したら、アップグレードを再試行します。

    アップグレードを再試行するには、インスタンスからアップグレードの start-time アノテーションを削除します。アノテーションを削除すると、AlloyDB Omni オペレーターは新しい開始時刻を生成し、アップグレード プロセスを再開します。

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/start-time-
    

    次の変数を置き換えます。

  • アップグレードの失敗の原因となった問題が解決しない場合は、インスタンスを以前の AlloyDB Omni オペレーター バージョンにダウングレードします。

    インスタンスをダウングレードするには、アップグレード プロセスに従って、マニフェスト ファイルの databaseVersion フィールドと controlPlaneAgentsVersion フィールドを以前に使用していたバージョンに変更します。