Cómo restablecer un clúster de AlloyDB Omni con pgBackRest

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

Debido a que AlloyDB Omni es compatible con PostgreSQL, los comandos y las técnicas de restablecimiento 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 comunes, con ejemplos de comandos relevantes.

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

Para obtener información basada en Kubernetes, consulta Cómo crear copias de seguridad y restablecer en Kubernetes.

Antes de comenzar

Antes de restablecer un clúster de AlloyDB Omni, asegúrate de tener lo siguiente:

  • Configura pgBackRest para tu instancia de AlloyDB Omni.

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

  • La misma versión principal de AlloyDB Omni que se usa para el contenedor de restauración que el contenedor de origen original

    Para verificar 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();"
    

    Reemplaza la siguiente variable:

    • CONTAINER_NAME: Es el nombre que usaste para tu contenedor. Por ejemplo, my-omni-1.

    Para verificar la 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
    

    Reemplaza la siguiente variable:

    • CONTAINER_NAME: Es el nombre que usaste para tu contenedor. Por ejemplo, my-omni-1.

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

Detén tu contenedor de AlloyDB Omni

Para simular que el clúster de bases 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

Reemplaza la siguiente variable:

  • CONTAINER_NAME: Es el nombre que usaste para tu contenedor. Por ejemplo, my-omni-1.

Crea un contenedor inactivo 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 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

Reemplaza las siguientes variables:

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

Cómo quitar tu directorio de datos

Para borrar el clúster de bases de datos de AlloyDB Omni, quita 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/*"

Reemplaza la siguiente variable:

  • CONTAINER_NAME: Es el nombre que usaste para tu contenedor. Por ejemplo, my-omni-1.

Valida 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

Reemplaza las siguientes variables:

  • CONTAINER_NAME: Es el nombre que usaste para tu contenedor. Por ejemplo, my-omni-1.
  • STANZA_NAME: Es el nombre de la estrofa que creaste. Por ejemplo, my-stanza

Restablece la 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

Reemplaza las siguientes variables:

  • CONTAINER_NAME: Es el nombre que usaste para tu contenedor. Por ejemplo, my-omni-1.
  • STANZA_NAME: Es el nombre de la estrofa que creaste. Por ejemplo, my-stanza

Quita el contenedor inactivo de AlloyDB Omni

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

Reemplaza la siguiente variable:

  • CONTAINER_NAME: Es el nombre que usaste para tu contenedor. Por ejemplo, my-omni-1.

Crea 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

Reemplaza las siguientes variables:

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

Valida que se haya iniciado AlloyDB Omni

Docker

docker logs -f CONTAINER_NAME

Docker

docker logs -f CONTAINER_NAME

Podman

podman logs -f CONTAINER_NAME

Podman

podman logs -f CONTAINER_NAME

Reemplaza la siguiente variable:

  • CONTAINER_NAME: Es el nombre que usaste para tu contenedor. Por ejemplo, my-omni-1.

Otras opciones

El comando restore de pgBackRest es muy flexible, con un conjunto de opciones y funciones que puedes controlar pasando diferentes opciones de línea de comandos. Para obtener una guía completa sobre cómo realizar restablecimientos, consulta Restablece.