管理使用者角色
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替換為資料庫叢集名稱。這與您建立資料庫叢集時宣告的名稱相同。以 root 身分在資料庫 Pod 上執行殼層。
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-dbDB_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 查看指標
AlloyDB Omni 的所有監控服務預設提供 alloydbomni.internal.dbadmin.goog/task-type 標籤鍵和 metricsalloydbomni 通訊埠。您可以搭配使用這些資源與單一 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 以上版本。
事前準備
機器必須安裝 1.2 以上版本的 AlloyDB Omni CLI。
執行升級作業
如要升級 AlloyDB Omni 安裝版本,請執行下列指令:
sudo alloydb database-server upgradeKubernetes
在 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 Operator 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 Operator 1.0.0 版或更新版本,這項指令會列印 Kubernetes 叢集上執行的 AlloyDB Omni Operator 版本號碼。
如果您執行的 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 版是 AlloyDB Omni 的修補程式版本 2,支援 PostgreSQL 15.5 版。
如要升級至支援較新 PostgreSQL 版本的 AlloyDB Omni 版本,您必須一併升級 AlloyDB Omni Operator 和資料庫叢集。每組支援特定 PostgreSQL 子版本的 AlloyDB Omni 版本,都有專屬的 AlloyDB Omni Operator 版本編號,請參閱 AlloyDB Omni 版本的版本資訊。
如果只想升級至較新的 AlloyDB Omni 修補程式版本,則只需升級資料庫叢集,不必升級 AlloyDB Omni Operator。您可以跳到「升級資料庫叢集」的操作說明。
如果沒有,請繼續閱讀下一節。
升級 AlloyDB Omni Operator
如要升級 AlloyDB Omni Operator,請按照下列步驟操作:
定義必要的環境變數:
export GCS_BUCKET=alloydb-omni-operatorexport OPERATOR_VERSION=OPERATOR_VERSIONexport HELM_PATH=$OPERATOR_VERSION/alloydbomni-operator-$OPERATOR_VERSION.tgz將
OPERATOR_VERSION替換為要升級的 AlloyDB Omni Operator 版本,例如1.1.0。下載較新的 AlloyDB Omni Operator:
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursivetar -xvzf alloydbomni-operator-${OPERATOR_VERSION}.tgz套用較新的 AlloyDB Omni Operator 自訂資源定義:
kubectl apply -f alloydbomni-operator/crds升級 AlloyDB Omni Operator 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 Operator」一文列出的額外步驟操作。
舉例來說,下列資訊清單摘錄定義了執行 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 Operator 版本升級
如果您執行的 AlloyDB Omni Operator 版本低於 1.0.0,則升級 Kubernetes 型 AlloyDB Omni 安裝作業時,必須先備份資料,然後解除安裝並重新安裝 AlloyDB Omni Operator。步驟如下:
列出所有資料庫叢集:
kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces針對每個資料庫叢集,使用
pg_dumpall指令匯出所有資料。解除安裝 AlloyDB Omni Operator。包括刪除所有資料庫叢集。
重新安裝 AlloyDB Omni Operator。您可以使用與安裝舊版 AlloyDB Omni Operator 時相同的指令,不必指定新版本號碼。
重新建立資料庫叢集。您可以調整先前建立資料庫叢集時使用的資訊清單檔案。您可能需要更新檔案,反映 AlloyDB Omni Operator 1.0.0 版導入的 API 變更,例如以
databaseVersion屬性取代舊的version屬性。使用
pg_restore或psql中的\i指令,將先前匯出的資料匯入重新建立的叢集。
復原升級
這些操作說明僅適用於 AlloyDB Omni 15.2.1 至 15.5.2 版。不適用於 AlloyDB Omni 的 Kubernetes 部署作業。
如要將 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 Operator
如要從 Kubernetes 叢集解除安裝 AlloyDB Omni Kubernetes Operator,請按照下列步驟操作:
刪除所有資料庫叢集:
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 Operator 刪除所有資料庫叢集。使用下列指令,檢查是否還有任何資料庫資源:
kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces刪除 AlloyDB Omni Kubernetes 運算子建立的其他資源:
kubectl delete failovers.alloydbomni.dbadmin.goog --all --all-namespaceskubectl delete restores.alloydbomni.dbadmin.goog --all --all-namespaceskubectl delete switchovers.alloydbomni.dbadmin.goog --all --all-namespaces解除安裝 AlloyDB Omni Kubernetes Operator:
helm uninstall alloydbomni-operator --namespace alloydb-omni-system清除與 AlloyDB Omni Kubernetes 運算子相關的密鑰、自訂資源說明和命名空間:
kubectl delete certificate -n alloydb-omni-system --allkubectl 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 -nkubectl delete crd -l alloydb-omni=truekubectl delete ns alloydb-omni-system
調整 Kubernetes 資料庫叢集的大小
如要調整 Kubernetes 資料庫叢集的 CPU、記憶體或儲存空間大小,請更新定義 Pod 的資訊清單 resources 欄位。AlloyDB Omni Operator 會立即將新規格套用至資料庫 Pod。
如要進一步瞭解 AlloyDB Omni Operator 資訊清單語法,請參閱「建立資料庫叢集」。
修改執行中資料庫叢集資源時,須遵守下列限制:
- 只有在指定的
storageClass支援磁碟區擴充時,才能增加磁碟大小。 - 您無法縮減磁碟大小。