Restaurar un clúster de AlloyDB Omni con pgBackRest

Selecciona una versión de la documentación:

En esta página se explica cómo restaurar un clúster de AlloyDB Omni mediante una copia de seguridad creada con pgBackRest, la solución de copia de seguridad de código abierto incluida en el contenedor de AlloyDB Omni.

Como AlloyDB Omni es compatible con PostgreSQL, los comandos y las técnicas de restauración de datos que se describen en el manual de pgBackRest también se aplican a AlloyDB Omni. En esta página se muestra una selección de tareas de recuperación habituales, con ejemplos de comandos relevantes.

Para obtener más información sobre cómo configurar pgBackRest para que funcione con AlloyDB Omni, consulta Configurar pgBackRest para AlloyDB Omni.

Para obtener información sobre Kubernetes, consulta Crear copias de seguridad y restaurar en Kubernetes.

Antes de empezar

Antes de restaurar un clúster de AlloyDB Omni, asegúrate de que tienes lo siguiente:

  • Configura pgBackRest en tu instancia de AlloyDB Omni.

  • Espacio en disco suficiente en el sistema de archivos de destino para almacenar el clúster de base de datos de AlloyDB Omni restaurado.

  • El contenedor de restauración usa la misma versión principal de AlloyDB Omni que el contenedor de origen original.

    Para comprobar tu versión de PostgreSQL, ejecuta el siguiente comando:

    Docker

    docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Docker

    docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Podman

    podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Podman

    podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Sustituye la siguiente variable:

    • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.

    Para comprobar tu versión de pgBackRest, ejecuta el siguiente comando:

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest version
    

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest version
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest version
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest version
    

    Sustituye la siguiente variable:

    • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.

    Si el contenedor de destino tiene una versión diferente de PostgreSQL, pgBackRest o ambos, debes crear un contenedor de destino con una versión coincidente. Si no es posible, debes usar otro método, como las utilidades pg_dump o pg_dumpall incluidas en PostgreSQL, para copiar tus bases de datos entre versiones.

Detener el contenedor de AlloyDB Omni

Para simular que tu clúster de base de datos de AlloyDB Omni no está disponible, detén el contenedor.

Docker

docker stop CONTAINER_NAME
docker rm CONTAINER_NAME

Docker

docker stop CONTAINER_NAME
docker rm CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
podman rm CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
podman rm CONTAINER_NAME

Sustituye la siguiente variable:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.

Crear un contenedor de AlloyDB Omni inactivo

Docker

docker run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest sleep infinity

Docker

docker run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest sleep infinity

Podman

podman run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest sleep infinity

Podman

podman run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest sleep infinity

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.
  • DATA_DIR: ruta del directorio de host en el que se almacenan tus datos.
  • BACKUP_DIR: ruta del directorio externo en el que se almacenan tus copias de seguridad.
  • HOST_PORT: puerto TCP de la máquina host al que debe publicar su propio puerto 5432 el contenedor. Para usar el puerto predeterminado de PostgreSQL en la máquina host, especifica 5432.

Eliminar tu directorio de datos

Para borrar tu clúster de base de datos de AlloyDB Omni, elimina el directorio de datos.

Docker

docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"

Docker

docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"

Podman

podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"

Podman

podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"

Sustituye la siguiente variable:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.

Validar que tus copias de seguridad sean visibles

Docker

docker exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
info

Docker

docker exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
info

Podman

podman exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
info

Podman

podman exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
info

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.
  • STANZA_NAME: nombre de la estrofa que has creado. Por ejemplo, my-stanza.

Restaurar tu copia de seguridad

Docker

docker exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
restore

Docker

docker exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
restore

Podman

podman exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
restore

Podman

podman exec -u postgres CONTAINER_NAME pgbackrest \
--config-path=/var/lib/postgresql/backups \
--stanza=STANZA_NAME \
restore

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.
  • STANZA_NAME: nombre de la estrofa que has creado. Por ejemplo, my-stanza.

Eliminar un contenedor de AlloyDB Omni inactivo

Docker

docker kill CONTAINER_NAME
docker rm CONTAINER_NAME

Docker

docker kill CONTAINER_NAME
docker rm CONTAINER_NAME

Podman

podman kill CONTAINER_NAME
podman rm CONTAINER_NAME

Podman

podman kill CONTAINER_NAME
podman rm CONTAINER_NAME

Sustituye la siguiente variable:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.

Crear un contenedor de AlloyDB Omni

Docker

docker run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest

Docker

docker run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest

Podman

podman run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest

Podman

podman run -d --name CONTAINER_NAME \
-v DATA_DIR:/var/lib/postgresql/data \
-v BACKUP_DIR:/var/lib/postgresql/backups \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest

Sustituye las siguientes variables:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.
  • DATA_DIR: ruta del directorio de host en el que se almacenan tus datos.
  • BACKUP_DIR: ruta del directorio externo en el que se almacenan tus copias de seguridad.
  • HOST_PORT: puerto TCP de la máquina host al que debe publicar su propio puerto 5432 el contenedor. Para usar el puerto predeterminado de PostgreSQL en la máquina host, especifica 5432.

Validar que AlloyDB Omni se ha iniciado

Docker

docker logs -f CONTAINER_NAME

Docker

docker logs -f CONTAINER_NAME

Podman

podman logs -f CONTAINER_NAME

Podman

podman logs -f CONTAINER_NAME

Sustituye la siguiente variable:

  • CONTAINER_NAME: nombre que has usado para el contenedor. Por ejemplo, my-omni-1.

Otras opciones

El comando restore de pgBackRest es muy flexible y ofrece una gran variedad de opciones y funciones que puedes controlar mediante diferentes opciones de línea de comandos. Para obtener una guía completa sobre cómo realizar restauraciones, consulta Restaurar.