Configura pgBackRest para AlloyDB Omni

Selecciona una versión de la documentación:

En esta página, se muestra cómo proteger tus datos configurando AlloyDB Omni para que funcione con pgBackRest, un servidor de copias de seguridad de bases de datos de código abierto. Para obtener una descripción general de las soluciones de copia de seguridad disponibles, consulta Copia de seguridad y restablecimiento de AlloyDB Omni.

Consulta Copia de seguridad y restablecimiento en Kubernetes para obtener información sobre Kubernetes.

pgBackRest es una utilidad flexible de copia de seguridad y restablecimiento para PostgreSQL. Dado que AlloyDB Omni es compatible con PostgreSQL, puedes usar pgBackRest para proteger tus datos de AlloyDB Omni con copias de seguridad manuales, programadas y continuas.

pgBackRest escribe sus datos de copias de seguridad en repositorios locales, remotos o basados en la nube. Después de establecer al menos un repositorio, puedes usar pgBackRest para restablecer tus datos de AlloyDB Omni con varios métodos, incluida la recuperación de un momento determinado (PITR).

AlloyDB Omni incluye pgBackRest en su contenedor de Docker. Esto significa que puedes usar pgBackRest para crear copias de seguridad de tus datos de AlloyDB Omni y restablecerlos sin necesidad de instalar software adicional.

Para obtener más información sobre pgBackRest, consulta su guía del usuario.

Antes de comenzar

Antes de configurar AlloyDB Omni para que funcione con pgBackRest, debes tener AlloyDB Omni instalado y en ejecución en un servidor que controles.

Nota sobre las rutas de acceso del sistema de archivos

El software pgBackRest incluido en AlloyDB Omni se ejecuta en el mismo contenedor de Docker que AlloyDB Omni. Por lo tanto, todas las rutas del sistema de archivos que le proporcionas a pgBackRest a través de su archivo de configuración o como argumentos de línea de comandos son ubicaciones en el sistema de archivos del contenedor, y no en el sistema de archivos de tu máquina anfitrión.

Muchos de los comandos y ejemplos de esta página hacen referencia a tu directorio de datos como /var/lib/postgresql/data, independientemente de la ubicación de tu directorio de datos en el sistema host. Esto se debe a que AlloyDB Omni activa tu directorio de datos en /var/lib/postgresql/data en su sistema de archivos en contenedores. Como resultado, puedes usar el directorio de datos como una ubicación para almacenar la configuración y los repositorios de pgBackRest sin necesidad de realizar más configuraciones.

Si deseas configurar pgBackRest en contenedores para leer o escribir en directorios del sistema de archivos de tu máquina anfitrión fuera del directorio de datos de AlloyDB Omni, debes poner estos directorios a disposición del contenedor.

Configuración básica con copias de seguridad locales

Los pasos de esta sección te guían a través de una configuración básica de pgBackRest, incluido un archivo de configuración corto que dirige pgBackRest para escribir datos de copias de seguridad continuas en un subdirectorio de tu directorio de datos de AlloyDB Omni.

Dado que pgBackRest es un producto flexible de terceros compatible con AlloyDB Omni, puedes modificar cualquiera de estos pasos según tus necesidades y preferencias. Si cambias alguna ruta del sistema de archivos, recuerda que debe ser visible para el contenedor. Consulta Una nota sobre las rutas del sistema de archivos.

Configura la autenticación de socket Unix de confianza

Permite que tu máquina anfitrión de AlloyDB Omni autentique al usuario postgres del servidor de la base de datos sin necesidad de una contraseña. Esto simplifica los pasos posteriores.

  1. Agrega la siguiente línea a tu archivo DATA_DIR/pg_hba.conf:

    local       all      postgres       trust
    

    Reemplaza DATA_DIR por la ruta de acceso del sistema de archivos a tu directorio de datos, por ejemplo, /home/$USER/alloydb-data.

  2. Reinicia AlloyDB Omni:

    Docker

    docker restart CONTAINER_NAME

    Reemplaza CONTAINER_NAME por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste, por ejemplo, my-omni.

    Podman

    podman restart CONTAINER_NAME

    Reemplaza CONTAINER_NAME por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste, por ejemplo, my-omni.

