管理及監控 AlloyDB Omni

選取文件版本:

本頁面說明如何管理 AlloyDB Omni 使用者角色、監控 AlloyDB Omni 伺服器的活動,以及更新或移除 AlloyDB Omni 安裝項目。

管理使用者角色

AlloyDB Omni 使用與 AlloyDB 相同的預先定義 PostgreSQL 使用者角色集,但有以下差異:

  • AlloyDB Omni 沒有 alloydbiamuser 角色。

  • AlloyDB Omni 包含名為 alloydbadmin 的超級使用者角色。

與 AlloyDB 相同,設定資料庫時,建議遵循下列步驟:

  1. 使用 postgres 使用者角色定義或匯入資料庫。在新安裝作業中,這個角色具有資料庫建立和角色建立權限,且沒有密碼。

  2. 使用 postgres 使用者角色,建立具有應用程式表格適當存取層級的新使用者角色。

  3. 設定應用程式,使用這些新的有限存取權角色連線至資料庫。

您可以視需要建立及定義任意數量的新使用者角色。請勿修改或刪除 AlloyDB Omni 隨附的任何使用者角色。

詳情請參閱「管理 AlloyDB 使用者角色」。

監控 AlloyDB Omni

監控 AlloyDB Omni 安裝作業時,需要讀取及分析記錄檔。

在 Kubernetes 上執行的 AlloyDB Omni 也有一組基本指標,可做為 Prometheus 端點。如需可用指標清單,請參閱「AlloyDB Omni 指標」。

單一伺服器

AlloyDB Omni 會在兩個位置記錄活動:

  • AlloyDB Omni 會在 data/log/postgres 記錄資料庫活動,相對於您在 dataplane.conf 設定檔中定義的目錄。

    您可以透過 /var/alloydb/config/postgresql.conf 中定義的各種 log_* 指令,自訂這個記錄檔的名稱和格式。詳情請參閱「Error Reporting 和 Logging」。

  • AlloyDB Omni 會在 /var/alloydb/logs/alloydb.log 記錄安裝、啟動和關閉活動。

如要查看伺服器的即時執行狀態,請參閱「檢查 AlloyDB Omni 的狀態」。

Kubernetes

找出資料庫叢集記錄檔

您可以在資料庫 Pod 的檔案系統中找到 postgresql.auditpostgresql.log 檔案。如要存取這些檔案,請按照下列步驟操作:

  1. 定義包含資料庫 Pod 名稱的環境變數。

    export DB_POD=`kubectl get pod -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`

    請將 DB_CLUSTER_NAME 替換成資料庫叢集的名稱。也就是您建立資料庫叢集時宣告的名稱。

  2. 以根使用者身分在資料庫 Pod 上執行 Shell。

    kubectl exec ${DB_POD} -it -- /bin/bash
  3. /obs/diagnostic/ 目錄中找出記錄檔:

    • /obs/diagnostic/postgresql.audit
    • /obs/diagnostic/postgresql.log

列出監控服務

v1.0

建立資料庫叢集時,AlloyDB Omni 會在相同命名空間中,為資料庫叢集的每個執行個體 CR 建立下列監控服務:

al-INSTANCE_NAME-monitoring-system

如要列出監控服務,請執行下列指令。

kubectl get svc -n NAMESPACE | grep monitoring

NAMESPACE 替換為叢集所屬的命名空間。

以下範例回應顯示 al-1060-dbc-monitoring-systemal-3de6-dbc-monitoring-systemal-4bc0-dbc-monitoring-system 服務。每項服務對應一個執行個體。

al-1060-dbc-monitoring-system   ClusterIP   10.0.15.227   <none>        9187/TCP   7d20h
al-3de6-dbc-monitoring-system   ClusterIP   10.0.5.205    <none>        9187/TCP   7d19h
al-4bc0-dbc-monitoring-system   ClusterIP   10.0.15.92    <none>        9187/TCP   7d19h

1.0 以下版本

建立資料庫叢集時,AlloyDB Omni 會在與資料庫叢集相同的命名空間中,建立下列監控服務:

  • DB_CLUSTER-monitoring-db

  • DB_CLUSTER-monitoring-system

