Os passos nesta página partem do princípio de que o cluster da base de dados Kubernetes de origem é criado no Google Kubernetes Engine e que os discos de cópia de segurança são discos persistentes do Compute Engine. Também pressupõe que o servidor único do AlloyDB Omni de destino está instalado numa máquina virtual (VM) do Compute Engine.
Se usar outros ambientes, consulte a documentação respetiva para replicar estes passos no seu ambiente.
O fluxo de trabalho seguinte explica os passos de clonagem:
- Identifique as informações do disco de cópia de segurança, como o nome do volume persistente e o controlador do disco persistente do Compute Engine, para o disco de cópia de segurança do cluster da base de dados de origem.
- Monte o disco de cópia de segurança do cluster da base de dados de origem no servidor de destino.
- 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 cluster da base de dados de destino.
Antes de começar
- Certifique-se de que tem acesso ao disco de cópia de segurança onde está armazenada a cópia de segurança do 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
.
Obtenha informações do disco de cópia de segurança de origem
Como parte do processo de restauro, determine o nome da reivindicação de volume persistente (PVC) do disco de cópia de segurança para o cluster da base de dados de origem. Os PVCs são usados no Kubernetes para gerir o armazenamento persistente de aplicações.
Os seguintes comandos de exemplo ajudam a determinar o nome do PV subjacente e o controlador do disco persistente do Compute Engine através do nome do PVC do disco de cópia de segurança.
Faça a ligação ao cluster do GKE onde criou o cluster da base de dados de origem do AlloyDB Omni:
kubectl get pvc -n DB_CLUSTER_NAMESPACE | grep DB_CLUSTER_NAME | grep backupdisk
Substitua o seguinte:
DB_CLUSTER_NAMESPACE
: o namespace do Kubernetes para esta cópia de segurança. Tem de corresponder ao espaço de nomes do cluster da base de dados.DB_CLUSTER_NAME
: o nome deste cluster de base de dados, por exemplo,my-db-cluster
.
Segue-se a resposta de exemplo.
backupdisk-al-fe8c-dbcluster-sample-0 Bound pvc-36d8f05d-ef1a-4750-ac01-9bb330c15b3a 10Gi RWO standard-rwo 5d21h ```
Use o nome do disco de cópia de segurança do passo anterior, por exemplo,
backupdisk-al-fe8c-dbcluster-sample-0
, para encontrar o nome do volume físico subjacente:kubectl get pvc/PVC_NAME -n DB_CLUSTER_NAMESPACE -o jsonpath={.spec.volumeName}
Substitua o seguinte:
PVC_NAME
: o nome do PVC do disco de cópia de segurança da resposta no passo anterior, por exemplo,backupdisk-al-fe8c-dbcluster-sample-0
.
Encontre o controlador do disco persistente do Compute Engine subjacente:
kubectl get pv/$PV_NAME -o json | jq -r .spec.csi.volumeHandle
Substitua o seguinte:
PV_NAME
: o nome do volume físico do disco de cópia de segurança da resposta no passo anterior.
Segue-se a resposta de exemplo:
projects/my-project/zones/us-central1-a/disks/pvc-89f91fba-6cd2-4bfa-84ed-cb5969b446c3
Exporte o nome do disco de cópia de segurança como uma variável usada nas secções seguintes:
export BACKUP_DISK=pvc-89f91fba-6cd2-4bfa-84ed-cb5969b446c3
Monte o disco de cópia de segurança no servidor de destino
Partindo do princípio de que o servidor de destino é um servidor AlloyDB Omni instalado numa máquina virtual do Compute Engine, monte o disco de cópia de segurança 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 o seguinte:
GCE_INSTANCE_NAME
: o nome da instância onde o servidor de destino está instalado na máquina virtual do Compute Engine.GCE_ZONE
: a zona onde existe a sua instância de máquina virtual do Compute Engine.
Monte o disco de cópia de segurança no servidor de destino:
lsblk mkdir -p /mnt/disks/backupdisk mount -o discard,defaults /dev/sdb /mnt/disks/backupdisk
Adicione uma montagem de ligação personalizada ao ficheiro
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 associações no Docker, consulte o artigo Montagens de associações.
Reinicie o servidor de destino:
alloydb database-server stop alloydb database-server start
Atualize o ficheiro de configuração pgBackRest
Atualize o ficheiro pgBackRest
existente no diretório do disco de cópia de segurança com o novo caminho do repositório.
No servidor de destino, aceda ao diretório
/mnt/disks/backupdisk
:cd /mnt/disks/backupdisk
Atualize o caminho
pg1-path
para um diretório temporário no ficheiropgbackrest.conf
para evitar substituir os dados existentes. O diretóriodata-restored
é criado automaticamente como parte do processo de restauro: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 ficheiropgbackrest.conf
:sudo sed -i 's|.*repo1-path.*|repo1-path=/mnt/disks/backups/repo|' conf.d/repo1-local-backupplan.conf
Valide as cópias de segurança de origem no cluster da base de dados 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:
sudo docker exec pg-service pgbackrest --config-path=/mnt/disks/backups --stanza=db --repo=1 info
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 ponto específico no tempo 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/backups --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/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
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 temporário data-restored
para o diretório de dados do AlloyDB atual.
No servidor de destino, pare o serviço de base de dados:
alloydb database-server stop
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:
alloydb database-server start
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.