Crea y configura un repositorio de copias de seguridad

El archivo de configuración creado en esta sección es un ejemplo que permite una configuración mínima para las copias de seguridad continuas almacenadas de forma local. Puedes modificar este archivo de la manera que mejor se adapte a tus necesidades. Para obtener más información, consulta Cómo configurar la sección del clúster.

  1. Crea un subdirectorio backups en tu directorio de datos de AlloyDB Omni:

    mkdir DATA_DIR/backups
  2. Crea un archivo llamado pgbackrest.conf dentro de tu directorio de datos y copia el siguiente contenido en él:

    [global]
    
    # Paths (all mandatory):
    repo1-path=/var/lib/postgresql/data/backups
    spool-path=/var/lib/postgresql/data
    lock-path=/var/lib/postgresql/data
    
    # Retention details:
    repo1-retention-full=3
    repo1-retention-full-type=count
    repo1-retention-diff=16
    
    # Force a checkpoint to start backup immediately:
    start-fast=y
    
    # Logging parameters:
    log-path=/var/lib/postgresql/data/backups
    log-level-console=info
    log-level-file=info
    
    # Recommended ZSTD compression:
    compress-type=zst
    
    # Other performance parameters:
    archive-async=y
    archive-push-queue-max=1024MB
    archive-get-queue-max=256MB
    archive-missing-retry=y
    
    [global:archive-push]
    process-max=2
    
    [global:archive-get]
    process-max=2
    
    [omni]
    pg1-user=postgres
    pg1-socket-path=/var/lib/postgresql/data
    pg1-path=/var/lib/postgresql/data/data
    
  3. Inicializa la ubicación de la copia de seguridad con el comando pgbackrest stanza-create:

    Docker

    docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

    Reemplaza CONTAINER_NAME por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste, por ejemplo, my-omni.

    Podman

    podman exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

    Reemplaza CONTAINER_NAME por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste, por ejemplo, my-omni.

Configura la base de datos para las copias de seguridad continuas

Docker

  1. Para habilitar las copias de seguridad continuas, ejecuta el siguiente comando para establecer varios parámetros de PostgreSQL:

     docker exec CONTAINER_NAME psql -h localhost -U postgres \
     -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni archive-push %p';" \
     -c "ALTER SYSTEM SET archive_mode=on;" \
     -c "ALTER SYSTEM SET max_wal_senders=10;" \
     -c "ALTER SYSTEM SET wal_level=replica;"
  2. Reinicia AlloyDB Omni:

     docker restart CONTAINER_NAME

Podman

  1. Para habilitar las copias de seguridad continuas, ejecuta el siguiente comando para establecer varios parámetros de PostgreSQL:

     podman exec CONTAINER_NAME psql -h localhost -U postgres \
     -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni archive-push %p';" \
     -c "ALTER SYSTEM SET archive_mode=on;" \
     -c "ALTER SYSTEM SET max_wal_senders=10;" \
     -c "ALTER SYSTEM SET wal_level=replica;"
  2. Reinicia AlloyDB Omni:

     podman restart CONTAINER_NAME

Ejecuta comandos de pgBackRest

Completar los pasos de la sección anterior configura pgBackRest para que funcione con tu servidor de AlloyDB Omni. Para verificar el estado de la copia de seguridad, crear copias de seguridad manuales y realizar otras tareas, consulta la referencia de comandos.

Docker

Como práctica recomendada, ejecuta los comandos de pgBackRest directamente desde la máquina anfitrión en la que está instalado el contenedor de AlloyDB Omni con el comando docker exec. Por ejemplo, para crear una copia de seguridad manual, usa el comando pgbackrest backup. Modifícalo para que se ejecute dentro de un comando docker exec y haga referencia al archivo de configuración que creaste antes:

   docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backup

Podman