如要列出監控服務,請執行下列指令。

kubectl get svc -n NAMESPACE | grep monitoring

NAMESPACE 替換為叢集所屬的命名空間。

以下範例回應顯示 al-2953-dbcluster-foo7-monitoring-systemal-2953-dbcluster-foo7-monitoring-db 服務。

al-2953-dbcluster-foo7-monitoring-db           ClusterIP   10.36.3.243    <none>        9187/TCP   44m
al-2953-dbcluster-foo7-monitoring-system       ClusterIP   10.36.7.72     <none>        9187/TCP   44m

透過指令列查看 Prometheus 指標

所有監控服務的通訊埠 9187 都命名為 metricsalloydbomni

  1. 設定從本機環境到監控服務的通訊埠轉送。

    kubectl port-forward service/MONITORING_SERVICE -n NAMESPACE MONITORING_METRICS_PORT:metricsalloydbomni
    

    更改下列內容:

    • MONITORING_SERVICE:要轉送的監控服務名稱,例如 al-1060-dbc-monitoring-system

    • NAMESPACE:叢集所屬的命名空間。

    • MONITORING_METRICS_PORT:本機可用的 TCP 通訊埠。

    下列回應顯示服務正在轉送。

    Forwarding from 127.0.0.1:9187 -> 9187
    Forwarding from [::1]:9187 -> 9187
    
  2. 執行上一個指令時,您可以在指定的通訊埠上透過 HTTP 存取監控指標。舉例來說,您可以使用 curl 以純文字格式查看所有指標:

    curl http://localhost:MONITORING_METRICS_PORT/metrics
    

使用 Prometheus API 查看指標

alloydbomni.internal.dbadmin.goog/task-type 標籤鍵和 metricsalloydbomni 連接埠預設適用於 AlloyDB Omni 中的所有監控服務。您可以將這些資源與單一 ServiceMonitor 自訂資源搭配使用,為資料庫叢集中的所有命名空間選取所有服務。

如要進一步瞭解如何使用 Prometheus API,請參閱 Prometheus Operator 說明文件

以下是 ServiceMonitor 自訂資源的 spec 欄位範例,當中包含 alloydbomni.internal.dbadmin.gdc.goog/task-type 標籤鍵和 metricsalloydbomni 連接埠。ServiceMonitor 自訂資源會監控及收集所有命名空間中的所有 Kubernetes 服務,

如要進一步瞭解完整的 ServiceMonitor 定義,請參閱 ServiceMonitor 自訂資源定義

v1.0

    spec:
      selector:
        matchLabels:
          alloydbomni.internal.dbadmin.goog/task-type: monitoring
      namespaceSelector:
        any: true
      endpoints:
        - port: metricsalloydbomni

1.0 以下版本

    spec:
      selector:
        matchExpressions:
        - key: alloydbomni.internal.dbadmin.gdc.goog/task-type
          operator: Exists
          values: []
      namespaceSelector:
        any: true
      endpoints:
      - port: metricsalloydbomni

升級 AlloyDB Omni

單一伺服器

這些操作說明僅適用於 AlloyDB Omni 15.2.0 以上版本。

事前準備

您的電腦必須安裝 AlloyDB Omni CLI 1.2 以上版本。

執行升級

如要升級 AlloyDB Omni 安裝作業,請執行下列指令:

sudo alloydb database-server upgrade

Kubernetes

在 Kubernetes 中升級 AlloyDB Omni 的步驟,取決於您執行的 AlloyDB Omni 版本,以及要升級的版本。

找出目前的版本號碼

如要查看資料庫叢集使用的 AlloyDB Omni 版本,請執行下列指令:

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.currentDatabaseVersion}'

更改下列內容:

  • DB_CLUSTER_NAME:資料庫叢集名稱。也就是您建立資料庫叢集時宣告的名稱。

  • NAMESPACE:資料庫叢集的 Kubernetes 命名空間。

如果您執行的是 AlloyDB Omni 運算子 1.0.0 以上版本,這項指令會列印資料庫叢集使用的 AlloyDB Omni 版本。

