管理用户角色
AlloyDB Omni 使用 AlloyDB 所包含的同一组预定义 PostgreSQL 用户角色,但存在以下差异:
- AlloyDB Omni 包含一个名为 - alloydbadmin的超级用户角色和一个名为- alloydbmetadata的非超级用户角色。
- 默认的 - postgres用户具有超级用户角色。
- 所有其他预定义用户角色都没有权限。这些用户角色是为用于将来的可能用途而预留的。 
与 AlloyDB 一样,在设置数据库时,最佳实践是遵循以下步骤:
- 使用 - postgres用户角色定义或导入数据库。在新的安装中,此角色具有超级用户权限,并且不需要密码。
- 再次使用 - postgres用户角色,创建对应用的表具有正确访问权限级别的新用户角色。
- 将应用配置为使用这些访问权限受限的新角色连接到数据库。 
您可以根据需要创建和定义任意数量的新用户角色。请勿修改或删除 AlloyDB Omni 随附的任何用户角色。
如需了解详情,请参阅管理 AlloyDB 用户角色。
监控 AlloyDB Omni
监控 AlloyDB Omni 安装包括读取和分析 AlloyDB Omni 日志文件。
在 Kubernetes 上运行的 AlloyDB Omni 提供了一组可用作 Prometheus 端点的基本指标。如需查看可用指标的列表,请参阅 AlloyDB Omni 指标。
此外,在 Kubernetes 上运行的 AlloyDB Omni 会利用 kube-state-metrics (KSM) 从自定义资源公开指标。如需启用自定义资源指标,请参阅监控 AlloyDB Omni Kubernetes operator 自定义资源。
单个服务器
默认情况下,如需检索 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
查找数据库集群日志文件
postgresql.audit 和 postgresql.log 文件位于数据库 Pod 的文件系统中。仅当您启用了 pgaudit 时才会提供 postgresql.audit。
如需访问这些文件,请按照以下步骤操作:
- 定义一个包含数据库 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 operator 删除您的所有数据库集群。使用以下命令可检查是否有任何数据库资源保留: - 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 operator 清单语法,请参阅创建数据库集群。
修改正在运行的数据库集群的资源时,需要遵守以下限制:
- 仅当指定的 storageClass支持卷扩展时,您才能增加磁盘的大小。
- 您无法减少磁盘的大小。