Administra y supervisa AlloyDB Omni

En esta página, se describe cómo administrar los roles de usuario de AlloyDB Omni, supervisar la actividad de tu servidor de AlloyDB Omni y actualizar o quitar tu instalación de AlloyDB Omni.

Administra los roles de los usuarios

AlloyDB Omni usa el mismo conjunto de roles de usuario predefinidos de PostgreSQL que incluye AlloyDB, con las siguientes diferencias:

  • AlloyDB Omni no tiene un rol alloydbiamuser.

  • AlloyDB Omni incluye un rol de superusuario llamado alloydbadmin.

Al igual que con AlloyDB, se recomienda seguir estos pasos cuando configures una base de datos:

  1. Define o importa tus bases de datos con el rol de usuario postgres. En una instalación nueva, este rol tiene privilegios de creación de bases de datos y roles, y no tiene contraseña.

  2. Crea roles de usuario nuevos que tengan el nivel de acceso correcto a las tablas de tu aplicación, nuevamente con el rol de usuario postgres.

  3. Configura tu aplicación para que se conecte a la base de datos con estos nuevos roles de acceso limitado.

Puedes crear y definir tantos roles de usuario nuevos como necesites. No modifiques ni borras ninguno de los roles de usuario con los que se envía AlloyDB Omni.

Para obtener más información, consulta Administra los roles de usuario de AlloyDB.

Supervisa AlloyDB Omni

Supervisar tu instalación de AlloyDB Omni significa leer y analizar sus archivos de registro.

AlloyDB Omni que se ejecuta en Kubernetes también tiene un conjunto de métricas básicas disponibles como extremos de Prometheus. Para obtener una lista de las métricas disponibles, consulta Métricas de AlloyDB Omni.

Servidor único

AlloyDB Omni registra su actividad en dos ubicaciones:

  • AlloyDB Omni registra la actividad de la base de datos en data/log/postgres, en relación con el directorio que definiste en tu archivo de configuración dataplane.conf.

    Puedes personalizar el nombre y el formato de este archivo de registro a través de las diversas directivas log_* definidas en /var/alloydb/config/postgresql.conf. Para obtener más información, consulta Registro y generación de informes de errores.

  • AlloyDB Omni registra su actividad de instalación, inicio y apagado en /var/alloydb/logs/alloydb.log.

Para verificar el estado de ejecución inmediato de tu servidor, consulta Cómo verificar el estado de AlloyDB Omni.

Kubernetes

Cómo encontrar los archivos de registro de tu clúster de base de datos

Puedes encontrar los archivos postgresql.audit y postgresql.log en el sistema de archivos del pod de la base de datos. Para acceder a estos archivos, sigue estos pasos:

  1. Define una variable de entorno que contenga el nombre del pod de la base de datos.

    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}'`

    Reemplaza DB_CLUSTER_NAME por el nombre del clúster de la base de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.

  2. Ejecuta una shell en el pod de la base de datos como root.

    kubectl exec ${DB_POD} -it -- /bin/bash
  3. Busca los archivos de registro en el directorio /obs/diagnostic/:

    • /obs/diagnostic/postgresql.audit
    • /obs/diagnostic/postgresql.log

Enumera los servicios de supervisión

v1.0

Cuando creas un clúster de bases de datos, AlloyDB Omni crea el siguiente servicio de supervisión para cada CR de instancia del clúster de bases de datos en el mismo espacio de nombres:

al-INSTANCE_NAME-monitoring-system

Para enumerar los servicios de supervisión, ejecuta el siguiente comando.

kubectl get svc -n NAMESPACE | grep monitoring

Reemplaza NAMESPACE por un espacio de nombres al que pertenezca tu clúster.

En la siguiente respuesta de ejemplo, se muestran los servicios al-1060-dbc-monitoring-system, al-3de6-dbc-monitoring-system y al-4bc0-dbc-monitoring-system. Cada servicio corresponde a una instancia.

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

Versión anterior a la 1.0

Cuando creas un clúster de bases de datos, AlloyDB Omni crea los siguientes servicios de supervisión en el mismo espacio de nombres que el clúster de bases de datos:

  • DB_CLUSTER-monitoring-db

  • DB_CLUSTER-monitoring-system

Para enumerar los servicios de supervisión, ejecuta el siguiente comando.

kubectl get svc -n NAMESPACE | grep monitoring

Reemplaza NAMESPACE por un espacio de nombres al que pertenezca tu clúster.

