本頁說明如何將 AlloyDB Omni 運算子升級至 1.5.0 版。升級步驟取決於目前的 AlloyDB Omni 版本和升級版本。
事前準備
升級 AlloyDB Omni 運算子時,資料庫會重新啟動,除非符合下列所有條件:
- 您要將 AlloyDB Omni 運算子 1.1.1 版升級至較新版本。
- 您使用的是 AlloyDB Omni 資料庫 15.5.5 以上版本。
- AlloyDB AI 未啟用。詳情請參閱「使用 AlloyDB AI 建立資料庫叢集」。
如果資料庫重新啟動,預期不會遺失任何資料。
自 AlloyDB Omni 資料庫 15.7.1 版起,Kubernetes 型 AlloyDB Omni 資料庫叢集的高可用性 (HA) 功能採用新架構,可為 HA 自動設定、容錯移轉和修復功能提供更多強化措施和改良項目。
如果您要將 AlloyDB Omni 資料庫版本從 15.7.0 (或更早版本) 升級至 15.7.1 (或更新版本),或是要降級版本,則必須停用 HA,並在程序完成後重新啟用 HA。
判斷目前的版本
如要查看資料庫叢集使用的 AlloyDB Omni 版本,請執行下列指令:
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.currentDatabaseVersion}'
請將下列項目改為對應的值:
DB_CLUSTER_NAME
:資料庫叢集的名稱。也就是您在建立資料庫叢集時宣告的名稱。詳情請參閱「在 Kubernetes 上安裝 AlloyDB Omni」。NAMESPACE
:資料庫叢集的 Kubernetes 命名空間。
如果您執行 AlloyDB Omni 運算子 1.0.0 以上版本,這個指令會列印資料庫叢集使用的 AlloyDB Omni 版本。
如要查看 Kubernetes 叢集上安裝的 AlloyDB Omni 運算子版本,請執行下列指令:
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.currentControlPlaneAgentsVersion}'
如果您執行 AlloyDB Omni 運算子 1.0.0 版或更新版本,輸出內容會是 Kubernetes 叢集上執行的 AlloyDB Omni 運算子版本號碼。
如果您執行的 AlloyDB Omni 運算子版本早於 1.0.0,請按照「從 1.0.0 之前的 AlloyDB Omni 運算子升級」一文中的操作說明進行升級。否則,請檢查目標版本號碼。
查看目標版本號碼
如果您執行的是 AlloyDB Omni 運算子 1.0.0 以上版本,接下來的步驟取決於要升級的 AlloyDB Omni 版本。AlloyDB Omni 版本號碼包含下列元件:
- PostgreSQL 相容性的主要版本號碼
- PostgreSQL 相容性的次要版本號碼
- 這個 AlloyDB Omni 版本的修補程式版本號碼
舉例來說,AlloyDB Omni 16.8.0 版支援 PostgreSQL 15.7 版,但沒有 AlloyDB Omni 發布修補程式。
選擇適合目標版本的安裝選項:
安裝情境 | 更新步驟 |
---|---|
您想升級至支援較新版 PostgreSQL 的 AlloyDB Omni 版本。 | 升級 AlloyDB Omni 運算子和資料庫叢集。 支援特定 PostgreSQL 次要版本的每組 AlloyDB Omni 版本,都有自己的 AlloyDB Omni 運算子版本號碼。請參閱 AlloyDB Omni 運算子版本相容性表,確認 AlloyDB Omni 運算子版本與運算子版本是否相容。 |
您只想升級至較新的 AlloyDB Omni 修補程式版本。 | 升級 資料庫叢集。 |
所有其他情境 | 按照升級 AlloyDB Omni 運算子中的步驟操作。 |
升級 AlloyDB Omni 運算子
如要升級 AlloyDB Omni 運算子,請按照下列步驟操作:
定義環境變數:
export GCS_BUCKET=alloydb-omni-operator
export OPERATOR_VERSION=OPERATOR_VERSION
export HELM_PATH=$OPERATOR_VERSION/alloydbomni-operator-$OPERATOR_VERSION.tgz
將
OPERATOR_VERSION
替換為要升級的 AlloyDB Omni 運算子版本,例如1.5.0
。下載最新版 AlloyDB Omni 運算子:
gcloud storage cp -r gs://$GCS_BUCKET/$HELM_PATH ./
tar -xvzf alloydbomni-operator-${OPERATOR_VERSION}.tgz
套用最新的 AlloyDB Omni 運算子自訂資源定義:
kubectl apply -f alloydbomni-operator/crds
升級 AlloyDB Omni 運算子 Helm 圖表:
helm upgrade alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \ --namespace alloydb-omni-system \ --atomic \ --timeout 5m
從 1.4.1 或更早版本更新 OpenShift 資料庫叢集
從 1.5.0 版開始,AlloyDB Omni 運算子可與 OpenShift 的預設restricted-v2
安全環境限制條件相容。對於在 OpenShift 上執行 controlPlaneAgentsVersion
1.5.0 以上版本的新資料庫叢集,OpenShift 會為資料庫工作負載插入任意使用者 ID。如果資料庫叢集執行的是舊版,資料庫工作負載必須繼續以預設使用者 ID 999
執行。
如要將 OpenShift 上的資料庫叢集從 1.5.0 之前的版本更新,請按照下列步驟操作:controlPlaneAgentsVersion
將使用
anyuid
安全性內容限制的權限授予資料庫叢集的服務帳戶。這樣一來,資料庫工作負載就能以預設使用者 ID 執行。oc adm policy add-scc-to-user anyuid system:serviceaccount:NAMESPACE:DB_CLUSTER_NAME-sa
使用
openshift.io/scc=anyuid
為資料庫叢集加上註解。 AlloyDB Omni 運算子 1.5.0 以上版本會辨識這項註解,並在 OpenShift 上以預設使用者 ID 執行資料庫工作負載,而不是允許平台插入任意 ID。kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n NAMESPACE openshift.io/scc=anyuid
請按照步驟將資料庫叢集更新至最新版本。
更新資料庫叢集
如要更新 dbCluster
,請完成下列步驟:
如要將高可用性 AlloyDB Omni 資料庫叢集從資料庫版本 15.7.0 (或更早版本) 升級至 15.7.1 (或更新版本),請按照下列步驟停用高可用性。
- 在叢集的資訊清單中,將
numberOfStandbys
設為0
。
spec: availability: numberOfStandbys: 0
- 如要停用 HA,請重新套用資訊清單。
- 在叢集的資訊清單中,將
更新叢集資訊清單中的
databaseVersion
和controlPlaneAgentsVersion
版本,然後重新套用資訊清單。執行下列範例,這是資訊清單檔案的一部分,用於指定
databaseVersion
的 16.8.0 版和controlPlaneAgentsVersion
的 1.5.0 版:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME namespace: NAMESPACE spec: databaseVersion: "16.8.0" controlPlaneAgentsVersion: "1.5.0" ...
請替換下列變數:
DB_CLUSTER_NAME
:資料庫叢集名稱。也就是您在建立資料庫叢集時宣告的名稱。 詳情請參閱「在 Kubernetes 上安裝 AlloyDB Omni」。NAMESPACE
:資料庫叢集的 Kubernetes 命名空間。
等待升級作業順利完成。
如果您在升級前停用了 HA,請完成下列步驟。
在叢集的資訊清單中,將
numberOfStandbys
設回升級前的數字。重新套用資訊清單,重新啟用高可用性。
更新「alloydb_omni_instance_postgresql_wait_time_second_total
」
如果您使用 alloydb_omni_instance_postgresql_wait_time_second_total
指標,請務必更新為 alloydb_omni_instance_postgresql_wait_time_us_total
。如要同時使用這兩項指標,請使用 Prometheus OR
運算子。
(promQL A) OR (promQL A, but replace all occurrences of alloydb_omni_instance_postgresql_wait_time_second_total to alloydb_omni_instance_postgresql_wait_time_us_total)
如果這項指標使用 seconds
做為單位,請務必轉換為 us
。
詳情請參閱版本資訊。