管理使用者角色
AlloyDB Omni 使用與 AlloyDB 相同的預先定義 PostgreSQL 使用者角色集,但有以下差異:
AlloyDB Omni 沒有
alloydbiamuser
角色。AlloyDB Omni 包含名為
alloydbadmin
的超級使用者角色。
與 AlloyDB 相同,設定資料庫時,建議遵循下列步驟:
使用
postgres
使用者角色定義或匯入資料庫。在新安裝作業中,這個角色具有資料庫建立和角色建立權限,且沒有密碼。使用
postgres
使用者角色,建立具有應用程式表格適當存取層級的新使用者角色。設定應用程式,使用這些新的有限存取權角色連線至資料庫。
您可以視需要建立及定義任意數量的新使用者角色。請勿修改或刪除 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.audit
和 postgresql.log
檔案。如要存取這些檔案,請按照下列步驟操作:
定義包含資料庫 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
替換成資料庫叢集的名稱。也就是您建立資料庫叢集時宣告的名稱。以根使用者身分在資料庫 Pod 上執行 Shell。
kubectl exec ${DB_POD} -it -- /bin/bash
在
/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-system
、al-3de6-dbc-monitoring-system
和 al-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-system
和 al-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
。
設定從本機環境到監控服務的通訊埠轉送。
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
執行上一個指令時,您可以在指定的通訊埠上透過 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 運算子,請按照下列步驟操作:
定義必要的環境變數:
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
。下載較新的 AlloyDB Omni 運算子:
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
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
如要升級 Kubernetes 資訊清單和資料庫叢集,以完成 AlloyDB Omni Operator 升級,請在完成上述步驟後,立即按照下一節的說明操作。
升級資料庫叢集
如要升級資料庫叢集,請更新定義叢集的資訊清單 spec
區段中的下列欄位:
將
databaseVersion
設為要升級這個資料庫叢集的 AlloyDB Omni 完整版本號碼。如果您也升級了 AlloyDB Omni 運算子,請將
controlPlaneAgentsVersion
設為您升級的 AlloyDB Omni 運算子完整版本號碼。
如果您只升級 AlloyDB Omni 的修補程式版本 (例如從 15.5.1
更新至 15.5.2
),則只需完成這個步驟。databaseVersion
如果您要升級 PostgreSQL 相容性的次要版本 (例如將 databaseVersion
從 15.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 運算子。步驟如下:
列出所有資料庫叢集:
kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
針對每個資料庫叢集,使用
pg_dumpall
指令匯出所有資料。解除安裝 AlloyDB Omni 運算子。包括刪除所有資料庫叢集。
重新安裝 AlloyDB Omni 運算子。您可以使用安裝舊版 AlloyDB Omni Operator 時所用的相同指令,不必指定新的版本號碼。
重新建立資料庫叢集。您可以沿用先前建立資料庫叢集時使用的相同資訊清單檔案。您可能需要更新檔案,以反映 AlloyDB Omni Operator 1.0.0 版導入的 API 變更,例如取代舊版
version
屬性的databaseVersion
屬性。使用
pg_restore
或psql
中的\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 運算子,請按照下列步驟操作:
刪除所有資料庫叢集:
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
等待 AlloyDB Omni Kubernetes 運算子刪除所有資料庫叢集。 使用下列指令檢查是否還有任何資料庫資源:
kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
刪除 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
解除安裝 AlloyDB Omni Kubernetes 運算子:
helm uninstall alloydbomni-operator --namespace alloydb-omni-system
清除與 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
支援擴充磁碟區時,您才能增加磁碟大小。 - 無法縮減磁碟大小。