En la siguiente respuesta de ejemplo, se muestran los servicios al-2953-dbcluster-foo7-monitoring-system y 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

Visualiza las métricas de Prometheus desde la línea de comandos

El puerto 9187 se denomina metricsalloydbomni para todos los servicios de supervisión.

  1. Configura la redirección de puertos desde tu entorno local al servicio de supervisión.

    kubectl port-forward service/MONITORING_SERVICE -n NAMESPACE MONITORING_METRICS_PORT:metricsalloydbomni
    

    Reemplaza lo siguiente:

    • MONITORING_SERVICE: Es el nombre del servicio de supervisión que deseas reenviar, por ejemplo, al-1060-dbc-monitoring-system.

    • NAMESPACE: Es el espacio de nombres al que pertenece tu clúster.

    • MONITORING_METRICS_PORT: Un puerto TCP local disponible.

    La siguiente respuesta muestra que los servicios se reenvían.

    Forwarding from 127.0.0.1:9187 -> 9187
    Forwarding from [::1]:9187 -> 9187
    
  2. Mientras se ejecuta el comando anterior, puedes acceder a las métricas de supervisión a través de HTTP en el puerto que especificaste. Por ejemplo, puedes usar curl para ver todas las métricas como texto sin formato:

    curl http://localhost:MONITORING_METRICS_PORT/metrics
    

Visualiza métricas con la API de Prometheus

La clave de etiqueta alloydbomni.internal.dbadmin.goog/task-type y el puerto metricsalloydbomni están disponibles de forma predeterminada para todos los servicios de supervisión en AlloyDB Omni. Puedes usarlos junto con un solo recurso personalizado serviceMonitor para seleccionar todos los servicios de todos los espacios de nombres en tu clúster de bases de datos.

Para obtener más información sobre el uso de la API de Prometheus, consulta la documentación del operador de Prometheus.

El siguiente es un ejemplo de campo spec del recurso personalizado serviceMonitor que incluye la clave de etiqueta alloydbomni.internal.dbadmin.gdc.goog/task-type y el puerto metricsalloydbomni. El recurso personalizado serviceMonitor supervisa y recopila todos los servicios de Kubernetes en todos los espacios de nombres.

Para obtener más información sobre la definición completa de ServiceMonitor, consulta la definición del recurso personalizado ServiceMonitor .

v1.0

    spec:
      selector:
        matchLabels:
          alloydbomni.internal.dbadmin.goog/task-type: monitoring
      namespaceSelector:
        any: true
      endpoints:
        - port: metricsalloydbomni

Versión anterior a la 1.0

    spec:
      selector:
        matchExpressions:
        - key: alloydbomni.internal.dbadmin.gdc.goog/task-type
          operator: Exists
          values: []
      namespaceSelector:
        any: true
      endpoints:
      - port: metricsalloydbomni

Actualiza AlloyDB Omni

Servidor único

Estas instrucciones solo se aplican a la versión 15.2.0 y posteriores de AlloyDB Omni.

Antes de comenzar

Tu máquina debe tener instalada la versión 1.2 o posterior de la CLI de AlloyDB Omni.

Realiza la actualización

Para actualizar tu instalación de AlloyDB Omni, ejecuta el siguiente comando:

sudo alloydb database-server upgrade

Kubernetes

Los pasos que debes seguir para actualizar AlloyDB Omni en Kubernetes dependen de la versión de AlloyDB Omni que ejecutas y de la versión a la que te actualizas.

Determina los números de versión actuales

Para verificar la versión de AlloyDB Omni que usa tu clúster de bases de datos, ejecuta este comando:

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.currentDatabaseVersion}'

Reemplaza lo siguiente:

  • DB_CLUSTER_NAME: Es el nombre del clúster de tu base de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.

  • NAMESPACE: El espacio de nombres de Kubernetes de tu clúster de bases de datos.

Si ejecutas la versión 1.0.0 o una posterior del operador de AlloyDB Omni, este comando imprime la versión de AlloyDB Omni que usa tu clúster de bases de datos.

Para verificar la versión del operador de AlloyDB Omni instalada en tu clúster de Kubernetes, ejecuta este comando:

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.currentControlPlaneAgentsVersion}'

Si ejecutas la versión 1.0.0 o una posterior del operador de AlloyDB Omni, este comando imprime el número de versión del operador de AlloyDB Omni que se ejecuta en tu clúster de Kubernetes.

