Per informazioni basate su Kubernetes, consulta Backup e ripristino in Kubernetes.
Per ulteriori informazioni su pgBackRest, consulta la guida dell'utente.
Prima di iniziare
Prima di configurare AlloyDB Omni per l'utilizzo con pgBackRest, completa i seguenti prerequisiti:
- Installa ed esegui AlloyDB Omni su un server che controlli.
- Configura l'archiviazione permanente dei dati per l'istanza AlloyDB Omni.
Configurazione di base con backup locali
I passaggi descritti in questa sezione ti guidano attraverso una configurazione di base di pgBackRest. Le configurazioni di base non abilitano i backup in base a una pianificazione. Per ulteriori informazioni, vedi Configurare i backup pianificati.
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.
Montare un volume di backup nel container
Per motivi organizzativi, ti consigliamo vivamente di creare e montare un volume separato per i backup di pgBackRest. Per configurare un nuovo volume, completa i seguenti passaggi:
- Se il container è in esecuzione, arrestalo e rimuovilo. - Docker- docker stop CONTAINER_NAME- docker rm CONTAINER_NAME- Docker- docker stop CONTAINER_NAME- docker rm CONTAINER_NAME- Podman- podman stop CONTAINER_NAME- podman rm CONTAINER_NAME- Podman- podman stop CONTAINER_NAME- podman rm CONTAINER_NAME- Sostituisci la seguente variabile: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
- Crea una directory di backup nel file system del container. - Docker- mkdir -p BACKUP_DIR - Docker- mkdir -p BACKUP_DIR - Podman- mkdir -p BACKUP_DIR - Podman- mkdir -p BACKUP_DIR - Sostituisci la seguente variabile: - BACKUP_DIR: la directory host in cui verranno archiviati i backup.
 
- Ricrea il container con il nuovo volume di backup. - Docker- docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest - Docker- docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest - Podman- podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest - Podman- podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest - Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
- NEW_PASSWORD: password assegnata all'utente- postgresdel nuovo contenitore dopo la sua creazione. Tieni presente che- NEW_PASSWORDimposterà una nuova password solo quando- DATA_DIRè una nuova posizione.
- DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
- DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
- BACKUP_DIR: la directory host in cui verranno archiviati i backup.
- HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta- 5432. Per utilizzare anche la porta predefinita di PostgreSQL sulla macchina host, specifica- 5432.
 
