Restaurar um cluster do AlloyDB Omni usando pgBackRest

Selecionar uma versão da documentação:

Nesta página, mostramos como restaurar um cluster do AlloyDB Omni usando um backup criado com pgBackRest, a solução de backup de código aberto incluída no AlloyDB Omni.

Como o AlloyDB Omni é compatível com o PostgreSQL, os comandos e as técnicas de restauração de dados descritos em o manual do pgBackRest também se aplicam ao AlloyDB Omni. Nesta página, demonstramos uma seleção de tarefas comuns de recuperação, com exemplos de comandos relevantes.

Os clusters ativados para TDE também oferecem suporte a backups e restaurações usando o pgBackRest. Para mais informações, consulte Criar um cluster ativado para TDE.

Para mais informações sobre como configurar o pgBackRest para trabalhar com o AlloyDB Omni, consulte Configurar o pgBackRest para o AlloyDB Omni.

Para informações sobre o Kubernetes, consulte Fazer backup e restauração no Kubernetes.

Antes de começar

Antes de restaurar um cluster do AlloyDB Omni, verifique se você tem o seguinte:

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

  • A mesma versão principal do AlloyDB Omni usada para a instância de banco de dados de restauração e a instância de banco de dados de origem original.

    Para verificar 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 usado para o contêiner. Por exemplo, my-omni-1.

    Para verificar 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 usado para o contêiner. Por exemplo, my-omni-1.

    Se o contêiner de destino tiver uma versão diferente do PostgreSQL, do pgBackRest ou de ambos, crie um novo contêiner de destino com uma versão correspondente. Se isso não for possível, use um método alternativo, como os utilitários pg_dump ou pg_dumpall incluídos no PostgreSQL , para copiar seus bancos de dados entre versões.

  • Interromper o contêiner do AlloyDB Omni

    Para simular a indisponibilidade do cluster de banco de dados do AlloyDB Omni, interrompa o contêiner.

    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 usado para o contêiner. Por exemplo, my-omni-1.

    Criar um contêiner inativo 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 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 usado para o contêiner. Por exemplo, my-omni-1.
    • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.
    • BACKUP_DIR: caminho do diretório externo em que os backups são armazenados.
    • HOST_PORT: porta TCP na máquina host em que o contêiner vai publicar a própria porta 5432. Para usar a porta padrão do PostgreSQL na máquina host também, especifique 5432.

    Remover o diretório de dados

    Para limpar o cluster de banco 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 usado para o contêiner. Por exemplo, my-omni-1.

    Validar se os backups 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 usado para o contêiner. Por exemplo, my-omni-1.
    • STANZA_NAME: nome da estrofe que você criou. Por exemplo, my-stanza.

    Restaurar o backup

    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 usado para o contêiner. Por exemplo, my-omni-1. * STANZA_NAME: nome da estrofe que você criou. Por exemplo, my-stanza.

    Remover um contêiner inativo do 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

    Substitua a seguinte variável:

    • CONTAINER_NAME: nome usado para o contêiner. Por exemplo, my-omni-1.

    Criar um contêiner 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 usado para o contêiner. Por exemplo, my-omni-1.
    • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.
    • BACKUP_DIR: caminho do diretório externo em que os backups são armazenados.
    • HOST_PORT: porta TCP na máquina host em que o contêiner vai publicar a própria porta 5432. Para usar a porta padrão do PostgreSQL na máquina host também, especifique 5432.

      Validar 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 usado para o contêiner. Por exemplo, my-omni-1.

      Outras opções

      O comando restore do pgBackRest é muito flexível, com uma variedade de opções e recursos que podem ser controlados transmitindo diferentes opções de linha de comando. Para um guia completo sobre como fazer restaurações, consulte Restauração.