Si ejecutas una versión del operador de AlloyDB Omni anterior a la 1.0.0, no puedes realizar una actualización in situ del clúster de bases de datos ni del operador de AlloyDB Omni. En su lugar, debes seguir las instrucciones que se indican en Actualiza desde un operador de AlloyDB Omni anterior a la versión 1.0.0.

De lo contrario, continúa con la siguiente sección.

Determina los números de versión objetivo

Si ejecutas una versión del operador de AlloyDB Omni 1.0.0 o posterior, los pasos siguientes dependen de la versión de AlloyDB Omni a la que deseas actualizar. Esto, a su vez, requiere comprender el número de versión de AlloyDB Omni.

El número de versión de AlloyDB Omni tiene tres partes:

  • El número de versión principal de su compatibilidad con PostgreSQL
  • El número de versión secundaria de su compatibilidad con PostgreSQL
  • El número de versión del parche de esta versión de AlloyDB Omni

Por ejemplo, la versión 15.5.2 de AlloyDB Omni es la versión 2 del parche de AlloyDB Omni que admite la versión 15.5 de PostgreSQL.

Si deseas actualizar a una versión de AlloyDB Omni que admita una versión más reciente de PostgreSQL, debes actualizar el operador de AlloyDB Omni junto con tu clúster de bases de datos. Cada conjunto de versiones de AlloyDB Omni que admiten una versión secundaria de PostgreSQL en particular tiene su propio número de versión asociado del operador de AlloyDB Omni, que puedes encontrar en las notas de la versión de la versión de AlloyDB Omni.

Si solo quieres actualizar a una versión de parche más reciente de AlloyDB Omni, puedes actualizar solo el clúster de la base de datos, sin necesidad de actualizar el operador de AlloyDB Omni. Puedes ir a las instrucciones que se indican en Actualiza tu clúster de bases de datos.

De lo contrario, continúa con la siguiente sección.

Actualiza el operador de AlloyDB Omni

Para actualizar el operador de AlloyDB Omni, haz lo siguiente:

  1. Define las variables de entorno necesarias:

    export GCS_BUCKET=alloydb-omni-operator
    export OPERATOR_VERSION=OPERATOR_VERSION
    export HELM_PATH=$OPERATOR_VERSION/alloydbomni-operator-$OPERATOR_VERSION.tgz

    Reemplaza OPERATOR_VERSION por la versión del operador de AlloyDB Omni a la que te estás actualizando, por ejemplo, 1.1.0.

  2. Descarga la versión más reciente del operador de AlloyDB Omni:

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
    tar -xvzf alloydbomni-operator-${OPERATOR_VERSION}.tgz
  3. Aplica las definiciones de recursos personalizados más recientes del operador de AlloyDB Omni:

    kubectl apply -f alloydbomni-operator/crds
  4. Actualiza el gráfico de Helm del operador de AlloyDB Omni:

    helm upgrade alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

Para hacer un seguimiento de la actualización del operador de AlloyDB Omni actualizando tanto el manifiesto de Kubernetes como el clúster de bases de datos, sigue las instrucciones de la siguiente sección inmediatamente después de completar los pasos anteriores.

Actualiza tu clúster de base de datos

Para actualizar el clúster de bases de datos, actualiza los siguientes campos en la sección spec del manifiesto que lo define:

  • Establece databaseVersion en el número de versión completa de AlloyDB Omni a la que deseas actualizar este clúster de bases de datos.

  • Si también actualizaste el operador de AlloyDB Omni, establece controlPlaneAgentsVersion en el número de versión completa del operador de AlloyDB Omni que actualizaste.

Si solo actualizas la versión de parche de AlloyDB Omni (por ejemplo, actualizas databaseVersion de 15.5.1 a 15.5.2), este paso es todo lo que debes hacer.

Si actualizas la versión secundaria de la compatibilidad con PostgreSQL (por ejemplo, actualizas databaseVersion de 15.4.1 a 15.5.2), también debes actualizar controlPlaneAgentsVersion. En ese caso, asegúrate de haber seguido los pasos adicionales que se indican en Cómo actualizar el operador de AlloyDB Omni.

A modo de ejemplo, el siguiente extracto del manifiesto define un clúster de bases de datos que ejecuta la versión 15.5.2 del operador de AlloyDB Omni, con la versión 1.0.0 del operador de AlloyDB Omni:

apiVersion: alloydbomni.dbadmin.goog/v1 
kind: DBCluster
metadata:
  name: dbcluster-sample
