本页介绍了如何管理 AlloyDB Omni 用户角色、监控 AlloyDB Omni 服务器的活动,以及更新或移除 AlloyDB Omni 安装。
管理用户角色
AlloyDB Omni 使用与 AlloyDB 包含的一组预定义 PostgreSQL 用户角色,但存在以下差异:
AlloyDB Omni 包含一个名为
alloydbadmin
的超级用户角色,以及一个名为alloydbmetadata
的非超级用户角色。默认
postgres
用户具有超级用户角色。所有其他预定义用户角色都没有权限。这些字段预留以供将来可能的使用。
与 AlloyDB 一样,在设置数据库时,最佳实践是遵循以下步骤:
使用
postgres
用户角色定义或导入数据库。在全新安装时,此角色具有超级用户权限,且无需密码。再次使用
postgres
用户角色,创建对应用表具有正确访问权限级别的新用户角色。配置您的应用以使用这些新的受限访问权限角色连接到数据库。
您可以根据需要创建和定义任意数量的新用户角色。请勿修改或删除 AlloyDB Omni 随附的任何用户角色。
如需了解详情,请参阅管理 AlloyDB 用户角色。
监控 AlloyDB Omni
监控 AlloyDB Omni 安装意味着读取和分析其日志文件。
在 Kubernetes 上运行的 AlloyDB Omni 还提供了一组可用作 Prometheus 端点的基本指标。如需查看可用指标的列表,请参阅 AlloyDB Omni 指标。
单服务器
默认情况下,如需检索 AlloyDB Omni 日志,请运行以下命令:
Docker
docker logs CONTAINER_NAME
将 CONTAINER_NAME
替换为您的 AlloyDB Omni 容器的名称。
如需配置 AlloyDB Omni 的日志记录行为,请参阅自定义 AlloyDB Omni 安装。
Podman
podman logs CONTAINER_NAME
将 CONTAINER_NAME
替换为您的 AlloyDB Omni 容器的名称。
如需配置 AlloyDB Omni 的日志记录行为,请参阅自定义 AlloyDB Omni 安装。
Podman
podman logs CONTAINER_NAME
将 CONTAINER_NAME
替换为您的 AlloyDB Omni 容器的名称。
如需配置 AlloyDB Omni 的日志记录行为,请参阅自定义 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.5.2 或更低版本升级到 15.5.4,请按照从较低版本的 AlloyDB Omni 迁移到最新版本中的说明操作。
如需从 15.5.4 及更高版本升级,请执行以下操作:
使用新映像版本重启 AlloyDB Omni。
请务必指定的数据目录与早期版本的 AlloyDB Omni 中使用的路径一致。
卸载 AlloyDB Omni
单服务器
如需卸载 AlloyDB Omni,请使用以下命令停止并删除 AlloyDB Omni 容器:
Docker
docker container stop CONTAINER_NAME
docker container rm CONTAINER_NAME
将 CONTAINER_NAME
替换为您的 AlloyDB Omni 容器的名称。
Podman
podman container stop CONTAINER_NAME
podman container rm CONTAINER_NAME
将 CONTAINER_NAME
替换为您的 AlloyDB Omni 容器的名称。
Podman
podman container stop CONTAINER_NAME
podman container rm CONTAINER_NAME
将 CONTAINER_NAME
替换为您的 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 操作器删除您的所有数据库集群。 使用以下命令检查是否仍有数据库资源:
kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
删除 AlloyDB Omni Kubernetes operator 创建的其他资源:
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 operator:
helm uninstall alloydbomni-operator --namespace alloydb-omni-system
清理与 AlloyDB Omni Kubernetes operator 相关的 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 operator 会立即将新规范应用于您的数据库 pod。
如需详细了解 AlloyDB Omni 操作符清单语法,请参阅创建数据库集群。
修改正在运行的数据库集群的资源时,存在以下限制:
- 只有在指定的
storageClass
支持卷扩展时,您才能增加磁盘的大小。 - 您不能减少磁盘的大小。