Personalizar la instalación de AlloyDB Omni

Selecciona una versión de la documentación:

En esta página se describe cómo personalizar la instalación de AlloyDB Omni, que se implementa mediante una imagen de contenedor que admite diferentes formas de personalización. En esta página se muestran algunas personalizaciones habituales.

Habilitar e inhabilitar la telemetría de AlloyDB Omni

La telemetría de AlloyDB Omni implementa un agente de cliente ligero que solo se ejecuta en la imagen de contenedor de AlloyDB Omni. Este agente recoge periódicamente un conjunto de métricas básicas seudonimizadas y las envía a un endpoint gestionado por Google.

Como AlloyDB Omni es un producto descargable que se ofrece sin coste, esta telemetría proporciona a Google métricas esenciales de información no personal identificable (IPI) sobre los entornos genéricos de adopción e implementación de las instancias en ejecución. Estos datos nos ayudan a tomar decisiones sobre el desarrollo de productos y la priorización de la asistencia.

Entre las métricas recogidas se incluyen las siguientes:

  • ID de instalación único (UUID seudonimizado)
  • Versión de AlloyDB Omni y versión principal de PostgreSQL
  • Información del sistema host, como el número de CPUs, la RAM y el tiempo de actividad

Inhabilitar los informes de telemetría

Para evitar que el agente de telemetría se ejecute y envíe métricas de uso, asigna el valor off al parámetro de configuración de PostgreSQL omni_enable_telemetry. Para inhabilitar el agente de telemetría, puedes definir la marca de telemetría en el archivo postgresql.conf o definir la marca en tiempo de ejecución con ALTER SYSTEM.

Definir la marca de telemetría en el archivo postgresql.conf

Para modificar el archivo de configuración de PostgreSQL en el directorio de datos persistentes de tu contenedor, sigue estos pasos:

  1. Busca el archivo postgresql.conf en el directorio de datos de tu base de datos ($PGDATA).
  2. Inhabilita la telemetría de AlloyDB Omni.

    omni_enable_telemetry = off
    
  3. Para aplicar el cambio, reinicia tu contenedor de AlloyDB Omni. El agente de telemetría deja de recoger y enviar métricas de uso a Google.

Definir la marca de telemetría en el tiempo de ejecución con ALTER SYSTEM

Para definir la marca de telemetría y conservar el cambio entre reinicios, sigue estos pasos:

  1. Conéctate a tu instancia de AlloyDB Omni mediante psql:

    psql -h HOST -U USER -d DATABASE
    

    Haz las siguientes sustituciones:

    • HOST: el nombre de host o la dirección IP de tu instancia de AlloyDB Omni. Por ejemplo, 127.0.0.1.
    • USER: el usuario de la base de datos al que quieres conectarte, por ejemplo, postgres.
    • DATABASE: la base de datos a la que quieres conectarte (por ejemplo, postgres).
  2. Ejecuta el siguiente comando:

    ALTER SYSTEM SET omni_enable_telemetry = 'off';
    
  3. Vuelve a cargar la configuración o reinicia la instancia. En algunas configuraciones de contenedores, puede que tengas que reiniciar la instancia para asegurarte de que el cambio se aplique por completo en el trabajador en segundo plano.

    SELECT pg_reload_conf();
    

    El agente de telemetría deja de recoger y enviar métricas de uso a Google.

Habilitar los informes de telemetría

Si has inhabilitado la telemetría de AlloyDB Omni, puedes volver a habilitarla configurando la marca omni_enable_telemetry en on. Para habilitar el agente de telemetría, debes definir la marca en el archivo postgresql.conf o en el tiempo de ejecución mediante ALTER SYSTEM.

Definir la marca de telemetría en el archivo postgresql.conf

  1. Busca el archivo postgresql.conf en el directorio de datos de tu base de datos ($PGDATA).
  2. Define la siguiente línea:

    omni_enable_telemetry = on
    
  3. Para aplicar el cambio, reinicia tu contenedor de AlloyDB Omni.

