Configurare pgBackRest per AlloyDB Omni

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.

  1. 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.

  2. Riavviare AlloyDB Omni:

    docker restart CONTAINER_NAME

    Sostituisci CONTAINER_NAME con il nome assegnato al contenitore AlloyDB Omni durante l'installazione, ad esempio my-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.

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

    mkdir DATA_DIR/backups
  2. 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
    
  3. 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

  1. 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;"
  2. 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:

  1. 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.

  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 archivi i backup.

  3. 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.

Passaggi successivi