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:
- Configure o arquivo
pgbackrest.conf
para acessar o backup do Cloud Storage. - Use comandos
pgBackRest
para verificar se os backups de origem podem ser acessados. - 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.
No servidor de destino, navegue até o diretório
alloydb-data
.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 prefixogs://
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 comoauto
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.- GCS_SOURCE_BACKUP_BUCKET_NAME: o nome do bucket
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.
- No servidor de destino, interrompa o serviço de banco de dados:
Docker
docker stop CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
Como prática recomendada, renomeie o diretório de dados atual para outro nome:
mv ~/alloydb-data/data ~/alloydb-data/data-old
Renomeie o 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 arquivopostgresql.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 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.