Il seguente flusso di lavoro spiega i passaggi di clonazione:
- Configura il file
pgbackrest.conf
per accedere al backup di Cloud Storage. - Utilizza i comandi
pgBackRest
per verificare che sia possibile accedere ai backup delle origini. - Utilizza i comandi
pgBackRest
per ripristinare il backup sul server di destinazione.
Prima di iniziare
- Accesso al percorso completo del bucket Cloud Storage in cui si trova il backup del cluster di database di origine. Questo è lo stesso percorso che hai utilizzato quando hai creato la risorsa
BackupPlan
per il cluster di database di origine. - Viene creato un singolo cluster di database AlloyDB Omni di destinazione del server. Per saperne di più sull'installazione di AlloyDB Omni su Kubernetes, consulta Installa AlloyDB Omni.
- Assicurati di aver eseguito l'accesso al database come utente
postgres
.
Configura il file pgBackRest
sul server di destinazione
Configura il file pgBackRest
per consentire al cluster di database di destinazione di accedere al bucket Cloud Storage in cui si trovano i backup di origine.
Nel server di destinazione, vai alla directory
alloydb-data
.Crea un file di configurazione
pgBackRest
per accedere ai backup archiviati in 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
Sostituisci quanto segue:
- GCS_SOURCE_BACKUP_BUCKET_NAME: il nome del bucket Cloud Storage
pgBackRest
che hai creato nel cluster di database di origine. Questo non è l'URL completo del bucket; non aggiungere il prefissogs://
al nome del bucket. - GCS_SOURCE_BACKUP_BUCKET_PATH: il percorso della directory in cui l'operatore AlloyDB Omni scrive i backup all'interno del bucket Cloud Storage per il cluster di database di origine. Il percorso
deve essere assoluto e iniziare con
/
.
repo1-gcs-key-type
è impostato suauto
per utilizzare il account di servizio dell'istanza. Per saperne di più su altre opzioni, vedi Opzione Tipo di chiave repository GCS.- GCS_SOURCE_BACKUP_BUCKET_NAME: il nome del bucket Cloud Storage
Verifica i backup dell'origine nel server di destinazione
Accedi al server di destinazione ed esegui i comandi pgBackRest
per verificare che i backup del cluster di database di origine siano accessibili sul server di destinazione:
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
Sostituisci CONTAINER_NAME
con il nome di un nuovo container AlloyDB Omni, ad esempio my-omni-1
.
Di seguito è riportato un esempio di risposta:
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
I timestamp nella risposta vengono utilizzati per ripristinare il backup completo o per eseguire il ripristino da un momento specifico della finestra di recupero.
Ripristina il backup nel server di destinazione
Dopo aver identificato il backup o un momento specifico a cui eseguire il ripristino, esegui i comandi
pgBackRest
nel server di destinazione. Per ulteriori informazioni
su questi comandi, consulta Restore
Command.
Di seguito sono riportati alcuni comandi di ripristino di pgBackRest
di esempio:
Ripristina da un 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
Ripristina da un momento specifico
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
Copia i dati sul server di destinazione
Una volta completato correttamente il comando di ripristino, puoi copiare i dati dalla directory temporanea /mnt/disks/pgsql/data-restored
alla directory /alloydb-data/data
corrente.
- Nel server di destinazione, arresta il servizio di database:
Docker
docker stop CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
Rinomina la directory dei dati corrente con un altro nome come best practice:
mv ~/alloydb-data/data ~/alloydb-data/data-old
Rinomina la directory temporanea
data-restored
nella directory dei dati corrente:mv ~/alloydb-data/data-restored ~/alloydb-data/data
Aggiorna il valore
pg1-path
nel filepostgresql.auto.conf
per caricare i dati ripristinati:
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'
Nel server di destinazione, avvia il servizio di database:
Docker
docker start CONTAINER_NAME
Podman
podman start CONTAINER_NAME
Dopo l'avvio del servizio di database, puoi connetterti all'istanza principale ed eseguire query per verificare che i dati vengano ripristinati dal backup. Per saperne di più, consulta Connessione ad AlloyDB Omni su un singolo server.