Para obtener información sobre Kubernetes, consulta Crear copias de seguridad y restaurar en Kubernetes.
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, completa los siguientes requisitos previos:
- Instala y ejecuta AlloyDB Omni en un servidor que controles.
- Configura el almacenamiento de datos persistente en tu instancia de AlloyDB Omni.
Configuración básica con copias de seguridad locales
Los pasos de esta sección te guiarán por la configuración básica de pgBackRest. Las configuraciones básicas no habilitan las copias de seguridad programadas. Para obtener más información, consulta Configurar copias de seguridad programadas.
Como pgBackRest es un producto de terceros flexible compatible con AlloyDB Omni, puedes modificar cualquiera de estos pasos según tus necesidades y preferencias.
Montar un volumen de copia de seguridad en un contenedor
Por motivos de organización, te recomendamos que crees y montes un volumen independiente para las copias de seguridad de pgBackRest. Para configurar un nuevo volumen, sigue estos pasos:
Si el contenedor está en ejecución, deténgalo y elimínelo.
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Sustituye la siguiente variable:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Crea un directorio de copia de seguridad en el sistema de archivos de tu contenedor.
Docker
mkdir -p BACKUP_DIR
Docker
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Sustituye la siguiente variable:
BACKUP_DIR
: directorio de host en el que se almacenarán las copias de seguridad.
Vuelve a crear el contenedor con el nuevo volumen de copias de seguridad.
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.NEW_PASSWORD
: contraseña asignada al usuariopostgres
del nuevo contenedor después de su creación. Ten en cuenta queNEW_PASSWORD
solo definirá una nueva contraseña cuandoDATA_DIR
sea una ubicación nueva.DATA_DIR
: ruta del directorio de host en el que se almacenan tus datos.DATA_DIR
: ruta del directorio de host en el que se almacenan tus datos.BACKUP_DIR
: directorio de host en el que se almacenarán las copias de seguridad.HOST_PORT
: puerto TCP de la máquina host al que debe publicar su propio puerto5432
el contenedor. Para usar el puerto predeterminado de PostgreSQL en la máquina host, especifica5432
.
Haz que el directorio de copias de seguridad de tu contenedor sea legible para
postgres
.Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Sustituye la siguiente variable:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Configurar copias de seguridad locales
pgBackRest crea subdirectorios para cada copia de seguridad y contiene un archivo de manifiesto de texto sin formato.
pgBackRest usa el término "stanza" para referirse a la configuración de un clúster de bases de datos de PostgreSQL. El nombre de la stanza es arbitrario y no tiene por qué coincidir con el nombre del servidor host, el clúster de PostgreSQL o la base de datos. En la documentación de pgBackRest se recomienda asignar a la stanza el nombre de la función del clúster.
El repositorio es donde se escriben las copias de seguridad. pgBackRest permite escribir en más de un repositorio en una stanza determinada. La mayoría de los parámetros de configuración relacionados con los repositorios se indexan con un valor numérico. Por ejemplo, repo1-
. Los parámetros relacionados con los clústeres de PostgreSQL también se indexan de forma independiente. Por ejemplo, pg1-
.
pgBackRest usa un archivo de configuración llamado pgbackrest.conf
para almacenar parámetros globales y específicos de la sección.
Para crear e inicializar un archivo de configuración para hacer una copia de seguridad de tu clúster de AlloyDB Omni, crea el archivo pgbackrest.conf
en el directorio de copias de seguridad del lado del host que creaste en Montar un volumen de copia de seguridad en tu contenedor.
[global]
# Paths (all mandatory):
repo1-path=/var/lib/postgresql/backups
spool-path=/var/lib/postgresql/backups/spool
lock-path=/var/lib/postgresql/backups
# 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/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=/tmp
pg1-path=/var/lib/postgresql/data
Algunos parámetros son obligatorios, pero otros se pueden ajustar para satisfacer sus necesidades específicas, como los siguientes:
repo1-path
: Ubicación del directorio en el que se escriben las copias de seguridad. Recomendamos una ubicación visible tanto para el servidor host como para el contenedor.log-path
: Ubicación del directorio en el que se escriben los archivos de registro. Si quieres escribir los archivos de registro en una ubicación independiente, no mezclados con las propias copias de seguridad, ajusta este parámetro.repo1-retention-full
: Número de copias de seguridad completas que se conservarán.repo1-retention-full-type
: Indica si la conservación se mide por recuento o por periodo (en días).repo1-retention-diff
: Número de copias de seguridad diferenciales que se conservarán.
Otros ajustes de parámetros no críticos, pero recomendados, que son compatibles con AlloyDB Omni en el archivo de configuración son los siguientes:
log-level-console
: Nivel de registro escrito en la pantalla (STDOUT) al ejecutar comandos de pgBackup. Puedes ajustar este valor en el archivo de configuración para adaptarlo a tus necesidades o anularlo con el argumento de línea de comandos--log-level-console
. El valor predeterminado eswarn
.start-fast
: Fuerza un punto de control para iniciar las copias de seguridad rápidamente. El valor predeterminado esn
.archive-async
: Envía archivos de segmento WAL de forma asíncrona para mejorar el rendimiento. El valor predeterminado esn
.process-max
: Número máximo de procesos que se usarán para la compresión y la transferencia. Normalmente, se asigna el valormax_cpu/4
a un clúster principal omax_cpu/2
a un clúster de reserva. El valor predeterminado es1
.compress-type
: Algoritmo de compresión que se va a usar. El valor predeterminado esgz
.
Hay muchos otros parámetros de configuración de pgBackRest que se pueden ajustar. Esta documentación solo abarca los parámetros obligatorios para la configuración predeterminada de AlloyDB Omni y algunos ajustes de parámetros recomendados. Para ver la lista completa de parámetros de configuración, consulta la documentación online de Referencia de configuración de pgBackRest.
Después de configurar pgBackRest, se deben inicializar los repositorios de destino en los que se escriben las copias de seguridad. Para ello, se crea la sección, que usa los parámetros definidos en el archivo de configuración.
Para configurar tu base de datos para las copias de seguridad, sigue estos pasos:
Crea la stanza con el comando
stanza-create
.Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Configura tu base de datos para las copias de seguridad.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Reinicia el contenedor.
Docker
docker restart CONTAINER_NAME
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Valida la configuración de la copia de seguridad.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Realiza una comprobación de pgBackRest.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Hacer una copia de seguridad
Realiza una copia de seguridad completa.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Realiza una copia de seguridad diferencial.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Informes de copias de seguridad.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Sustituye las siguientes variables:
CONTAINER_NAME
: nombre que has usado para el contenedor.
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 Google Cloud 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:
Configura los permisos del segmento para permitir que la cuenta de servicio vinculada a tu instancia de VM escriba en el segmento. Para ello, es necesario que se haya asignado el rol de gestión de identidades y accesos Usuario de objetos de Storage a esa cuenta de servicio.
Añade estas líneas a la sección
[global]
de tu archivopgbackrest.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=PATH_IN_BUCKET # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=count
Sustituye la siguiente variable:
BUCKET_NAME
: nombre del segmento de Cloud Storage en el que quieres que pgBackRest almacene las copias de seguridad.PATH_IN_BUCKET
: ruta del directorio del segmento de Cloud Storage en el que quieres que pgBackRest almacene las copias de seguridad.
Inicializa la ubicación de la copia de seguridad en la nube con el comando
pgbackrest stanza-create
:Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Sustituye la siguiente variable:
CONTAINER_NAME
: nombre que has usado para el contenedor.
Después de inicializar el repositorio de copias de seguridad en tu segmento de Cloud Storage con el comando pgbackrest stanza-create
, pgBackRest puede crear copias de seguridad en dos ubicaciones:
Ubicación en el sistema de archivos local, definida en otra parte del archivo de configuración como
repo1-path
. Esta es la ubicación predeterminada cuando--repo
no se especifica en el comandopgbackrest
.Segmento de Cloud Storage, definido mediante las directivas de configuración
repo2-gcs-bucket
configuradas en este ejemplo. Para usar el segmento de Cloud Storage, especifica--repo=2
en el comandopgbackrest
.