Clone um cluster de base de dados num único servidor através de uma cópia de segurança do Cloud Storage

Selecione uma versão da documentação:

Esta página mostra como clonar um cluster de base de dados num único servidor através de uma cópia de segurança do Cloud Storage.

O fluxo de trabalho seguinte explica os passos de clonagem:

  1. Configure o ficheiro pgbackrest.conf para aceder à cópia de segurança do Cloud Storage.
  2. Use comandos pgBackRest para verificar se é possível aceder às cópias de segurança da origem.
  3. Use os comandos pgBackRest para restaurar a cópia de segurança no servidor de destino.

Antes de começar

  • Acesso ao caminho completo do contentor do Cloud Storage onde reside a cópia de segurança do cluster da base de dados de origem. Este é o mesmo caminho que usou quando criou o recurso BackupPlan para o cluster da base de dados de origem.
  • É criado um único cluster de base de dados AlloyDB Omni de destino do servidor. Para mais informações sobre a instalação do AlloyDB Omni no Kubernetes, consulte o artigo Instale o AlloyDB Omni.
  • Certifique-se de que tem sessão iniciada na base de dados como utilizador postgres.

Configure o ficheiro pgBackRest no servidor de destino

Configure o ficheiro pgBackRest para permitir que o cluster da base de dados de destino aceda ao contentor do Cloud Storage onde residem as cópias de segurança de origem.

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

  2. Crie um ficheiro de configuração pgBackRest para aceder às cópias de segurança armazenadas 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 o seguinte:

    • GCS_SOURCE_BACKUP_BUCKET_NAME: o nome do contentor do Cloud Storage pgBackRest que criou no cluster da base de dados de origem. Este não é o URL completo do contentor. Não adicione o prefixo gs:// ao nome do contentor.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: o caminho do diretório no qual o AlloyDB Omni Operator escreve as cópias de segurança, no contentor do Cloud Storage para o cluster de base de dados de origem. O caminho tem de ser absoluto, começando com /.

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

Valide as cópias de segurança de origem no servidor de destino

Inicie sessão no servidor de destino e execute comandos pgBackRest para verificar se as cópias de segurança do cluster da base 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 contentor do AlloyDB Omni, por exemplo, my-omni-1.

Segue-se 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

As indicações de tempo na resposta são usadas para restaurar a cópia de segurança completa ou para restaurar a partir de um momento específico da janela de recuperação.

Restaure a cópia de segurança no servidor de destino

Depois de identificar a cópia de segurança ou um ponto no tempo para o qual quer fazer o restauro, execute os comandos pgBackRest no servidor de destino. Para mais informações acerca destes comandos, consulte o artigo Comando Restore.

Seguem-se alguns exemplos de pgBackRest comandos de restauro:

  • Restauro a partir de cópia de segurança

    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 a partir de um momento específico

    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

Copie os dados para o servidor de destino

Depois de o comando de restauro ser concluído com êxito, pode copiar os dados do diretório /mnt/disks/pgsql/data-restored temporário para o diretório /alloydb-data/data atual.

  1. No servidor de destino, pare o serviço de base de dados:

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. Mude o nome do diretório de dados atual para outro nome como prática recomendada:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. Mude o nome do 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 ficheiro 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 base de dados:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

Depois de o serviço de base de dados ser iniciado, pode estabelecer ligação à instância principal e executar consultas para verificar se os dados foram restaurados a partir da cópia de segurança. Para mais informações, consulte o artigo Estabeleça ligação ao AlloyDB Omni num único servidor.

O que se segue?