- Rendi leggibile la directory dei backup nel container da - postgres.- Docker- docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups - Docker- docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups - Podman- podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups - Podman- podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups - Sostituisci la seguente variabile: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
Configura backup locali
pgBackRest crea sottodirectory per ogni backup eseguito e include un file manifest in testo normale.
pgBackRest utilizza il termine stanza per fare riferimento alla configurazione di un cluster di database PostgreSQL. Il nome della sezione è arbitrario e non deve corrispondere al server host, al cluster PostgreSQL o al nome del database. La documentazione di pgBackRest suggerisce di denominare la stanza in base alla funzione del cluster.
Il repository è la posizione in cui vengono scritti i backup. pgBackRest supporta la scrittura in più
di un repository in una determinata stanza. La maggior parte dei parametri di configurazione correlati ai repository viene indicizzata con un valore numerico. Ad esempio, repo1-. Anche i parametri
relativi ai cluster PostgreSQL vengono indicizzati in modo indipendente. Ad esempio,
pg1-.
pgBackRest utilizza un file di configurazione denominato pgbackrest.conf per contenere
i parametri globali e specifici della stanza.
Per creare e inizializzare un file di configurazione per il backup del cluster AlloyDB Omni, crea il file pgbackrest.conf nella directory dei backup lato host creata in Monta un volume di backup sul container.
[global]
# Paths (all mandatory):
repo1-path=/var/lib/postgresql/backups
spool-path=/var/lib/postgresql/backups/spool
lock-path=/var/lib/postgresql/backups
# 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/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=/tmp
pg1-path=/var/lib/postgresql/data
Alcuni parametri sono obbligatori, ma altri possono essere modificati per soddisfare requisiti specifici se necessario, ad esempio:
- repo1-path: Posizione della directory in cui vengono scritti i backup. Ti consigliamo una posizione visibile sia al server host sia al container.
- log-path: Posizione della directory in cui vengono scritti i file di log. Se vuoi scrivere i file di log in una posizione separata, non insieme ai backup, modifica questo parametro.
- repo1-retention-full: Numero di backup completi da conservare.
- repo1-retention-full-type: Indica se la conservazione viene misurata in base al conteggio o al periodo di tempo (giorni).
- repo1-retention-diff: Numero di backup differenziali da conservare.
Altre impostazioni dei parametri non critiche, ma consigliate, compatibili con AlloyDB Omni nel file di configurazione includono quanto segue:
- log-level-console: Livello di logging scritto sullo schermo (STDOUT) durante l'esecuzione dei comandi pgBackup. Puoi modificare questo valore in base alle tue esigenze nel file di configurazione o sostituirlo con l'argomento della riga di comando- --log-level-console. Il valore predefinito è- warn.
- start-fast: Forza un checkpoint per avviare rapidamente i backup. Il valore predefinito è- n.
- archive-async: Esegui il push dei file di segmento WAL in modo asincrono per migliorare le prestazioni. Il valore predefinito è- n.
- process-max: Numero massimo di processi da utilizzare per la compressione e il trasferimento. In genere è impostato su- max_cpu/4su un cluster primario o su- max_cpu/2su un cluster di standby. Il valore predefinito è- 1.
- compress-type: Algoritmo di compressione da utilizzare. Il valore predefinito è- gz.
Esistono molti altri parametri di configurazione di pgBackRest che possono essere modificati. Questa documentazione copre solo i parametri obbligatori per la configurazione AlloyDB Omni predefinita e alcune impostazioni dei parametri consigliate. Per l'elenco completo dei parametri di configurazione, consulta la guida di riferimento alla configurazione di pgBackRest nella documentazione online.
Dopo aver configurato pgBackRest, i repository di destinazione in cui vengono scritti i backup devono essere inizializzati creando la stanza, che utilizza i parametri impostati nel file di configurazione.
Per configurare il database per i backup:
- Crea la sezione utilizzando il comando - stanza-create.- Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create - Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
- Configura il database per i backup. - Docker- docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;" - Docker- docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;" - Podman- podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;" - Podman- podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;" - Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
- Riavvia il contenitore. - Docker- docker restart CONTAINER_NAME - Docker- docker restart CONTAINER_NAME - Podman- podman restart CONTAINER_NAME - Podman- podman restart CONTAINER_NAME - Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
- Convalida la configurazione del backup. - Docker- docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"- Docker- docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"- Podman- podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"- Podman- podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"- Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
- Esegui un controllo pgBackRest. - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check - Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
Eseguire un backup
- Esegui un backup completo. - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup - Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
- Esegui un backup differenziale. - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup - Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
- Segnala backup. - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info - Sostituisci le seguenti variabili: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
Configura backup pianificati
Per configurare i backup pianificati, crea un cron job che esegua il comando pgbackrest backup
con la frequenza necessaria. Per ulteriori informazioni, vedi
Pianificare un backup.
Configurazione personalizzata e backup remoti
Una volta configurata la configurazione di base, puoi ottimizzare il file di configurazione in base alle tue esigenze e preferenze utilizzando le opzioni documentate nella guida di riferimento alla configurazione di pgBackRest.
Ciò include la specifica di repository di backup aggiuntivi che si trovano su macchine remote o nel cloud. Se definisci più repository, pgBackRest scrive simultaneamente in tutti come azione di backup predefinita.
Ad esempio, pgBackRest supporta l'utilizzo di un bucket Cloud Storage come repository di backup, con diverse opzioni di configurazione correlate. La sezione seguente mostra un modo per utilizzare queste opzioni.
Una configurazione di esempio che utilizza Cloud Storage
I passaggi di questa sezione si basano sul file di configurazione introdotto in Configurazione di base con 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 l'esecuzione di un cluster AlloyDB Omni su un'istanza VM di Compute Engine. Se non esegui AlloyDB Omni su un'istanza VM di Compute Engine, puoi comunque eseguire il backup in un bucket Cloud Storage utilizzando un altro metodo di autenticazione, ad esempio una chiave del service account Google Cloud salvata nel file system locale.
Per estendere il file di configurazione precedente per definire un repository pgBackRest basato su Cloud Storage, segui questi passaggi:
- Configura le autorizzazioni del bucket per consentire al account di servizio collegato all'istanza VM di scrivere nel bucket. A questo scopo è necessario il ruolo IAM Utente oggetti Storage impostato su questo account di servizio. 
- Aggiungi queste righe alla sezione - [global]del 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=PATH_IN_BUCKET # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=count- Sostituisci la seguente variabile: - BUCKET_NAME: nome del bucket Cloud Storage in cui vuoi che pgBackRest memorizzi i backup.
- PATH_IN_BUCKET: percorso della directory nel bucket Cloud Storage in cui vuoi che pgBackRest memorizzi i backup.
 
- Inizializza la posizione di backup basata sul cloud utilizzando il comando - pgbackrest stanza-create:- Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create - Docker- docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create - Podman- podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create - Sostituisci la seguente variabile: - CONTAINER_NAME: il nome che hai utilizzato per il container.
 
Dopo aver inizializzato il repository di backup nel bucket Cloud Storage
utilizzando il comando pgbackrest stanza-create, pgBackRest può eseguire il backup in due
posizioni:
- Posizione nel file system locale, definita altrove nel file di configurazione come - repo1-path. Questa è la posizione predefinita quando- --reponon è specificato nel comando- pgbackrest.
- Bucket Cloud Storage, definito utilizzando le direttive di configurazione - repo2-gcs-bucketconfigurate in questo esempio. Per utilizzare il bucket Cloud Storage, specifica- --repo=2nel comando- pgbackrest.