Definir la marca de telemetría en el tiempo de ejecución con ALTER SYSTEM

  1. Conéctate a tu instancia de AlloyDB Omni mediante psql.
  2. Ejecuta el siguiente comando:

    ALTER SYSTEM SET omni_enable_telemetry = 'on';
    
  3. Para aplicar el cambio, reinicia tu contenedor de AlloyDB Omni.

    docker restart CONTAINER_NAME
    

    Haz la siguiente sustitución:

    • CONTAINER_NAME: el nombre de tu contenedor de AlloyDB Omni. Por ejemplo, my-omni-1.

Comprobar el estado de la telemetría de AlloyDB Omni

Puede comprobar el estado del agente de telemetría de AlloyDB Omni, incluido si está habilitado o en ejecución. También puedes consultar la actividad del agente de telemetría.

Comprobar si el agente de telemetría está habilitado o inhabilitado

Para comprobar el estado del ajuste de telemetría, sigue estos pasos:

  1. Conéctate a tu instancia.
  2. Ejecuta lo siguiente:
SHOW omni_enable_telemetry;

El resultado es on o off, según si has inhabilitado o habilitado la telemetría de AlloyDB Omni.

Comprobar si el agente de telemetría se está ejecutando

Para comprobar si el agente de telemetría se está ejecutando, ejecuta el siguiente comando en el host del contenedor:

docker top CONTAINER_NAME

Haz la siguiente sustitución:

  • CONTAINER_NAME: el nombre de tu contenedor de AlloyDB Omni. Por ejemplo, my-omni-1.

Si la telemetría está habilitada y en ejecución, el resultado contiene una línea con el texto postgres: omni telemetry worker.

Comprobar la actividad del agente de telemetría

Para comprobar la actividad del agente de telemetría, ejecuta el siguiente comando en el host del contenedor:

docker logs CONTAINER_NAME 2>&1 | grep telemetry

Haz la siguiente sustitución:

  • CONTAINER_NAME: el nombre de tu contenedor de AlloyDB Omni. Por ejemplo, my-omni-1.

Si el agente de telemetría está en ejecución, los registros contienen mensajes similares a los siguientes:

LOG:  [telemetry_agent_worker.cc:143]  Started telemetry worker
LOG:  [telemetry_agent_worker.cc:161]  Running telemetry reporting agent
telemetry_agent: Uploading telemetry data to https://cloud.google.com/log.

Montar un directorio de datos externo

De forma predeterminada, el comando de la guía de inicio rápido para instalar AlloyDB Omni almacena los datos de la base de datos en un área gestionada por Docker o Podman. Esto es práctico para empezar, pero dificulta encontrar y usar el directorio de datos. En su lugar, puedes configurar un montaje de enlace para asignar el directorio de datos a una ubicación conocida de tu disco.

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para tu contenedor. Por ejemplo, my-omni-1.
  • NEW_PASSWORD: contraseña asignada al usuario postgres del nuevo contenedor después de su creación.
  • DATA_DIR: ruta del directorio de host en el que se almacenan tus datos.
  • HOST_PORT: puerto TCP de la máquina host al que debe publicar su propio puerto 5432 el contenedor. Para usar el puerto predeterminado de PostgreSQL en la máquina host, especifica 5432.
  • IMAGE_TAG: usa 16.9.0 para la imagen de Debian más reciente o 16.9.0-ubi para la imagen de UBI más reciente.

Habilitar ulimits

Los parámetros de ulimit especifican los límites de los procesos que puede usar el contenedor de Docker o Podman. Para obtener un rendimiento óptimo, te recomendamos que definas los siguientes ulimits:

  • nice=-20:-20: AlloyDB Omni ajusta las prioridades de los procesos para permitir que los procesos críticos de PostgreSQL se ejecuten con una prioridad más alta. Cuanto mayor sea la prioridad, mayor será la asignación de CPUs disponibles para los procesos. Para ajustar las prioridades de los procesos, especifica --ulimit=nice=-20:-20, que elimina las limitaciones del contenedor de AlloyDB Omni.

  • memlock=-1:-1: AlloyDB Omni realiza una gestión automática de la memoria. Si se define --ulimit=memlock=-1:-1, la base de datos puede controlar mejor cómo se intercambian las páginas de memoria, lo que puede mejorar el rendimiento.

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.
  • NEW_PASSWORD: contraseña asignada al usuario postgres del nuevo contenedor después de su creación.
  • HOST_PORT: puerto TCP de la máquina host al que debe publicar su propio puerto 5432 el contenedor. Para usar el puerto predeterminado de PostgreSQL en la máquina host, especifica 5432.
  • IMAGE_TAG: usa AlloyDB Omni para la imagen de Debian más reciente o AlloyDB Omni-ubi para la imagen de UBI más reciente.

