Clonar um cluster de banco de dados em um único servidor usando um backup do Cloud Storage

Nesta página, mostramos como clonar um cluster de banco de dados em um único servidor usando um backup do Cloud Storage.

O fluxo de trabalho a seguir explica as etapas de clonagem:

  1. Configure o arquivo pgbackrest.conf para acessar o backup do Cloud Storage.
  2. Use comandos pgBackRest para verificar se os backups de origem podem ser acessados.
  3. Use comandos pgBackRest para restaurar o backup no servidor de destino.

Antes de começar

  • Acesso ao caminho completo do bucket do Cloud Storage em que o backup do cluster de banco de dados de origem está armazenado. Esse é o mesmo caminho usado ao criar o recurso BackupPlan para o cluster do banco de dados de origem.
  • Um cluster de banco de dados do AlloyDB Omni de destino do servidor único é criado. Para mais informações sobre como instalar o AlloyDB Omni no Kubernetes, consulte Instalar o AlloyDB Omni.
  • Verifique se você fez login no banco de dados como o usuário postgres.

Configurar o arquivo pgBackRest no servidor de destino

Configure o arquivo pgBackRest para permitir que o cluster de banco de dados de destino acesse o bucket do Cloud Storage onde os backups de origem estão armazenados.

  1. No servidor de destino, navegue até o diretório alloydb-data.

  2. Crie um arquivo de configuração pgBackRest para acessar os backups armazenados no Cloud Storage:

      $ cat << EOF > /backup/pgbackrest.conf
      [db]
      pg1-path=/mnt/disks/pgsql/data-restored
      pg1-socket-path=/tmp
      pg1-user=pgbackrest
      [global]
      log-path=/obs/pgbackrest
      log-level-file=info
      repo1-type=gcs
      repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME
      repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH
      repo1-storage-ca-file=/etc/ssl/certs/ca-certificates.crt
      repo1-retention-full=9999999
      repo1-gcs-key-type=auto

    Substitua:

    • GCS_SOURCE_BACKUP_BUCKET_NAME: o nome do bucket pgBackRest do Cloud Storage que você criou no cluster do banco de dados de origem. Esse não é o URL completo do bucket. Não use o prefixo gs:// no nome do bucket.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: o caminho do diretório em que o operador do AlloyDB Omni grava backups no bucket do Cloud Storage para o cluster de banco de dados de origem. O caminho precisa ser absoluto e começar com /.

    O repo1-gcs-key-type é definido como auto para usar a conta de serviço da instância. Para mais informações sobre outras opções, consulte Opção de tipo de chave do repositório do GCS.

Verificar os backups de origem no servidor de destino

Faça login no servidor de destino e execute comandos pgBackRest para verificar se os backups do cluster de banco de dados de origem estão acessíveis no servidor de destino:

Docker

sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Podman

sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Substitua CONTAINER_NAME pelo nome de um novo contêiner do AlloyDB Omni, por exemplo, my-omni-1.

Veja a seguir um exemplo de resposta:

    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

Os carimbos de data/hora na resposta são usados para restaurar o backup completo ou de um ponto no tempo da janela de recuperação.

Restaurar o backup no servidor de destino

Depois de identificar o backup ou um ponto no tempo para o qual você quer restaurar, execute comandos pgBackRest no servidor de destino. Para mais informações sobre esses comandos, consulte Restore Command.

Confira a seguir alguns exemplos de comandos de restauração pgBackRest:

  • Restaurar a partir de um backup

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
  • Restaurar de um momento

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info

Copiar dados para o servidor de destino

Depois que o comando de restauração for concluído, você poderá copiar os dados do diretório temporário /mnt/disks/pgsql/data-restored para o diretório /alloydb-data/data atual.

  1. No servidor de destino, interrompa o serviço de banco de dados:

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. Como prática recomendada, renomeie o diretório de dados atual para outro nome:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. Renomeie o diretório temporário data-restored para o diretório de dados atual:

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. Atualize o valor pg1-path no arquivo postgresql.auto.conf para carregar os dados 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'
  1. No servidor de destino, inicie o serviço de banco de dados:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

Depois que o serviço do banco de dados for iniciado, você poderá se conectar à instância principal e executar consultas para verificar se os dados foram restaurados do backup. Para mais informações, consulte Conectar-se ao AlloyDB Omni em um único servidor.

A seguir