Configura pgBackRest per AlloyDB Omni

Seleziona una versione della documentazione:

Questa pagina mostra come proteggere i dati configurando AlloyDB Omni per funzionare 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.

pgBackRest è un'utilità di backup e ripristino flessibile per PostgreSQL. Poiché AlloyDB Omni è compatibile con PostgreSQL, puoi utilizzare pgBackRest per proteggere i tuoi dati 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 con 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 per funzionare con pgBackrest, devi installare ed eseguire 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 ed esempi in questa pagina fanno riferimento alla tua directory dei dati come /mnt/disks/pgsql, indipendentemente dalla posizione della directory dei dati sul sistema host. Questo perché AlloyDB Omni monta la directory dei dati su /mnt/disks/pgsql nel suo file system in container. Di conseguenza, puoi utilizzare la directory dei dati come posizione per archiviare la configurazione e i repository pgBackRest senza ulteriori configurazioni.

Se vuoi configurare pgBackRest in container per leggere o scrivere in 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 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 container. Consulta Una nota sui percorsi del file system.

Configura l'autenticazione tramite socket Unix attendibili

Consenti alla macchina host AlloyDB Omni di autenticare l'utente postgres del server di database senza richiedere una password. In questo modo si semplificano 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

Crea e configura 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 base alle tue esigenze. Per saperne di più, consulta Configurare la sezione 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 della directory dei dati, ad esempio /home/$USER/alloydb-data.

  2. Crea un file denominato pgbackrest.conf all'interno della directory dei dati e copia al suo interno i seguenti contenuti:

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

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

Configura il database per i backup continui

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

Esegui i comandi pgBackRest

Il completamento dei passaggi della sezione precedente configura pgBackRest per funzionare 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 saperne di più, consulta la sezione Una nota sui percorsi del file system.

Puoi anche utilizzare le variabili di ambiente per impostare la posizione del file di configurazione pgBackRest. Per saperne di più, consulta Opzione 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 saperne di più, vedi Pianificare un backup.

Configurazione personalizzata e backup remoti

Una volta configurata una 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 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. A questo scopo, è 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 posizione di backup basata sul cloud utilizzando il comando pgbackrest stanza-create:

    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 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 in questo esempio.

Passaggi successivi