En los pasos de esta página, se supone que el clúster de la base de datos de Kubernetes de origen se creó en Google Kubernetes Engine y que los discos de copia de seguridad son discos persistentes de Compute Engine. También se supone que el servidor único de AlloyDB Omni de destino está instalado en una máquina virtual (VM) de Compute Engine.
Si usas otros entornos, consulta la documentación correspondiente para replicar estos pasos en tu entorno.
En el siguiente flujo de trabajo, se explican los pasos de clonación:
- Identifica la información del disco de copia de seguridad, como el nombre del volumen persistente y el controlador del disco persistente de Compute Engine, para el disco de copia de seguridad del clúster de la base de datos de origen.
- Conecta el disco de copia de seguridad del clúster de la base de datos de origen al servidor de destino.
- Usa los comandos
pgBackRest
para verificar que se pueda acceder a las copias de seguridad de la fuente. - Usa los comandos
pgBackRest
para restablecer la copia de seguridad en el clúster de la base de datos de destino.
Antes de comenzar
- Asegúrate de tener acceso al disco de copia de seguridad en el que se almacena la copia de seguridad del clúster de la base de datos de origen.
- Se crea un clúster de base de datos de AlloyDB Omni de un solo servidor de destino. Si deseas obtener más información para 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
.
Obtén información del disco de copia de seguridad de origen
Como parte del proceso de restablecimiento, determina el nombre de la reclamación de volumen persistente (PVC) del disco de copia de seguridad para tu clúster de base de datos de origen. Los PVC se usan en Kubernetes para administrar el almacenamiento persistente de las aplicaciones.
Los siguientes comandos de muestra ayudan a determinar el nombre del PV subyacente y el controlador del disco persistente de Compute Engine con el nombre del PVC del disco de copia de seguridad.
Conéctate al clúster de GKE en el que creaste el clúster de base de datos fuente de AlloyDB Omni:
kubectl get pvc -n DB_CLUSTER_NAMESPACE | grep DB_CLUSTER_NAME | grep backupdisk
Reemplaza lo siguiente:
DB_CLUSTER_NAMESPACE
: Es el espacio de nombres de Kubernetes para esta copia de seguridad. Debe coincidir con el espacio de nombres del clúster de la base de datos.DB_CLUSTER_NAME
: Es el nombre de este clúster de base de datos, por ejemplo,my-db-cluster
.
A continuación, se muestra la respuesta de ejemplo.
backupdisk-al-fe8c-dbcluster-sample-0 Bound pvc-36d8f05d-ef1a-4750-ac01-9bb330c15b3a 10Gi RWO standard-rwo 5d21h ```
Usa el nombre del disco de copia de seguridad del paso anterior, por ejemplo,
backupdisk-al-fe8c-dbcluster-sample-0
, para encontrar el nombre del PV subyacente:kubectl get pvc/PVC_NAME -n DB_CLUSTER_NAMESPACE -o jsonpath={.spec.volumeName}
Reemplaza lo siguiente:
PVC_NAME
: Es el nombre del PVC del disco de copia de seguridad de la respuesta del paso anterior, por ejemplo,backupdisk-al-fe8c-dbcluster-sample-0
.
Busca el controlador subyacente del disco persistente de Compute Engine:
kubectl get pv/$PV_NAME -o json | jq -r .spec.csi.volumeHandle
Reemplaza lo siguiente:
PV_NAME
: Es el nombre del PV del disco de copia de seguridad de la respuesta del paso anterior.
A continuación, se muestra la respuesta de ejemplo:
projects/my-project/zones/us-central1-a/disks/pvc-89f91fba-6cd2-4bfa-84ed-cb5969b446c3
Exporta el nombre del disco de copia de seguridad como una variable que se usará en las próximas secciones:
export BACKUP_DISK=pvc-89f91fba-6cd2-4bfa-84ed-cb5969b446c3
Activa el disco de copia de seguridad en el servidor de destino
Suponiendo que el servidor de destino es un servidor de AlloyDB Omni instalado en una máquina virtual de Compute Engine, activa el disco de copia de seguridad en el servidor.
Ejecuta el comando
gcloud compute instances attach-disk
para activar el disco:gcloud compute instances attach-disk GCE_INSTANCE_NAME \ --disk ${BACKUP_DISK} \ --zone=$GCE_ZONE
Reemplaza lo siguiente:
GCE_INSTANCE_NAME
: Es el nombre de la instancia en la que está instalado tu servidor de destino en la máquina virtual de Compute Engine.GCE_ZONE
: Es la zona en la que existe tu instancia de máquina virtual de Compute Engine.
Activa el disco de copia de seguridad en el servidor de destino:
lsblk mkdir -p /mnt/disks/backupdisk mount -o discard,defaults /dev/sdb /mnt/disks/backupdisk
Agrega una vinculación de montaje personalizada al archivo
dataplane.conf
de AlloyDB Omni en el directorio/var/alloydb/config
:PG_BIND_MOUNTS=/mnt/disks/backupdisk:/mnt/disks/backups:rshared
Para obtener más información sobre las vinculaciones de montaje en Docker, consulta Vinculaciones de montaje.
- Reinicia el servidor de destino:
Docker
docker restart CONTAINER_NAME
Reemplaza CONTAINER_NAME
por el nombre de un nuevo contenedor de AlloyDB Omni, por ejemplo, my-omni-1
.
Podman
podman restart CONTAINER_NAME
Reemplaza CONTAINER_NAME
por el nombre de un nuevo contenedor de AlloyDB Omni, por ejemplo, my-omni-1
.
Actualiza el archivo de configuración pgBackRest
Actualiza el archivo pgBackRest
existente en el directorio del disco de copia de seguridad con la nueva ruta de acceso del repositorio.
En el servidor de destino, ve al directorio
/mnt/disks/backupdisk
:cd /mnt/disks/backupdisk
Actualiza la ruta de acceso
pg1-path
a un directorio temporal en el archivopgbackrest.conf
para evitar reemplazar los datos existentes. El directoriodata-restored
se crea automáticamente como parte del proceso de restablecimiento:sudo sed -i 's|.*pg1-path.*|pg1-path=/mnt/disks/pgsql/data-restored|' pgbackrest.conf
Actualiza la ruta de
repo1-path
a un directorio temporal en el archivopgbackrest.conf
:sudo sed -i 's|.*repo1-path.*|repo1-path=/mnt/disks/backups/repo|' conf.d/repo1-local-backupplan.conf
Verifica las copias de seguridad de origen en el clúster de la base de datos de destino
Accede al servidor de destino y ejecuta los comandos de 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/backups --stanza=db --repo=1 info
Podman
sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/backups --stanza=db --repo=1 info
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 del período de recuperación.
Restablece la copia de seguridad en el servidor de destino
Después de identificar la copia de seguridad o el momento al que deseas restablecer los datos, ejecuta los comandos de pgBackRest
en tu servidor de destino. Para obtener más información sobre estos comandos, consulta Comando Restore.
A continuación, se incluyen algunos ejemplos de comandos de restauración de pgBackRest
:
Restablecer copia de seguridad
pgbackrest --config-path=/mnt/disks/backups --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/backups --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info
Copia datos en el servidor de destino
Una vez que el comando de restablecimiento se complete correctamente, puedes copiar los datos del directorio temporal data-restored
al directorio de datos actual de AlloyDB.
En el servidor de destino, detén el servicio de base de datos:
Docker
docker stop CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
Se recomienda cambiar el nombre del directorio de datos actual por otro nombre:
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 de
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 hayan restablecido desde la copia de seguridad. Para obtener más información, consulta Conéctate a AlloyDB Omni en un solo servidor.