如要查看 Kubernetes 叢集上安裝的 AlloyDB Omni Operator 版本,請執行下列指令:

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,就無法對資料庫叢集或 AlloyDB Omni 運算子執行就地升級。請改為按照「從 1.0.0 之前的 AlloyDB Omni Operator 升級」一文中的操作說明進行。

如果仍無法解決問題,請參閱下節說明。

決定目標版本號碼

如果您執行的是 AlloyDB Omni Operator 1.0.0 以上版本,接下來的步驟取決於要升級的 AlloyDB Omni 版本。因此,您必須瞭解 AlloyDB Omni 版本號碼。

AlloyDB Omni 版本號碼包含三個部分:

  • PostgreSQL 相容性的主要版本號碼
  • PostgreSQL 相容性的次要版本號碼
  • 這個 AlloyDB Omni 版本的修補程式版本號碼

舉例來說,AlloyDB Omni 15.5.2 版是支援 PostgreSQL 15.5 版的 AlloyDB Omni 修補程式版本 2。

如要升級至支援較新 PostgreSQL 版本的 AlloyDB Omni 版本,您必須一併升級資料庫叢集和 AlloyDB Omni Operator。支援特定 PostgreSQL 次要版本的每組 AlloyDB Omni 版本,都有相關聯的 AlloyDB Omni Operator 版本號碼,您可以在 AlloyDB Omni 版本的發行說明中找到。

如要升級至較新的 AlloyDB Omni 修補程式版本,可以只升級資料庫叢集,不必升級 AlloyDB Omni 運算子本身。您可以跳至「升級資料庫叢集」中的操作說明。

如果仍無法解決問題,請參閱下節說明。

升級 AlloyDB Omni 運算子

如要升級 AlloyDB Omni 運算子,請按照下列步驟操作:

  1. 定義必要的環境變數:

    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 Operator 版本,例如 1.1.0

  2. 下載較新的 AlloyDB Omni 運算子:

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
    tar -xvzf alloydbomni-operator-${OPERATOR_VERSION}.tgz
  3. 套用較新的 AlloyDB Omni 運算子自訂資源定義:

    kubectl apply -f alloydbomni-operator/crds
  4. 升級 AlloyDB Omni 運算子 Helm 圖表:

    helm upgrade alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

如要升級 Kubernetes 資訊清單和資料庫叢集,以完成 AlloyDB Omni Operator 升級,請在完成上述步驟後,立即按照下一節的說明操作。

升級資料庫叢集

如要升級資料庫叢集,請更新定義叢集的資訊清單 spec 區段中的下列欄位:

  • databaseVersion 設為要升級這個資料庫叢集的 AlloyDB Omni 完整版本號碼。

  • 如果您也升級了 AlloyDB Omni 運算子,請將 controlPlaneAgentsVersion 設為您升級的 AlloyDB Omni 運算子完整版本號碼。

如果您只升級 AlloyDB Omni 的修補程式版本 (例如從 15.5.1 更新至 15.5.2),則只需完成這個步驟。databaseVersion

如果您要升級 PostgreSQL 相容性的次要版本 (例如將 databaseVersion15.4.1 更新為 15.5.2),則也必須更新 controlPlaneAgentsVersion。在這種情況下,請務必按照「升級 AlloyDB Omni 運算子」一文列出的額外步驟操作。

舉例來說,以下資訊清單摘錄定義了執行 AlloyDB Omni 運算子版本 15.5.2 的資料庫叢集,AlloyDB Omni 運算子版本為 1.0.0

apiVersion: alloydbomni.dbadmin.goog/v1 
kind: DBCluster
metadata:
  name: dbcluster-sample
spec:
  databaseVersion: 15.5.2
  controlPlaneAgentsVersion: 1.0.0

在本範例中,如要升級資料庫叢集以執行 AlloyDB Omni 版本 15.5.3,請將 databaseVersion: 15.5.2 變更為 databaseVersion: 15.5.3

從 1.0.0 之前的 AlloyDB Omni 運算子升級

