En esta página, se muestra cómo proteger tus datos configurando AlloyDB Omni para que funcione con pgBackRest, un servidor de copia de seguridad de base de datos de código abierto. Para obtener una descripción general de las soluciones de copia de seguridad disponibles, consulta Cómo crear una copia de seguridad de AlloyDB Omni y restablecerla.
Consulta Cómo crear copias de seguridad y restablecer en Kubernetes para obtener información basada en Kubernetes.
pgBackRest es una utilidad flexible de copia de seguridad y restablecimiento para PostgreSQL. Debido a 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 copia 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 a través de varios métodos, incluida la recuperación en un momento determinado (PITR).
AlloyDB Omni incluye pgBackRest en su contenedor de Docker. Esto significa que puedes usar pgBackRest para crear una copia 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 con AlloyDB Omni se ejecuta en el mismo contenedor de Docker que AlloyDB Omni. Debido a esto, todas las rutas del sistema de archivos que 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, no en el sistema de archivos de la 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 tu 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 contenedor. Como resultado, puedes usar el directorio de datos como una ubicación para almacenar la configuración y los repositorios de pgBackRest sin más configuración.
Si deseas configurar el pgBackRest contenedorizado para leer o escribir en direcciones del sistema de archivos de tu máquina anfitrión fuera de 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
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 breve que dirige a pgBackRest a escribir datos de copia de seguridad continuos en un subdirectorio de tu directorio de datos de AlloyDB Omni.
Debido a que pgBackRest es un producto de terceros flexible compatible con AlloyDB Omni, puedes modificar cualquiera de estos pasos según corresponda a tus necesidades y preferencias. Si cambias alguna ruta de acceso del sistema de archivos, recuerda que el contenedor debe poder verlas. Consulta Nota sobre las rutas de acceso del sistema de archivos.
Configura la autenticación de socket Unix de confianza
Permite que la máquina anfitrión de AlloyDB Omni autentique al usuario postgres
del servidor de base de datos sin requerir una contraseña. Esto simplifica los pasos posteriores.
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
.Reinicia AlloyDB Omni:
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
.
Crea y configura un repositorio de copias de seguridad
El archivo de configuración creado en esta sección es un ejemplo que habilita una configuración mínima para 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 Configura la stanza del clúster.
Crea un subdirectorio
backups
en el directorio de datos de AlloyDB Omni:mkdir DATA_DIR/backups
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
Inicializa la ubicación de la copia de seguridad con el comando
pgbackrest stanza-create
:docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --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 configurar 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;"
Reinicia AlloyDB Omni:
docker restart CONTAINER_NAME
Ejecuta comandos de pgBackRest
Si completas los pasos de la sección anterior, se configurará 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 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 del archivo de configuración de pgBackRest. Para obtener más información, consulta Opción de ruta de configuración.
Configura copias de seguridad programadas
Para configurar copias de seguridad programadas, crea un trabajo cron que ejecute el comando pgbackrest backup
tanto como sea necesario. Para obtener más información, consulta Cómo programar una copia de seguridad.
Configuración personalizada y copias de seguridad remotas
Una vez que tengas una configuración básica en funcionamiento, puedes ajustar tu archivo de configuración para que se adapte a tus necesidades y preferencias con las opciones documentadas en la referencia de configuración de pgBackRest.
Esto incluye especificar repositorios de copia de seguridad adicionales ubicados en máquinas remotas o en la nube. Si defines varios repositorios, pgBackRest escribirá en ellos de forma simultánea como su acción de copia de seguridad predeterminada.
Por ejemplo, pgBackRest admite usar un bucket de Cloud Storage como repositorio de copias de seguridad, con una serie de 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 a ese archivo definen un segundo repositorio de copia 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 en este ejemplo requiere un clúster de AlloyDB Omni para ejecutarse en una instancia de VM de Compute Engine. Si no ejecutas AlloyDB Omni en una instancia de VM de Compute Engine, aún puedes crear una copia de seguridad en un bucket de Cloud Storage con otro método de autenticación, como una clave de cuenta de servicio de 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. Para ello, se requiere que el rol de IAM de usuario de objetos de almacenamiento esté configurado 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 copia de seguridad basada en la nube con el comando
pgbackrest stanza-create
:docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --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:
Es la ubicación en el sistema de archivos local, que se define en otra parte del archivo de configuración como
repo1-path
.El bucket de Cloud Storage, definido con las directivas de configuración
repo2-
que configuró este ejemplo