Configurar pgBackRest para AlloyDB Omni

Selecciona una versión de la documentación:

En esta página se explica 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 Crear copias de seguridad y restaurar AlloyDB Omni.

pgBackRest es una utilidad flexible de copia de seguridad y restauración para PostgreSQL. Como 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 copia de seguridad en repositorios locales, remotos o basados en la nube. Una vez que haya configurado al menos un repositorio, podrá usar pgBackRest para restaurar sus datos de AlloyDB Omni mediante varios métodos, incluida la recuperación a un momento dado (PITR).

AlloyDB Omni incluye pgBackRest en su contenedor Docker. Esto significa que puedes usar pgBackRest para crear copias de seguridad y restaurar tus datos de AlloyDB Omni sin tener que instalar ningún software adicional.

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

Antes de empezar

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 del sistema de archivos

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

Muchos de los comandos y ejemplos de esta página hacen referencia al directorio de datos como /mnt/disks/pgsql, independientemente de la ubicación del directorio de datos en tu sistema host. Esto se debe a que AlloyDB Omni monta tu directorio de datos en /mnt/disks/pgsql en su sistema de archivos contenedorizado. Por lo tanto, puedes usar el directorio de datos como ubicación para almacenar la configuración y los repositorios de pgBackRest sin necesidad de realizar ninguna otra configuración.

Si quieres configurar pgBackRest en contenedores para que lea o escriba en directorios del sistema de archivos de tu máquina host que no estén en tu directorio de datos de AlloyDB Omni, debes hacer que estos directorios estén disponibles para el contenedor.

Configuración básica con copias de seguridad locales

En los pasos de esta sección se explica cómo configurar pgBackRest de forma básica, incluido un archivo de configuración breve que indica a pgBackRest que escriba los datos de la copia de seguridad continua en un subdirectorio del directorio de datos de AlloyDB Omni.

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

Configurar la autenticación de sockets Unix de confianza

Permite que tu máquina host de AlloyDB Omni autentique al usuario postgres del servidor de la base de datos sin necesidad de una contraseña. De esta forma, se simplifican los pasos posteriores.

  1. Añade la siguiente línea a tu archivo /var/alloydb/config/pg_hba.conf:

    local       all      postgres       trust
    
  2. Reinicia AlloyDB Omni:

    sudo alloydb database-server stop
    sudo alloydb database-server start

Crear y configurar 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 copias de seguridad continuas almacenadas de forma local. Puedes modificar este archivo de la forma que mejor se adapte a tus necesidades. Para obtener más información, consulta Configurar la estrofa de clúster.

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

    mkdir DATA_DIR/backups

    Sustituye DATA_DIR por la ruta del sistema de archivos al directorio de datos (por ejemplo, /home/$USER/alloydb-data).

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

    # Paths (all mandatory):
    repo1-path=/mnt/disks/pgsql/backups
    spool-path=/mnt/disks/pgsql
    lock-path=/mnt/disks/pgsql
    
    # 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=/mnt/disks/pgsql/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=/mnt/disks/pgsql
    pg1-path=/mnt/disks/pgsql/data
    
  3. Inicializa la ubicación de la copia de seguridad con el comando pgbackrest stanza-create:

    docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create

Configurar la base de datos para copias de seguridad continuas

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

    docker exec pg-service psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni archive-push %p';" \
    -c "ALTER SYSTEM SET archive_mode=on;" \
    -c "ALTER SYSTEM SET max_wal_senders=on;" \
    -c "ALTER SYSTEM SET wal_level=replica;"
  2. Reinicia AlloyDB Omni:

    sudo alloydb database-server stop
    sudo alloydb database-server start

Ejecutar comandos de pgBackRest

Si completas los pasos de la sección anterior, pgBackRest se configurará para que funcione con tu servidor AlloyDB Omni. Para consultar el estado de las copias de seguridad, crear copias de seguridad manuales y realizar otras tareas, consulta la referencia de comandos.

Como práctica recomendada, ejecuta los comandos de pgBackRest directamente desde el host en el que está instalado el contenedor de AlloyDB Omni mediante el comando docker exec. Por ejemplo, para crear una copia de seguridad manual, usa el comando pgbackrest backup. Modifícalo para que se ejecute con el comando docker exec y haga referencia al archivo de configuración que ha creado anteriormente:

docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni --type=full backup

El valor de la marca --config-path es /mnt/disks/pgsql porque siempre es la ubicación del directorio de datos en el sistema de archivos del contenedor de AlloyDB Omni. Si has seguido los pasos de la sección anterior, el directorio de datos contendrá el archivo pgbackrest.conf que necesitan los comandos de pgBackRest para ejecutarse correctamente. Para obtener más información, consulta Nota sobre las rutas del sistema de archivos.

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

Configurar copias de seguridad programadas

Para configurar copias de seguridad programadas, crea una tarea cron que ejecute el comando pgbackrest backup con la frecuencia que necesites. Para obtener más información, consulta Programar una copia de seguridad.

Configuración personalizada y copias de seguridad remotas

Una vez que tengas una configuración básica, puedes ajustar el archivo de configuración para adaptarlo a tus necesidades y preferencias mediante las opciones que se describen 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á simultáneamente en todos ellos como acción de copia de seguridad predeterminada.

Por ejemplo, pgBackRest admite usar un segmento 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 presenta en Configuración básica con copias de seguridad locales. Estas modificaciones en el archivo definen un segundo repositorio de copias de seguridad en un segmento de Cloud Storage, al que se accede mediante Gestión de Identidades y Accesos (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 mediante otro método de autenticación, como una Google Cloud clave de cuenta de servicio guardada en el sistema de archivos local.

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

  1. Configura los permisos del segmento para permitir que la cuenta de servicio asociada a tu instancia de VM escriba en el segmento. Para ello, debe asignar el rol de usuario de objeto de Storage de IAM a esa cuenta de servicio.

  2. Añade 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
    

    Sustituye BUCKET_NAME por el nombre del segmento de Cloud Storage en el que quieres que pgBackRest almacene las copias de seguridad.

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

    docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create

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

  • La ubicación en el sistema de archivos local, definida en otra parte del archivo de configuración como repo1-path.

  • El segmento de Cloud Storage, definido mediante las directivas de configuración repo2- configuradas en este ejemplo.

Siguientes pasos