Como práctica recomendada, ejecuta los comandos de pgBackRest directamente desde la máquina anfitrión en la que está instalado el contenedor de AlloyDB Omni con el comando podman exec. Por ejemplo, para crear una copia de seguridad manual, usa el comando pgbackrest backup. Modifícalo para que se ejecute dentro de un comando podman exec y haga referencia al archivo de configuración que creaste antes:

   podman exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backup

También puedes usar variables de entorno para establecer la ubicación de tu archivo de configuración de pgBackRest. Para obtener más información, consulta Opción de ruta de configuración.

Configurar las copias de seguridad programadas

Para configurar copias de seguridad programadas, crea un trabajo cron que ejecute el comando pgbackrest backup con la frecuencia que sea necesaria. Para obtener más información, consulta Cómo programar una copia de seguridad.

Configuración personalizada y copias de seguridad remotas

Después de que tengas una configuración básica en funcionamiento, puedes ajustar el archivo de configuración para que se adapte a tus necesidades y preferencias con las opciones que se documentan en la referencia de configuración de pgBackRest.

Esto incluye especificar repositorios de copias de seguridad adicionales ubicados en máquinas remotas o en la nube. Si defines varios repositorios, pgBackRest escribirá en todos ellos de forma simultánea como acción de copia de seguridad predeterminada.

Por ejemplo, pgBackRest admite el uso de un bucket de Cloud Storage como repositorio de copias de seguridad, con varias opciones de configuración relacionadas. En la siguiente sección, se muestra una forma de usar estas opciones.

Ejemplo de configuración con Cloud Storage

Los pasos de esta sección se basan en el archivo de configuración que se presentó en Configuración básica con copias de seguridad locales. Estas modificaciones en ese archivo definen un segundo repositorio de copias de seguridad en un bucket de Cloud Storage, al que se accede a través de Identity and Access Management (IAM).

El estilo de autenticación automática de este ejemplo requiere que un clúster de AlloyDB Omni se ejecute en una instancia de VM de Compute Engine. Si no ejecutas AlloyDB Omni en una instancia de VM de Compute Engine, puedes crear copias de seguridad en un bucket de Cloud Storage con otro método de autenticación, como una clave de cuenta de servicio Google Cloud guardada en el sistema de archivos local.

Para extender el archivo de configuración anterior y definir un repositorio de pgBackRest basado en Cloud Storage, sigue estos pasos:

  1. Configura los permisos del bucket para permitir que la cuenta de servicio adjunta a tu instancia de VM escriba en el bucket. Esto requiere que se establezca el rol de IAM de usuario de objetos de Storage en esa cuenta de servicio.

  2. Agrega estas líneas a tu archivo pgbackrest.conf:

    # Cloud Storage access details:
    repo2-type=gcs
    repo2-gcs-key-type=auto
    repo2-storage-verify-tls=n
    
    # Cloud Storage bucket and path details:
    repo2-gcs-bucket=BUCKET_NAME
    repo2-path=/pgbackrest
    
    # Cloud Storage backup retention parameters:
    repo2-retention-full=8
    repo2-retention-full-type=count
    

    Reemplaza BUCKET_NAME por el nombre del bucket de Cloud Storage en el que deseas que pgBackRest almacene las copias de seguridad.

  3. Inicializa la ubicación de la copia de seguridad basada en la nube con el comando pgbackrest stanza-create:

    Docker

     docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

    Reemplaza CONTAINER_NAME por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste, por ejemplo, my-omni.

    Podman

     podman exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

    Reemplaza CONTAINER_NAME por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste, por ejemplo, my-omni.

Después de inicializar el repositorio de copias de seguridad en tu bucket de Cloud Storage con el comando pgbackrest stanza-create, pgBackRest crea copias de seguridad en dos ubicaciones:

  • Ubicación en el sistema de archivos local, definida en otro lugar del archivo de configuración como repo1-path.

  • Es el bucket de Cloud Storage, definido con las directivas de configuración repo2- que se establecieron en este ejemplo.

¿Qué sigue?