このページでは、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
次の変数を置き換えます。
DB_CLUSTER_NAME
: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタの名前と同じです。詳細については、Kubernetes に AlloyDB Omni をインストールするをご覧ください。
AlloyDB Omni のバージョンをアップグレードする
15.12.0 バージョンをアップグレードするには、クラスタのマニフェスト ファイルで databaseVersion
フィールドと controlPlaneAgentsVersion
フィールドを更新し、ファイルを再度適用します。
次に示すマニフェスト ファイルの冒頭部分では、databaseVersion
のバージョン 15.12.0 と controlPlaneAgentsVersion
のバージョン 1.5.0 を指定しています。
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: DB_CLUSTER_NAME
spec:
databaseVersion: "15.12.0"
controlPlaneAgentsVersion: "1.5.0"
...
次の変数を置き換えます。
DB_CLUSTER_NAME
: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタの名前と同じです。詳細については、Kubernetes に AlloyDB Omni をインストールするをご覧ください。
アップグレード プロセスをモニタリングする
マニフェスト ファイルを更新すると、AlloyDB Omni オペレーターによりアップグレード プロセスが開始されます。アップグレード プロセスをモニタリングするには、DBCUpgradeInProgress
条件を確認します。
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "DBCUpgradeInProgress")'
次の変数を置き換えます。
DB_CLUSTER_NAME
: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタの名前と同じです。詳細については、Kubernetes に AlloyDB Omni をインストールするをご覧ください。
プロセスの進行中は、ステータスが true
になります。プロセスが完了すると、条件のステータスは false
に変わります。
トラブルシューティング
アップグレード プロセス中にエラー メッセージが表示された場合は、次のセクションをご覧ください。
アップグレード前のエラー
データベース クラスタでアップグレード前のエラーが発生した場合は、メッセージを確認して問題に対処します。
アップグレード前のエラー メッセージをバイパスする場合は、force-upgrade
アノテーションを有効にします。
kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/force-upgrade=true
次の変数を置き換えます。
DB_CLUSTER_NAME
: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタの名前と同じです。詳細については、Kubernetes に AlloyDB Omni をインストールするをご覧ください。
アップグレード プロセスが完了したら、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)
|
アップグレード プロセスは成功しましたが、スタンバイ インスタンスがプライマリ インスタンスに追いつかず、同期レプリケーションを確立できませんでした。
大量のトラフィックがプライマリ インスタンスに送信されます。トラフィックが減少すると、スタンバイ インスタンスは徐々に追いつきます。この後、 |
マイナー バージョンが異なるプライマリ インスタンスとスタンバイ インスタンスを修正するでオプションを選択します。 |
all standbys upgrade succeeded but the switchover instance failed
to promote an upgraded standby.
|
スタンバイ インスタンスは正常にアップグレードされましたが、スイッチオーバー プロセスが失敗しました。 |
|
standby instance upgrade failed but rollback succeeded.
|
スタンバイ インスタンスは正常にアップグレードされませんでしたが、AlloyDB Omni オペレーターによって以前のバージョンに正常に復元されました。 |
|
standby instance upgrade failed and rollback failed.
|
スタンバイ インスタンスが正常にアップグレードされず、AlloyDB Omni Operator がインスタンスを以前のバージョンに復元できません。 |
Google サポートに連絡してトラブルシューティングを依頼します。 |
マイナー バージョンが異なるプライマリ インスタンスとスタンバイ インスタンスを修正する
この問題を解決するには、次のいずれかのオプションを選択します。
アップグレードの失敗の原因となった問題が解決したら、アップグレードを再試行します。
アップグレードを再試行するには、インスタンスからアップグレードの
start-time
アノテーションを削除します。アノテーションを削除すると、AlloyDB Omni オペレーターは新しい開始時刻を生成し、アップグレード プロセスを再開します。kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/start-time-
次の変数を置き換えます。
DB_CLUSTER_NAME
: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタの名前と同じです。詳細については、Kubernetes に AlloyDB Omni をインストールするをご覧ください。
アップグレードの失敗の原因となった問題が解決しない場合は、インスタンスを以前の AlloyDB Omni オペレーター バージョンにダウングレードします。
インスタンスをダウングレードするには、アップグレード プロセスに従って、マニフェスト ファイルの
databaseVersion
フィールドとcontrolPlaneAgentsVersion
フィールドを以前に使用していたバージョンに変更します。