本页介绍了如何管理 AlloyDB Omni 用户角色、监控 AlloyDB Omni 服务器的活动,以及更新或移除 AlloyDB Omni 安装。
管理用户角色
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_*
指令来自定义此日志文件的名称和格式。如需了解详情,请参阅错误报告和日志记录。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 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 Operator 版本低于 1.0.0,则无法对数据库集群或 AlloyDB Omni Operator 执行就地升级。您必须按照从 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 Operator 本身。您可以跳至升级数据库集群中的说明。
否则,请继续下一部分。
升级 AlloyDB Omni Operator
如需升级 AlloyDB Omni Operator,请执行以下操作:
定义必要的环境变量:
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 Operator:
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
tar -xvzf alloydbomni-operator-${OPERATOR_VERSION}.tgz
应用较新的 AlloyDB Omni Operator 自定义资源定义:
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 Operator,请将
controlPlaneAgentsVersion
设置为您升级的 AlloyDB Omni Operator 的完整版本号。
如果您仅升级 AlloyDB Omni 的补丁版本(例如,将 databaseVersion
从 15.5.1
更新为 15.5.2
),则只需完成此步骤即可。
如果您要升级 PostgreSQL 兼容性的次要版本(例如,将 databaseVersion
从 15.4.1
更新为 15.5.2
),则还必须更新 controlPlaneAgentsVersion
。在这种情况下,请确保您已按照升级 AlloyDB Omni Operator 中列出的额外步骤操作。
例如,以下清单摘录定义了一个运行 AlloyDB Omni Operator 版本 15.5.2
且具有 AlloyDB Omni Operator 版本 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 运算符 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 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
支持卷扩展时,您才能增加磁盘的大小。 - 您不能减少磁盘的大小。