如果您執行的 AlloyDB Omni 運算子版本早於 1.0.0,則升級 Kubernetes 型 AlloyDB Omni 安裝作業時,必須先備份資料,然後解除安裝並重新安裝 AlloyDB Omni 運算子。步驟如下:

  1. 列出所有資料庫叢集:

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  2. 針對每個資料庫叢集,使用 pg_dumpall 指令匯出所有資料。

  3. 解除安裝 AlloyDB Omni 運算子。包括刪除所有資料庫叢集。

  4. 重新安裝 AlloyDB Omni 運算子。您可以使用安裝舊版 AlloyDB Omni Operator 時所用的相同指令,不必指定新的版本號碼。

  5. 重新建立資料庫叢集。您可以沿用先前建立資料庫叢集時使用的相同資訊清單檔案。您可能需要更新檔案,以反映 AlloyDB Omni Operator 1.0.0 版導入的 API 變更,例如取代舊版 version 屬性的 databaseVersion 屬性。

  6. 使用 pg_restorepsql 中的 \i 指令,將先前匯出的資料匯入重新建立的叢集。

復原升級

這些操作說明僅適用於 AlloyDB Omni 15.2.1 至 15.5.2 版。不適用於以 Kubernetes 為基礎的 AlloyDB Omni 部署作業。

如要將 AlloyDB Omni 復原至先前安裝的版本,請執行下列指令:

sudo alloydb database-server rollback

解除安裝 AlloyDB Omni

單一伺服器

如要解除安裝 AlloyDB Omni,請執行下列指令:

sudo alloydb database-server uninstall

解除安裝 AlloyDB Omni 後,資料目錄仍會保留在檔案系統中。您可以視是否要保留資料,以及保留方式,在解除安裝 AlloyDB Omni 後移動、封存或刪除這個目錄。

Kubernetes

刪除資料庫叢集

如要刪除資料庫叢集,請在資訊清單中將 isDeleted 設為 true。 您可以使用下列指令完成這項操作。

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"isDeleted":true}}' --type=merge

請將 DB_CLUSTER_NAME 替換為資料庫叢集名稱。也就是您建立資料庫叢集時宣告的名稱。

解除安裝 AlloyDB Omni 運算子

如要從 Kubernetes 叢集解除安裝 AlloyDB Omni Kubernetes 運算子,請按照下列步驟操作:

  1. 刪除所有資料庫叢集:

    for ns in $(kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.namespace}{"\n"}{end}'); do
    for cr in $(kubectl get dbclusters.alloydbomni.dbadmin.goog -n $ns -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
    kubectl patch dbclusters.alloydbomni.dbadmin.goog $cr -n $ns --type=merge -p '{"spec":{"isDeleted":true}}'
    done
    done
  2. 等待 AlloyDB Omni Kubernetes 運算子刪除所有資料庫叢集。 使用下列指令檢查是否還有任何資料庫資源:

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  3. 刪除 AlloyDB Omni Kubernetes 運算子建立的其他資源:

    kubectl delete failovers.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete restores.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete switchovers.alloydbomni.dbadmin.goog --all --all-namespaces
  4. 解除安裝 AlloyDB Omni Kubernetes 運算子:

    helm uninstall alloydbomni-operator --namespace alloydb-omni-system
  5. 清除與 AlloyDB Omni Kubernetes 運算子相關的密鑰、自訂資源說明和命名空間:

    kubectl delete certificate -n alloydb-omni-system --all
    kubectl get secrets --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,ANNOTATION:.metadata.annotations.cert-manager\.io/issuer-name | grep -E 'alloydbomni|dbs-al' | awk '{print $1 " " $2}' | xargs -n 2 kubectl delete secret -n
    kubectl delete crd -l alloydb-omni=true
    kubectl delete ns alloydb-omni-system

調整 Kubernetes 型資料庫叢集的大小

如要調整 Kubernetes 型資料庫叢集的 CPU、記憶體或儲存空間大小,請更新定義 Pod 的資訊清單 resources 欄位。AlloyDB Omni 運算子會立即將新規格套用至資料庫 Pod。

如要進一步瞭解 AlloyDB Omni 運算子資訊清單語法,請參閱「建立資料庫叢集」。

修改執行中資料庫叢集資源時,須遵守下列限制:

  • 只有在指定的 storageClass 支援擴充磁碟區時,您才能增加磁碟大小。
  • 無法縮減磁碟大小。