Esta página mostra como clonar um cluster de banco de dados em um único servidor usando o backup local.
As etapas desta página presumem que o cluster de banco de dados do Kubernetes de origem foi criado no Google Kubernetes Engine e que os discos de backup são discos persistentes do Compute Engine. Também pressupõe que o servidor único do AlloyDB Omni de destino esteja instalado em uma máquina virtual (VM) do Compute Engine.
Se você usa outros ambientes, consulte a documentação correspondente para replicar essas etapas no seu ambiente.
O fluxo de trabalho a seguir explica as etapas de clonagem:
- Identifique as informações do disco de backup, como o nome do volume persistente e o gerenciador disco permanente do Compute Engine, para o disco de backup do cluster do banco de dados de origem.
- Monte o disco de backup do cluster de banco de dados de origem no servidor de destino.
- Use comandos
pgBackRest
para verificar se os backups de origem podem ser acessados. - Use comandos
pgBackRest
para restaurar o backup no cluster de banco de dados de destino.
Antes de começar
- Verifique se você tem acesso ao disco de backup em que o backup do cluster de banco de dados de origem está armazenado.
- 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
.
Receber informações do disco de backup de origem
Como parte do processo de restauração, determine o nome da declaração de volume permanente (PVC) do disco de backup para o cluster de banco de dados de origem. Os PVCs são usados no Kubernetes para gerenciar o armazenamento permanente de aplicativos.
Os comandos de exemplo a seguir ajudam a determinar o nome do PV e o gerenciador de disco permanente do Compute Engine usando o nome da PVC do disco de backup.
Conecte-se ao cluster do GKE em que você criou o cluster de banco de dados de origem do AlloyDB Omni:
kubectl get pvc -n DB_CLUSTER_NAMESPACE | grep DB_CLUSTER_NAME | grep backupdisk
Substitua:
DB_CLUSTER_NAMESPACE
: o namespace do Kubernetes para este backup. Ele precisa corresponder ao namespace do cluster do banco de dados.DB_CLUSTER_NAME
: o nome desse cluster de banco de dados, por exemplo,my-db-cluster
.
Confira a seguir um exemplo de resposta.
backupdisk-al-fe8c-dbcluster-sample-0 Bound pvc-36d8f05d-ef1a-4750-ac01-9bb330c15b3a 10Gi RWO standard-rwo 5d21h ```
Use o nome do disco de backup da etapa anterior, por exemplo,
backupdisk-al-fe8c-dbcluster-sample-0
, para encontrar o nome do PV:kubectl get pvc/PVC_NAME -n DB_CLUSTER_NAMESPACE -o jsonpath={.spec.volumeName}
Substitua:
PVC_NAME
: o nome do PVC do disco de backup da resposta na etapa anterior, por exemplo,backupdisk-al-fe8c-dbcluster-sample-0
.
Encontre o gerenciador de disco permanente do Compute Engine:
kubectl get pv/$PV_NAME -o json | jq -r .spec.csi.volumeHandle
Substitua:
PV_NAME
: o nome do PV do disco de backup da resposta na etapa anterior.
Confira a seguir um exemplo de resposta:
projects/my-project/zones/us-central1-a/disks/pvc-89f91fba-6cd2-4bfa-84ed-cb5969b446c3
Exporte o nome do disco de backup como uma variável usada nas próximas seções:
export BACKUP_DISK=pvc-89f91fba-6cd2-4bfa-84ed-cb5969b446c3
Monte o disco de backup no servidor de destino
Supondo que o servidor de destino seja um servidor AlloyDB Omni instalado em uma máquina virtual do Compute Engine, monte o disco de backup no servidor.
Execute o comando
gcloud compute instances attach-disk
para montar o disco:gcloud compute instances attach-disk GCE_INSTANCE_NAME \ --disk ${BACKUP_DISK} \ --zone=$GCE_ZONE
Substitua:
GCE_INSTANCE_NAME
: o nome da instância em que o servidor de destino está instalado na máquina virtual do Compute Engine.GCE_ZONE
: a zona em que a instância da máquina virtual do Compute Engine existe.
Monte o disco de backup no servidor de destino:
lsblk mkdir -p /mnt/disks/backupdisk mount -o discard,defaults /dev/sdb /mnt/disks/backupdisk
Adicione um bind mount personalizado ao arquivo
dataplane.conf
do AlloyDB Omni no diretório/var/alloydb/config
:PG_BIND_MOUNTS=/mnt/disks/backupdisk:/mnt/disks/backups:rshared
Para mais informações sobre as montagens de vinculação no Docker, consulte Montagens de vinculação.
- Reinicie o servidor de destino:
Docker
docker restart CONTAINER_NAME
Substitua CONTAINER_NAME
pelo nome de um novo contêiner do AlloyDB Omni, por exemplo, my-omni-1
.
Podman
podman restart CONTAINER_NAME
Substitua CONTAINER_NAME
pelo nome de um novo contêiner do AlloyDB Omni, por exemplo, my-omni-1
.
Atualizar o arquivo de configuração pgBackRest
Atualize o arquivo pgBackRest
no diretório de disco de backup com o novo caminho do repositório.
No servidor de destino, acesse o diretório
/mnt/disks/backupdisk
:cd /mnt/disks/backupdisk
Atualize o caminho
pg1-path
para um diretório temporário no arquivopgbackrest.conf
para evitar a substituição dos dados atuais. O diretóriodata-restored
é criado automaticamente como parte do processo de restauração:sudo sed -i 's|.*pg1-path.*|pg1-path=/mnt/disks/pgsql/data-restored|' pgbackrest.conf
Atualize o caminho
repo1-path
para um diretório temporário no arquivopgbackrest.conf
:sudo sed -i 's|.*repo1-path.*|repo1-path=/mnt/disks/backups/repo|' conf.d/repo1-local-backupplan.conf
Verificar backups de origem no cluster de banco de dados 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/backups --stanza=db --repo=1 info
Podman
sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/backups --stanza=db --repo=1 info
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/backups --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/backups --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, será possível copiar os dados do diretório temporário data-restored
para o diretório de dados atual do AlloyDB.
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.