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

Selecione uma versão da documentação:

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 é possível acessar os backups de origem.
  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á localizado. Esse é o mesmo caminho usado quando você criou o recurso BackupPlan para o cluster do banco de dados de origem.
  • Um cluster de banco de dados de destino do AlloyDB Omni de 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 em que os backups de origem estão localizados.

  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 criado no cluster de banco de dados de origem. Esse não é o URL completo do bucket. Não coloque 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, dentro dobucket do Cloud Storagege 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.

Confira 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 momento específico para restauração, execute os comandos pgBackRest no servidor de destino. Para mais informações sobre esses comandos, consulte Comando Restore.

Confira alguns exemplos de comandos de restauração do 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, copie 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. Renomeie o diretório de dados atual para outro nome como prática recomendada:

      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 de 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