Questa pagina mostra come proteggere i dati configurando AlloyDB Omni per il funzionamento con pgBackRest, un server di backup del database open source. Per una panoramica delle soluzioni di backup disponibili, consulta Eseguire il backup e il ripristino di AlloyDB Omni.
Per informazioni basate su Kubernetes, consulta Eseguire il backup e il ripristino in Kubernetes.
pgBackRest è un'utilità flessibile di backup e ripristino per PostgreSQL. Poiché AlloyDB Omni è compatibile con PostgreSQL, puoi utilizzare pgBackRest per proteggere i dati di AlloyDB Omni utilizzando backup manuali, pianificati e continui.
pgBackRest scrive i dati di backup in repository locali, remoti o basati su cloud. Dopo aver creato almeno un repository, puoi utilizzare pgBackRest per ripristinare i dati di AlloyDB Omni tramite vari metodi, incluso il recupero point-in-time (PITR).
AlloyDB Omni include pgBackRest nel proprio contenitore Docker. Ciò significa che puoi utilizzare pgBackRest per eseguire il backup e il ripristino dei dati di AlloyDB Omni senza dover installare alcun software aggiuntivo.
Per ulteriori informazioni su pgBackRest, consulta la guida dell'utente.
Prima di iniziare
Prima di configurare AlloyDB Omni per il funzionamento con pgBackRest, devi aver installato e avviato AlloyDB Omni su un server di tua proprietà.
Una nota sui percorsi del file system
Il software pgBackRest incluso in AlloyDB Omni viene eseguito nello stesso contenitore Docker di AlloyDB Omni. Per questo motivo, tutti i percorsi del file system che fornisci a pgBackRest tramite il relativo file di configurazione o come argomenti della riga di comando sono posizioni nel file system del container e non nel file system della macchina host.
Molti dei comandi e degli esempi in questa pagina fanno riferimento alla directory dei dati come /var/lib/postgresql/data
, indipendentemente dalla posizione della directory dei dati sul sistema host. Questo perché AlloyDB Omni monta la directory dei dati su /var/lib/postgresql/data
nel file system containerizzato. Di conseguenza,
puoi utilizzare la directory dei dati come posizione per archiviare la configurazione di pgBackRest
e i repository senza ulteriore configurazione.
Se vuoi configurare pgBackRest in container per leggere o scrivere in directory sul file system della tua macchina host al di fuori della directory dei dati di AlloyDB Omni, devi rendere queste directory disponibili per il contenitore.
Configurazione di base con i backup locali
I passaggi di questa sezione illustrano una configurazione di base di pgBackRest, incluso un breve file di configurazione che indica a pgBackRest di scrivere i dati di backup continuo in una sottodirectory della directory dei dati AlloyDB Omni.
Poiché pgBackRest è un prodotto di terze parti flessibile compatibile con AlloyDB Omni, puoi modificare uno qualsiasi di questi passaggi in base alle tue esigenze e preferenze. Se modifichi i percorsi del file system, ricorda che devono essere visibili al contenitore. consulta la nota sui percorsi del file system.
Configurare l'autenticazione Unix-socket attendibile
Consenti alla macchina host AlloyDB Omni di autenticare
l'utente postgres
del server di database senza richiedere una password. In questo modo, i passaggi successivi vengono semplificati.
Aggiungi la seguente riga al file
DATA_DIR/pg_hba.conf
:local all postgres trust
Sostituisci DATA_DIR con il percorso del file system della directory dei dati, ad esempio
/home/$USER/alloydb-data
.Riavviare AlloyDB Omni:
docker restart CONTAINER_NAME
Sostituisci
CONTAINER_NAME
con il nome assegnato al contenitore AlloyDB Omni durante l'installazione, ad esempiomy-omni
.
Creare e configurare un repository di backup
Il file di configurazione creato in questa sezione è un esempio che consente una configurazione minima per i backup continui archiviati localmente. Puoi modificare questo file in base alle tue esigenze. Per saperne di più, consulta Configurare la stanza del cluster.
Crea una sottodirectory
backups
nella directory dei dati di AlloyDB Omni:mkdir DATA_DIR/backups
Crea un file denominato
pgbackrest.conf
all'interno della directory dei dati e copia al suo interno quanto riportato di seguito:[global] # Paths (all mandatory): repo1-path=/var/lib/postgresql/data/backups spool-path=/var/lib/postgresql/data lock-path=/var/lib/postgresql/data # Retention details: repo1-retention-full=3 repo1-retention-full-type=count repo1-retention-diff=16 # Force a checkpoint to start backup immediately: start-fast=y # Logging parameters: log-path=/var/lib/postgresql/data/backups log-level-console=info log-level-file=info # Recommended ZSTD compression: compress-type=zst # Other performance parameters: archive-async=y archive-push-queue-max=1024MB archive-get-queue-max=256MB archive-missing-retry=y [global:archive-push] process-max=2 [global:archive-get] process-max=2 [omni] pg1-user=postgres pg1-socket-path=/var/lib/postgresql/data pg1-path=/var/lib/postgresql/data/data
Inizializza la posizione del backup utilizzando il comando
pgbackrest stanza-create
:docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create
Configura il database per i backup continui
Per attivare i backup continui, esegui il seguente comando per impostare diversi parametri PostgreSQL:
docker exec CONTAINER_NAME psql -h localhost -U postgres \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET archive_mode=on;" \ -c "ALTER SYSTEM SET max_wal_senders=10;" \ -c "ALTER SYSTEM SET wal_level=replica;"
Riavviare AlloyDB Omni:
docker restart CONTAINER_NAME
Esegui i comandi pgBackRest
Se completi i passaggi della sezione precedente, pgBackRest viene configurato per funzionare con il server AlloyDB Omni. Per controllare lo stato del backup, creare backup manuali ed eseguire altre attività, consulta la sezione Riferimento ai comandi.
Come best practice, esegui i comandi pgBackRest direttamente dalla macchina host su cui è installato il contenitore AlloyDB Omni utilizzando il comando docker exec
. Ad esempio, per creare un backup manuale, utilizza
il comando pgbackrest backup
. Modificalo in modo che venga eseguito all'interno di un comando docker
exec
e faccia riferimento al file di configurazione creato in precedenza:
docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backup
Puoi anche utilizzare le variabili di ambiente per impostare la posizione del file di configurazione pgBackRest. Per ulteriori informazioni, consulta Opzione Percorso configurazione.
Configurare i backup pianificati
Per configurare i backup pianificati, crea un cron job che esegua il comando pgbackrest backup
ogni volta che è necessario. Per ulteriori informazioni, vedi Pianificare un backup.
Configurazione personalizzata e backup da remoto
Dopo aver creato una configurazione di base funzionante, puoi ottimizzare il file di configurazione in base alle tue esigenze e preferenze utilizzando le opzioni descritte nel documento di riferimento sulla configurazione di pgBackRest.
Ciò include la specifica di repository di backup aggiuntivi situati su macchine remote o nel cloud. Se definisci più repository, pgBackRest scrive contemporaneamente in tutti come azione di backup predefinita.
Ad esempio, pgBackRest supporta l'utilizzo di un bucket Cloud Storage come repository di backup, con una serie di opzioni di configurazione correlate. La sezione seguente mostra un modo per utilizzare queste opzioni.
Un esempio di configurazione che utilizza Cloud Storage
I passaggi in questa sezione si basano sul file di configurazione introdotto in Configurazione di base con i backup locali. Queste modifiche al file definiscono un secondo repository di backup in un bucket Cloud Storage, a cui si accede tramite Identity and Access Management (IAM).
Lo stile di autenticazione automatica in questo esempio richiede che un cluster AlloyDB Omni venga eseguito su un'istanza VM Compute Engine. Se non esegui AlloyDB Omni su un'istanza VM Compute Engine, puoi comunque eseguire il backup in un bucket Cloud Storage utilizzando un altro metodo di autenticazione, ad esempio la chiave del service account Google Cloud salvata nel sistema file locale.
Per estendere il file di configurazione precedente in modo da definire un repository pgBackRest basato su Cloud Storage:
Configura le autorizzazioni del bucket per consentire all'account di servizio collegato all'istanza VM di scrivere nel bucket. Per farlo, è necessario impostare il ruolo IAM Utente oggetto archiviazione nell'account di servizio.
Aggiungi queste righe al file
pgbackrest.conf
:# Cloud Storage access details: repo2-type=gcs repo2-gcs-key-type=auto repo2-storage-verify-tls=n # Cloud Storage bucket and path details: repo2-gcs-bucket=BUCKET_NAME repo2-path=/pgbackrest # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=count
Sostituisci BUCKET_NAME con il nome del bucket Cloud Storage in cui vuoi che pgBackRest archivi i backup.
Inizializza la posizione del backup basato su cloud utilizzando il comando
pgbackrest stanza-create
:docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create
Dopo aver inizializzato il repository di backup nel bucket Cloud Storage
con il comando pgbackrest stanza-create
, pgBackRest esegue il backup in due posizioni:
La posizione nel file system locale, definita altrove nel file di configurazione come
repo1-path
.Il bucket Cloud Storage, definito utilizzando le direttive di configurazione
repo2-
impostate da questo esempio.