spec:
  databaseVersion: 15.5.2
  controlPlaneAgentsVersion: 1.0.0

En este ejemplo, para actualizar el clúster de bases de datos y ejecutar la versión 15.5.3 de AlloyDB Omni, cambia databaseVersion: 15.5.2 a databaseVersion: 15.5.3.

Actualiza desde un operador de AlloyDB Omni anterior a la versión 1.0.0

Si ejecutas una versión del operador de AlloyDB Omni anterior a la 1.0.0, actualizar una instalación de AlloyDB Omni basada en Kubernetes implica desinstalar y, luego, reinstalar el operador de AlloyDB Omni después de crear una copia de seguridad de tus datos. Lleva a cabo los pasos siguientes:

  1. Enumera todos tus clústeres de bases de datos:

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  2. Para cada clúster de bases de datos, usa el comando pg_dumpall para exportar todos sus datos.

  3. Desinstala el operador de AlloyDB Omni. Esto incluye borrar todos los clústeres de tu base de datos.

  4. Vuelve a instalar el operador de AlloyDB Omni. Puedes usar los mismos comandos que usaste para instalar la versión anterior del operador de AlloyDB Omni, sin necesidad de especificar un número de versión nuevo.

  5. Vuelve a crear los clústeres de bases de datos. Puedes adaptar los mismos archivos de manifiesto que usaste cuando creaste tus clústeres de bases de datos anteriormente. Es posible que debas actualizar los archivos para que reflejen los cambios en la API que introdujo la versión 1.0.0 del operador Omni de AlloyDB, como el atributo databaseVersion que reemplaza al atributo version anterior.

  6. Usa pg_restore o el comando \i en psql para importar los datos que exportaste anteriormente a los clústeres recreados.

Revierte una actualización

Estas instrucciones solo se aplican a las versiones de AlloyDB Omni de 15.2.1 a 15.5.2. No se aplican a las implementaciones de AlloyDB Omnibasadas en Kubernetes.

Para revertir AlloyDB Omni a la versión instalada anteriormente, ejecuta este comando:

sudo alloydb database-server rollback

Desinstala AlloyDB Omni

Servidor único

Para desinstalar AlloyDB Omni, ejecuta el siguiente comando:

sudo alloydb database-server uninstall

Tu directorio de datos permanece en el sistema de archivos después de desinstalar AlloyDB Omni. Puedes mover, archivar o borrar este directorio, según si deseas conservar tus datos y cómo hacerlo después de desinstalar AlloyDB Omni.

Kubernetes

Borra el clúster de base de datos

Para borrar el clúster de bases de datos, establece isDeleted en true en su manifiesto. Puedes hacerlo con el siguiente comando.

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"isDeleted":true}}' --type=merge

Reemplaza DB_CLUSTER_NAME por el nombre del clúster de tu base de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.

Desinstala el operador de AlloyDB Omni

Para desinstalar el operador de Kubernetes de AlloyDB Omni de tu clúster de Kubernetes, sigue estos pasos:

  1. Borra todos los clústeres de bases de datos:

    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
  2. Espera a que el operador de Kubernetes de AlloyDB Omni borre todos tus clústeres de bases de datos. Usa el siguiente comando para verificar si quedan recursos de la base de datos:

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  3. Borra otros recursos que creó el operador de Kubernetes de AlloyDB Omni:

    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
  4. Desinstala el operador de Kubernetes de AlloyDB Omni:

    helm uninstall alloydbomni-operator --namespace alloydb-omni-system
  5. Limpia los secretos, las descripciones de recursos personalizados y los espacios de nombres relacionados con el operador de Kubernetes de AlloyDB Omni:

    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

Cambia el tamaño de tu clúster de base de datos basado en Kubernetes

Para cambiar el tamaño de la CPU, la memoria o el almacenamiento de tu clúster de bases de datos basado en Kubernetes, actualiza el campo resources de los manifiestos que definen su pod. El operador de AlloyDB Omni aplica las especificaciones nuevas a tu pod de base de datos de inmediato.

Para obtener más información sobre la sintaxis del manifiesto del operador de AlloyDB Omni, consulta Crea un clúster de bases de datos.

Se aplican las siguientes restricciones para modificar los recursos de un clúster de bases de datos en ejecución:

  • Puedes aumentar el tamaño de un disco solo si el storageClass especificado admite la expansión de volumen.
  • No puedes disminuir el tamaño de un disco.