Especificar un controlador de registro

De forma predeterminada, Docker y Podman no realizan rotaciones de registros. Esto puede ocupar mucho espacio en disco y, con el tiempo, provocar que se agote. Para usar otro controlador de registro, puedes especificar el campo --log-driver. Por ejemplo, para registrarte en journald:

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.
  • NEW_PASSWORD: contraseña asignada al usuario postgres del nuevo contenedor después de su creación.
  • HOST_PORT: puerto TCP de la máquina host al que debe publicar su propio puerto 5432 el contenedor. Para usar el puerto predeterminado de PostgreSQL en la máquina host, especifica 5432.
  • IMAGE_TAG: usa 16.9.0 para obtener la imagen de Debian más reciente o 16.9.0-ubi para obtener la imagen de UBI más reciente.

Para obtener más información sobre los controladores de registro, consulta la documentación de Docker sobre cómo configurar controladores de registro y la de Podman sobre podman-run.

También puedes configurar el registro mediante PostgreSQL. Para obtener más información, consulta Configurar la rotación de registros de AlloyDB Omni.

Montar un volumen de memoria compartida

Si tienes previsto usar el motor de columnas de AlloyDB con AlloyDB Omni, te recomendamos que pongas la memoria compartida a disposición del contenedor de AlloyDB Omni. El método para hacerlo varía en función del sistema operativo del host, como se muestra en los siguientes ejemplos.

Linux

Para que el contenedor pueda acceder a la memoria compartida, monta /dev/shm:

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.
  • NEW_PASSWORD: contraseña asignada al usuario postgres del nuevo contenedor después de su creación.
  • HOST_PORT: puerto TCP de la máquina host al que debe publicar su propio puerto 5432 el contenedor. Para usar el puerto predeterminado de PostgreSQL en la máquina host, especifica 5432.
  • IMAGE_TAG: usa 16.9.0 para obtener la imagen de Debian más reciente o 16.9.0-ubi para obtener la imagen de UBI más reciente.

macOS

Para que el contenedor pueda acceder a la memoria compartida, incluye la marca --shm-size:

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.
  • NEW_PASSWORD: contraseña asignada al usuario postgres del nuevo contenedor después de su creación.
  • SHARED_MEMORY_SIZE: tamaño que se va a definir para /dev/shm en el contenedor, con el formato descrito en Ejecutar contenedores. Por ejemplo, para especificar un gigabyte, usa el valor 1g.
  • HOST_PORT: puerto TCP de la máquina host al que debe publicar su propio puerto 5432 el contenedor. Para usar el puerto predeterminado de PostgreSQL en la máquina host, especifica 5432.
  • IMAGE_TAG: usa 16.9.0 para la imagen de Debian más reciente o 16.9.0-ubi para la imagen de UBI más reciente.

Te recomendamos que asignes al tamaño de la memoria compartida un número de megabytes igual al valor de la marca google_job_scheduler.max_parallel_workers_per_job de tu base de datos multiplicado por 250. Para obtener más información sobre el motor de columnas, consulta Configurar el motor de columnas en AlloyDB Omni.

Por ejemplo, si la marca de base de datos google_job_scheduler.max_parallel_workers_per_job tiene el valor predeterminado 2, considera la posibilidad de añadir una marca con el valor --shm-size=500m o superior al iniciar el servidor de la base de datos.

Para obtener más información sobre la marca --shm-size, consulta Ejecutar contenedores.

Habilitar extensiones

La lista de extensiones disponibles en AlloyDB Omni se puede consultar en Extensiones de base de datos admitidas. Aunque PostGIS y Orafce no se incluyen en AlloyDB Omni, se pueden instalar siguiendo las instrucciones:

Las extensiones instaladas se habilitan mediante instrucciones estándar de PostgreSQL CREATE EXTENSION como se explica en el artículo sobre cómo habilitar una extensión.