Restaure um cluster do AlloyDB Omni com o pgBackRest

Selecione uma versão da documentação:

Esta página mostra-lhe como restaurar um cluster do AlloyDB Omni através de uma cópia de segurança criada com o pgBackRest, a solução de cópia de segurança de código aberto incluída no contentor do AlloyDB Omni.

Uma vez que o AlloyDB Omni é compatível com o PostgreSQL, os comandos e as técnicas de restauro de dados descritos no manual do pgBackRest também se aplicam ao AlloyDB Omni. Esta página demonstra uma seleção de tarefas de recuperação comuns, com exemplos de comandos relevantes.

Para mais informações sobre a configuração do pgBackRest para funcionar com o AlloyDB Omni, consulte o artigo Configure o pgBackRest para o AlloyDB Omni.

Para informações baseadas no Kubernetes, consulte o artigo Faça uma cópia de segurança e restaure no Kubernetes.

Antes de começar

Antes de restaurar um cluster do AlloyDB Omni, certifique-se de que tem o seguinte:

  • Configurou o pgBackRest para a sua instância do AlloyDB Omni.

  • Espaço em disco suficiente no sistema de ficheiros de destino para armazenar o cluster de base de dados do AlloyDB Omni restaurado.

  • A mesma versão principal do AlloyDB Omni usada para o contentor de restauro que o contentor de origem original.

    Para verificar a sua versão do PostgreSQL, execute o seguinte 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();"
    

    Substitua a seguinte variável:

    • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.

    Para verificar a sua versão do pgBackRest, execute o seguinte 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
    

    Substitua a seguinte variável:

    • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.

    Se o contentor de destino tiver uma versão diferente do PostgreSQL, do pgBackRest ou de ambos, tem de criar um novo contentor de destino com uma versão correspondente. Se isto não for possível, tem de usar um método alternativo, como as utilidades pg_dump ou pg_dumpall incluídas no PostgreSQL, para copiar as bases de dados entre versões.

Pare o contentor do AlloyDB Omni

Para simular que o cluster de base de dados do AlloyDB Omni não está disponível, pare o contentor.

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

Substitua a seguinte variável:

  • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.

Crie um contentor do AlloyDB Omni inativo

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

Substitua as seguintes variáveis:

  • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.
  • DATA_DIR: caminho do diretório do anfitrião onde os seus dados estão armazenados.
  • BACKUP_DIR: caminho do diretório externo onde as suas cópias de segurança estão armazenadas.
  • HOST_PORT: porta TCP na máquina anfitriã para a qual o contentor deve publicar a sua própria porta 5432. Para usar a porta predefinida do PostgreSQL também na máquina anfitriã, especifique 5432.

Remova o diretório de dados

Para limpar o cluster de base de dados do AlloyDB Omni, remova o diretório de dados.

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/*"

Substitua a seguinte variável:

  • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.

Valide se as suas cópias de segurança estão visíveis

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

Substitua as seguintes variáveis:

  • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.
  • STANZA_NAME: nome da estrofe que criou. Por exemplo, my-stanza.

Restaure a sua cópia de segurança

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

Substitua as seguintes variáveis:

  • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.
  • STANZA_NAME: nome da estrofe que criou. Por exemplo, my-stanza.

Remova o contentor AlloyDB Omni inativo

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

Substitua a seguinte variável:

  • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.

Crie um contentor do 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

Substitua as seguintes variáveis:

  • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.
  • DATA_DIR: caminho do diretório do anfitrião onde os seus dados estão armazenados.
  • BACKUP_DIR: caminho do diretório externo onde as suas cópias de segurança estão armazenadas.
  • HOST_PORT: porta TCP na máquina anfitriã para a qual o contentor deve publicar a sua própria porta 5432. Para usar a porta predefinida do PostgreSQL também na máquina anfitriã, especifique 5432.

Valide se o AlloyDB Omni foi 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

Substitua a seguinte variável:

  • CONTAINER_NAME: nome que usou para o seu contentor. Por exemplo, my-omni-1.

Outras opções

O comando restore pgBackRest é muito flexível, com uma variedade de opções e funcionalidades que pode controlar através da transmissão de diferentes opções da linha de comandos. Para um guia completo sobre como fazer restauros, consulte o artigo Restaurar.