En esta página, se muestra cómo clonar un clúster de bases de datos en un solo servidor con una copia de seguridad de Cloud Storage.
En el siguiente flujo de trabajo, se explican los pasos de clonación:
- Configura el archivo
pgbackrest.conf
para acceder a la copia de seguridad de Cloud Storage. - Usa los comandos
pgBackRest
para verificar que se pueda acceder a las copias de seguridad de origen. - Usa los comandos
pgBackRest
para restablecer la copia de seguridad en el servidor de destino.
Antes de comenzar
- Acceso a la ruta de acceso completa del bucket de Cloud Storage en el que reside la copia de seguridad del clúster de la base de datos de origen Esta es la misma ruta que usaste cuando creaste el recurso
BackupPlan
para tu clúster de base de datos de origen. - Se crea un clúster de base de datos de AlloyDB Omni de destino de un solo servidor. Para obtener más información sobre cómo instalar AlloyDB Omni en Kubernetes, consulta Cómo instalar AlloyDB Omni.
- Asegúrate de haber accedido a la base de datos como el usuario
postgres
.
Configura el archivo pgBackRest
en el servidor de destino
Configura el archivo pgBackRest
para permitir que el clúster de base de datos de destino acceda al bucket de Cloud Storage en el que residen las copias de seguridad de origen.
En el servidor de destino, navega al directorio
alloydb-data
.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
Reemplaza lo siguiente:
- GCS_SOURCE_BACKUP_BUCKET_NAME: Es el nombre del bucket
pgBackRest
de Cloud Storage que creaste en el clúster de la base de datos de origen. Esta no es la URL completa del bucket. No agregues el prefijogs://
al nombre del bucket. - GCS_SOURCE_BACKUP_BUCKET_PATH: Es la ruta de acceso 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 la base de datos de origen. La ruta de acceso debe ser absoluta y comenzar con
/
.
El
repo1-gcs-key-type
se establece enauto
para usar la cuenta de servicio de la instancia. Para obtener más información sobre otras opciones, consulta Opción de tipo de clave del repositorio de GCS.- GCS_SOURCE_BACKUP_BUCKET_NAME: Es el nombre del bucket
Verifica las copias de seguridad de origen en el servidor de destino
Accede al servidor de destino y ejecuta los comandos pgBackRest
para verificar que se pueda 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
Reemplaza CONTAINER_NAME
por el nombre de un nuevo contenedor de AlloyDB Omni, por ejemplo, my-omni-1
.
A continuación, se muestra una respuesta de ejemplo:
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 restablecer la copia de seguridad completa o para restablecer desde un momento determinado de la ventana de recuperación.
Restablece la copia de seguridad en el servidor de destino
Después de identificar la copia de seguridad o el punto en el que deseas restablecer, ejecuta los comandos pgBackRest
en el servidor de destino. Para obtener más información sobre estos comandos, consulta el comando de restauración.
Los siguientes son algunos comandos de restablecimiento de pgBackRest
de ejemplo:
Restablecer 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
Restablecer desde un punto determinado
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
Cómo copiar datos en el servidor de destino
Una vez que el comando de restablecimiento se complete correctamente, puedes copiar los datos del directorio temporal /mnt/disks/pgsql/data-restored
al directorio /alloydb-data/data
actual.
- En el servidor de destino, detén el servicio de base de datos:
Docker
docker stop CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
Como práctica recomendada, cambia el nombre del directorio de datos actual a otro:
mv ~/alloydb-data/data ~/alloydb-data/data-old
Cambia el nombre del directorio temporal
data-restored
al directorio de datos actual:mv ~/alloydb-data/data-restored ~/alloydb-data/data
Actualiza el valor
pg1-path
en el archivopostgresql.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'
En el servidor de destino, inicia el servicio de base de datos:
Docker
docker start CONTAINER_NAME
Podman
podman start CONTAINER_NAME
Después de que se inicie el servicio de la base de datos, puedes conectarte a la instancia principal y ejecutar consultas para verificar que los datos se restablezcan desde la copia de seguridad. Para obtener más información, consulta Cómo conectarse a AlloyDB Omni en un solo servidor.