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.

Per informazioni basate su Kubernetes, consulta Eseguire il backup e il ripristino in Kubernetes.

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 /var/lib/postgresql/data, indipendentemente dalla posizione della directory dei dati nel 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 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, devi rendere disponibili queste directory al 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 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. Riavvia AlloyDB Omni:

    Docker

    docker restart CONTAINER_NAME

    Sostituisci CONTAINER_NAME con il nome che hai assegnato al container AlloyDB Omni durante l'installazione, ad esempio my-omni.

    Podman

    podman restart CONTAINER_NAME

    Sostituisci CONTAINER_NAME con il nome che hai assegnato al container 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 qualsiasi modo in base alle tue esigenze. Per ulteriori informazioni, consulta Configurare la sezione 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 il seguente contenuto:

    [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 di backup utilizzando il pgbackrest stanza-create comando:

    Docker

    docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

    Sostituisci CONTAINER_NAME con il nome che hai assegnato al container AlloyDB Omni durante l'installazione, ad esempio my-omni.

    Podman

    podman exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

    Sostituisci CONTAINER_NAME con il nome che hai assegnato al container AlloyDB Omni durante l'installazione, ad esempio my-omni.

Configurare il database per i backup continui

Docker

  1. Per abilitare i backup continui, esegui il seguente comando per impostare diversi parametri di 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. Riavvia AlloyDB Omni:

     docker restart CONTAINER_NAME

Podman

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

     podman 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. Riavvia AlloyDB Omni:

     podman restart CONTAINER_NAME

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.

Docker

Come best practice, esegui i comandi pgBackRest direttamente dalla macchina host su cui è installato il container AlloyDB Omni, utilizzando il docker exec comando. Ad esempio, per creare un backup manuale, utilizza il pgbackrest backup comando. 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

Podman

Come best practice, esegui i comandi pgBackRest direttamente dalla macchina host su cui è installato il container AlloyDB Omni, utilizzando il podman exec comando. Ad esempio, per creare un backup manuale, utilizza il pgbackrest backup comando. Modificalo in modo che venga eseguito all'interno di un comando podman exec e faccia riferimento al file di configurazione creato in precedenza:

   podman 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 del percorso di configurazione.

Configurare i backup pianificati

Per configurare i backup pianificati, crea un cron job 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 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 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 VM di Compute Engine. Se non esegui AlloyDB Omni su un'istanza VM di 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 al account di servizio collegato all'istanza VM di scrivere nel bucket. Per questo è necessario impostare il ruolo IAM Utente oggetti Storage nel 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 posizione di backup basata sul cloud utilizzando il pgbackrest stanza-create comando:

    Docker

     docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

    Sostituisci CONTAINER_NAME con il nome che hai assegnato al container AlloyDB Omni durante l'installazione, ad esempio my-omni.

    Podman

     podman exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

    Sostituisci CONTAINER_NAME con il nome che hai assegnato al container AlloyDB Omni durante l'installazione, ad esempio my-omni.

Dopo aver inizializzato il repository di backup nel bucket Cloud Storage utilizzando 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- configurate da questo esempio.

Passaggi successivi