Clonar un clúster de bases de datos en un solo servidor mediante una copia de seguridad de Cloud Storage

Selecciona una versión de la documentación:

En esta página se explica cómo clonar un clúster de bases de datos en un solo servidor mediante una copia de seguridad de Cloud Storage.

En el siguiente flujo de trabajo se explican los pasos para clonar:

  1. Configura el archivo pgbackrest.conf para acceder a la copia de seguridad de Cloud Storage.
  2. Usa los comandos pgBackRest para verificar que se puede acceder a las copias de seguridad de origen.
  3. Usa los comandos pgBackRest para restaurar la copia de seguridad en el servidor de destino.

Antes de empezar

  • Acceso a la ruta completa del segmento de Cloud Storage en el que se encuentra la copia de seguridad del clúster de la base de datos de origen. Es la misma ruta que usó al crear el recurso BackupPlan para su clúster de base de datos de origen.
  • Se crea un clúster de base de datos de AlloyDB Omni de un solo servidor de destino. Para obtener más información sobre cómo instalar AlloyDB Omni en Kubernetes, consulta Instalar AlloyDB Omni.
  • Asegúrate de haber iniciado sesión en la base de datos como usuario postgres.

Configurar el archivo pgBackRest en el servidor de destino

Configura el archivo pgBackRest para permitir que el clúster de la base de datos de destino acceda al segmento de Cloud Storage en el que se encuentran las copias de seguridad de origen.

  1. En el servidor de destino, vaya al directorio alloydb-data.

  2. Crea un archivo de configuración pgBackRest para acceder a las copias de seguridad almacenadas en Cloud Storage:

      $ cat << EOF > /backup/pgbackrest.conf
      [db]
      pg1-path=/mnt/disks/pgsql/data-restored
      pg1-socket-path=/tmp
      pg1-user=pgbackrest
      [global]
      log-path=/obs/pgbackrest
      log-level-file=info
      repo1-type=gcs
      repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME
      repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH
      repo1-storage-ca-file=/etc/ssl/certs/ca-certificates.crt
      repo1-retention-full=9999999
      repo1-gcs-key-type=auto

    Haz los cambios siguientes:

    • GCS_SOURCE_BACKUP_BUCKET_NAME: el nombre del segmento de Cloud Storage pgBackRest que ha creado en el clúster de la base de datos de origen. No se trata de la URL completa del segmento. No añadas el prefijo gs:// al nombre del segmento.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: la ruta del directorio en el que el operador de AlloyDB Omni escribe las copias de seguridad, dentro del bucket de Cloud Storage del clúster de base de datos de origen. La ruta debe ser absoluta y empezar por /.

    El valor de repo1-gcs-key-type es auto para usar la cuenta de servicio de la instancia. Para obtener más información sobre otras opciones, consulta GCS Repository Key Type Option (Opción de tipo de clave de repositorio de GCS).

Verificar las copias de seguridad de origen en el servidor de destino

Inicia sesión en el servidor de destino y ejecuta los comandos pgBackRest para verificar que se puede acceder a las copias de seguridad del clúster de la base de datos de origen en el servidor de destino:

Docker

sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Podman

sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Sustituye CONTAINER_NAME por el nombre de un nuevo contenedor de AlloyDB Omni. Por ejemplo, my-omni-1.

A continuación se muestra un ejemplo de respuesta:

    stanza: db
      status: ok
      cipher: none
      db (current)
          wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
          full backup: 20240213-231400F
              timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
              wal start/stop: 000000010000000000000003 / 000000010000000000000003
              database size: 38.7MB, database backup size: 38.7MB
              repo1: backup set size: 4.6MB, backup size: 4.6MB
          incr backup: 20240213-231400F_20240214-000001I
              timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
              wal start/stop: 00000001000000000000000D / 00000001000000000000000D
              database size: 38.7MB, database backup size: 488.3KB
              repo1: backup set size: 4.6MB, backup size: 84.2KB
              backup reference list: 20240213-231400F

Las marcas de tiempo de la respuesta se usan para restaurar la copia de seguridad completa o para restaurar desde un momento dado de la ventana de recuperación.

Restaurar la copia de seguridad en el servidor de destino

Una vez que hayas identificado la copia de seguridad o el punto en el tiempo al que quieras restaurar el servidor, ejecuta los comandos pgBackRest en el servidor de destino. Para obtener más información sobre estos comandos, consulta Comando Restore.

A continuación se muestran algunos ejemplos de comandos de restauración de pgBackRest:

  • Restaurar a partir de copia de seguridad

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
  • Restaurar desde un momento dado

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info

Copiar datos en el servidor de destino

Una vez que se haya completado correctamente el comando de restauración, puedes copiar los datos del directorio temporal /mnt/disks/pgsql/data-restored al directorio /alloydb-data/data actual.

  1. En el servidor de destino, detén el servicio de base de datos:

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. Como práctica recomendada, cambia el nombre del directorio de datos actual por otro:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. Cambia el nombre del directorio temporal data-restored por el del directorio de datos actual:

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. Actualice el valor pg1-path en el archivo postgresql.auto.conf para cargar los datos restaurados:

    vim ~/alloydb-data/data/postgresql.auto.conf
    # Verify postgresql.auto.conf.
    # Do not edit this file manually!
    # It will be overwritten by the ALTER SYSTEM command.
    # Recovery settings generated by pgBackRest restore on 2024-03-13 20:47:11
    restore_command = 'pgbackrest --config-path=/mnt/disks/pgsql --pg1-path=/mnt/disks/pgsql/data --repo=1 --stanza=db archive-get %f "%p"'
    recovery_target = 'immediate'
    recovery_target_action = 'promote'
    recovery_target_timeline = 'current'
  1. En el servidor de destino, inicia el servicio de la base de datos:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

Una vez que se haya iniciado el servicio de base de datos, puedes conectarte a la instancia principal y ejecutar consultas para verificar que los datos se han restaurado a partir de la copia de seguridad. Para obtener más información, consulta Conectarse a AlloyDB Omni en un solo servidor.

Siguientes pasos