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 /mnt/disks/pgsql
, 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 /mnt/disks/pgsql
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 de tu 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.
Agrega la siguiente línea a tu archivo
/var/alloydb/config/pg_hba.conf
:local all postgres trust
Reinicia AlloyDB Omni:
sudo alloydb database-server stop
sudo alloydb database-server start
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 la copia de seguridad continua almacenada 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.
Crea un subdirectorio
backups
en tu directorio de datos de AlloyDB Omni:mkdir DATA_DIR/backups
Reemplaza DATA_DIR por la ruta de acceso del sistema de archivos a tu directorio de datos, por ejemplo,
/home/$USER/alloydb-data
.Crea un archivo llamado
pgbackrest.conf
dentro de 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
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
Configura la base de datos para las copias de seguridad continuas
Para habilitar las copias de seguridad continuas, ejecuta el siguiente comando para establecer 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;"
Reinicia AlloyDB Omni:
sudo alloydb database-server stop
sudo alloydb database-server start
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.
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 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 esa es siempre la ubicación de tu directorio de datos en el sistema de archivos del contenedor de AlloyDB Omni. Si seguiste los pasos de la sección anterior, tu directorio de datos contiene el archivo pgbackrest.conf
que los comandos de pgBackRest necesitan para ejecutarse correctamente. Para obtener más información, consulta Una nota sobre las rutas de acceso del sistema de archivos.
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 una tarea 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:
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.
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.
Inicializa la ubicación de la copia de seguridad basada 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 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.