Configura pgBackRest per AlloyDB Omni

Seleziona una versione della documentazione:

Questa pagina mostra come proteggere i dati configurando AlloyDB Omni in modo che funzioni con pgBackRest, un server di backup di database open source. Per una panoramica delle soluzioni di backup disponibili, consulta Eseguire il backup e il ripristino di AlloyDB Omni.

pgBackRest è un'utilità di backup e ripristino flessibile 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 sul 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 suo container Docker. Ciò significa che puoi utilizzare pgBackRest per eseguire il backup e il ripristino dei dati di AlloyDB Omni senza dover installare software aggiuntivo.

Per ulteriori informazioni su pgBackRest, consulta la guida dell'utente.

Prima di iniziare

Prima di configurare AlloyDB Omni in modo che funzioni con pgBackrest, devi aver installato e in esecuzione AlloyDB Omni su un server che controlli.

Una nota sui percorsi del file system

Il software pgBackRest incluso in AlloyDB Omni viene eseguito nello stesso container Docker di AlloyDB Omni. Per questo motivo, tutti i percorsi del file system che fornisci a pgBackRest tramite il 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 /mnt/disks/pgsql, indipendentemente dalla posizione della directory dei dati nel sistema host. Questo perché AlloyDB Omni monta la directory dei dati su /mnt/disks/pgsql nel file system containerizzato. Di conseguenza, puoi utilizzare la directory dei dati come posizione per archiviare la configurazione e i repository di pgBackRest senza ulteriori configurazioni.

Se vuoi configurare pgBackRest containerizzato in modo che legga o scriva nelle directory del file system della macchina host al di fuori della directory dei dati di AlloyDB Omni dei dati, devi rendere queste directory disponibili per il container.

Configurazione di base con backup locali

I passaggi descritti in questa sezione ti guidano attraverso una configurazione di base di pgBackRest, incluso un breve file di configurazione che indica a pgBackRest di scrivere i dati di backup continui in una sottodirectory della directory dei dati di AlloyDB Omni.

Poiché pgBackRest è un prodotto di terze parti flessibile compatibile con AlloyDB Omni, puoi modificare questi passaggi in base alle tue esigenze e preferenze. Se modifichi i percorsi del file system, ricorda che devono essere visibili al container. Consulta Una nota sui percorsi del file system.

Configurare l'autenticazione tramite socket Unix attendibili

Consenti alla macchina host di AlloyDB Omni di autenticare l'utente postgres del server di database senza richiedere una password. Questo semplifica i passaggi successivi.

  1. Aggiungi la seguente riga al file /var/alloydb/config/pg_hba.conf:

    local       all      postgres       trust
    
  2. Riavvia AlloyDB Omni:

    sudo alloydb database-server stop
    sudo alloydb database-server start

Creare e configurare un repository di backup

Il file di configurazione creato in questa sezione è un esempio che consente una configurazione minima per il backup continuo archiviato localmente. Puoi modificare questo file in qualsiasi modo in base alle tue esigenze. Per ulteriori informazioni, consulta Configurare la stanza del cluster.

  1. Crea una sottodirectory backups nella directory dei dati di AlloyDB Omni:

    mkdir DATA_DIR/backups

    Sostituisci DATA_DIR con il percorso del file system alla directory dei dati, ad esempio /home/$USER/alloydb-data.

  2. Crea un file denominato pgbackrest.conf all'interno della directory dei dati e copia il seguente contenuto:

    # Paths (all mandatory):
    repo1-path=/mnt/disks/pgsql/backups
    spool-path=/mnt/disks/pgsql
    lock-path=/mnt/disks/pgsql
    
    # 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=/mnt/disks/pgsql/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=/mnt/disks/pgsql
    pg1-path=/mnt/disks/pgsql/data
    
  3. Inizializza la località di backup utilizzando il pgbackrest stanza-create comando:

    docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create

Configurare il database per i backup continui

  1. Per abilitare i backup continui, esegui il seguente comando per impostare diversi parametri di PostgreSQL:

    docker exec pg-service psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni archive-push %p';" \
    -c "ALTER SYSTEM SET archive_mode=on;" \
    -c "ALTER SYSTEM SET max_wal_senders=on;" \
    -c "ALTER SYSTEM SET wal_level=replica;"
  2. Riavvia AlloyDB Omni:

    sudo alloydb database-server stop
    sudo alloydb database-server start

Eseguire i comandi pgBackRest

Il completamento dei passaggi nella sezione precedente configura pgBackRest in modo che funzioni con il server AlloyDB Omni. Per controllare lo stato del backup, creare backup manuali ed eseguire altre attività, consulta Riferimento ai comandi.

Come best practice, esegui i comandi pgBackRest direttamente dalla macchina host su cui è installato il container 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 pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni --type=full backup

Il valore del flag --config-path è /mnt/disks/pgsql perché è sempre la posizione della directory dei dati nel file system del container AlloyDB Omni. Se hai seguito i passaggi della sezione precedente, la directory dei dati contiene il file pgbackrest.conf necessario per l'esecuzione corretta dei comandi pgBackRest. Per ulteriori informazioni, consulta Una nota sui percorsi del file system paths.

Puoi anche utilizzare le variabili di ambiente per impostare la posizione del file di configurazione di pgBackRest. Per ulteriori informazioni, consulta Opzione del percorso di configurazione.

Configura backup pianificati

Per configurare i backup pianificati, crea un'attività cron che esegua il comando pgbackrest backup con la frequenza necessaria. Per ulteriori informazioni, consulta Pianificare un backup.

Configurazione personalizzata e backup remoti

Dopo aver configurato una configurazione di base, puoi ottimizzare il file di configurazione in base alle tue esigenze e preferenze utilizzando le opzioni documentate in the pgBackRest configuration reference.

Ciò include la specifica di repository di backup aggiuntivi che si trovano su macchine remote o nel cloud. Se definisci più repository, pgBackRest li scrive contemporaneamente 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 descritti in 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 di VM Compute Engine. Se non esegui AlloyDB Omni su un'istanza di VM Compute Engine, allora puoi comunque eseguire il backup in un bucket Cloud Storage utilizzando un altro metodo di autenticazione, ad esempio una Google Cloud chiave dell'account di servizio salvata nel file system locale.

Per estendere il file di configurazione precedente in modo da definire un repository pgBackRest basato su Cloud Storage, segui questi passaggi:

  1. Configura le autorizzazioni del bucket per consentire all'account di servizio collegato all'istanza VM di scrivere nel bucket. Per questo è necessario impostare il ruolo IAM Utente oggetti Storage per l'account di servizio.

  2. 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 memorizzi i backup.

  3. Inizializza la località di backup basata sul cloud utilizzando il pgbackrest stanza-create comando:

    docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create

Dopo aver inizializzato il repository di backup nel bucket Cloud Storage utilizzando il comando pgbackrest stanza-create, pgBackRest esegue il backup in due località:

  • La località nel file system locale, definita altrove nel file di configurazione come repo1-path.

  • Il bucket Cloud Storage, definito utilizzando le direttive di configurazione repo2- configurate da questo esempio.

Passaggi successivi