O fluxo de trabalho seguinte explica os passos de clonagem:
- Configure o ficheiro
pgbackrest.conf
para aceder à cópia de segurança do Cloud Storage. - Use comandos
pgBackRest
para verificar se é possível aceder às cópias de segurança da origem. - 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.
No servidor de destino, navegue para o diretório
alloydb-data
.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 prefixogs://
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 comoauto
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.- GCS_SOURCE_BACKUP_BUCKET_NAME: o nome do contentor do Cloud Storage
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.
- No servidor de destino, pare o serviço de base de dados:
Docker
docker stop CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
Mude o nome do diretório de dados atual para outro nome como prática recomendada:
mv ~/alloydb-data/data ~/alloydb-data/data-old
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
Atualize o valor
pg1-path
no ficheiropostgresql.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'
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.