管理用户角色
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 上运行 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 操作器版本,请运行以下命令:
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 操作器执行就地升级。您必须改为按照从 AlloyDB Omni 操作器 1.0.0 版之前进行升级中的说明操作。
否则,请继续下一部分。
确定目标版本号
如果您运行的是 AlloyDB Omni 操作器 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 操作器本身与您的数据库集群一起升级。每组支持特定 PostgreSQL 次要版本的 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.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 操作器,请在完成上述步骤后立即按照下一部分中的说明操作。
升级数据库集群
如需升级数据库集群,请更新定义该集群的清单的 spec
部分中的以下字段:
将
databaseVersion
设置为您要将此数据库集群升级到的 AlloyDB Omni 的完整版本号。如果您还升级了 AlloyDB Omni 操作器,请将
controlPlaneAgentsVersion
设置为您升级到的 AlloyDB Omni 操作器的完整版本号。
如果您只是升级 AlloyDB Omni 的补丁版本(例如,将 databaseVersion
从 15.5.1
更新到 15.5.2
),则只需完成此步骤。
如果您要升级 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
。
从 AlloyDB Omni 操作器 1.0.0 版之前进行升级
如果您运行的 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 操作器旧版本的相同命令,而无需指定新的版本号。
重新创建数据库集群。您可以沿用之前创建数据库集群时使用的相同清单文件。不过,您可能需要更新文件,以反映 AlloyDB Omni 操作器 1.0.0 版引入的 API 更改,例如
databaseVersion
属性取代了旧的version
属性。使用
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 操作器相关的 Secret、自定义资源说明和命名空间:
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
支持卷扩展时,您才能增加磁盘的大小。 - 您无法减少磁盘的大小。