Esegui il backup e il ripristino di AlloyDB Omni RPM in uno spazio di archiviazione compatibile con S3 utilizzando pgBackRest

1. Introduzione

Questo codelab mostra come configurare pgBackRest per eseguire il backup e il ripristino di un deployment RPM di AlloyDB Omni utilizzando l'archiviazione di oggetti compatibile con S3.

Nota:in questo codelab, esegui il deployment di un file binario MinIO autonomo sulla VM per fungere da endpoint di archiviazione locale e leggero compatibile con S3 a scopo di tutorial e test. Per i carichi di lavoro di produzione, utilizza sempre una soluzione di archiviazione compatibile con S3 o un'archiviazione di oggetti cloud supportata e gestita attivamente.

Prerequisiti

  • Accesso a un progetto Google Cloud e a Cloud Shell da Cloud Console.
  • Google Cloud SDK (gcloud) installato e configurato.

Cosa imparerai a fare

  • Come configurare una VM di Compute Engine per l'RPM di AlloyDB Omni.
  • Come configurare un server di archiviazione di oggetti compatibile con S3 locale sulla VM.
  • Come configurare pgBackRest per utilizzare l'archiviazione di oggetti compatibile con S3 come repository di backup.
  • Come eseguire, elencare e verificare i backup.
  • Come ripristinare i dati da un backup.

Che cosa ti serve

  • Ottieni un link URL agli RPM di AlloyDB Omni. I link vengono inviati alla tua email, che include l'URL del server del repository. Inizializza la seguente variabile di ambiente per mantenere l'URL pronto per l'uso durante il codelab.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • Un terminale funzionante con accesso a Google Cloud. A questo scopo, puoi utilizzare Cloud Shell.

2. Configurazione e requisiti

Configurazione del progetto

Crea un progetto Google Cloud

  1. Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
  2. Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata per un progetto.

Avvia Cloud Shell

Sebbene tu possa gestire Google Cloud da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.

Icona per attivare Cloud Shell

  1. Apri la console Google Cloud e fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra.Puoi anche aprire Cloud Shell in uno dei seguenti modi:

In genere, bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine dell'operazione, visualizzerai un risultato simile al seguente:

Terminale Google Cloud Shell che mostra che l'ambiente è connesso{: width="624"}

3. Crea la VM di Compute Engine

In questa sezione, crei una singola macchina virtuale (VM) di Compute Engine (GCE) utilizzando lo strumento a riga di comando gcloud. Utilizzi un'immagine Rocky Linux 9, completamente compatibile con i pacchetti RPM di AlloyDB Omni.

  1. Definisci le variabili di ambiente per l'ID progetto, il nome della VM, il tipo di macchina, la zona e la regione.
    export PROJECT="your-project-id"
    export INSTANCE_NAME="alloydb-omni-pgbackrest"
    export MACHINE_TYPE="e2-standard-4"
    export ZONE="us-central1-c"
    export REGION="us-central1"
    
  2. Accedi utilizzando l'utente del tuo account Google Cloud e configura il progetto predefinito.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. Crea una regola firewall per consentire le connessioni SSH alla tua VM.
    gcloud compute firewall-rules create allow-ssh-alloydb-omni \
        --project=$PROJECT \
        --direction=INGRESS \
        --action=allow \
        --rules=tcp:22 \
        --source-ranges="0.0.0.0/0"
    
  4. Poiché la VM viene creata senza un indirizzo IP pubblico, configura un router Cloud e un gateway Cloud NAT per consentire alla VM di accedere ai repository di pacchetti esterni e scaricare il software richiesto.
    gcloud compute routers create alloydb-omni-router \
        --project=$PROJECT \
        --network=default \
        --region=$REGION
    
    gcloud compute routers nats create alloydb-omni-nat \
        --project=$PROJECT \
        --router=alloydb-omni-router \
        --region=$REGION \
        --nat-all-subnet-ip-ranges \
        --auto-allocate-nat-external-ips
    
  5. Assicurati che la rete VPC abbia una route del gateway internet predefinito valida. In alcuni ambienti condivisi o sandbox, le route predefinite vengono occasionalmente rimosse dagli script di pulizia. Questa route è necessaria per consentire a Cloud NAT di inoltrare il traffico in uscita a internet.
    gcloud compute routes create default-internet-route \
        --project=$PROJECT \
        --network=default \
        --destination-range=0.0.0.0/0 \
        --next-hop-gateway=default-internet-gateway
    
  6. Crea l'istanza VM di Compute Engine con Rocky Linux 9 e un disco permanente bilanciato da 20 GB. Per una maggiore sicurezza, utilizza il flag --no-address in modo che alla VM non venga assegnato un indirizzo IP pubblico.
    gcloud compute instances create $INSTANCE_NAME \
        --project=$PROJECT \
        --zone=$ZONE \
        --machine-type=$MACHINE_TYPE \
        --image-family=rocky-linux-9 \
        --image-project=rocky-linux-cloud \
        --boot-disk-size=20GB \
        --boot-disk-type=pd-balanced \
        --no-address
    
  7. Dopo aver creato la VM, verifica il suo stato.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

4. Configura l'archiviazione di oggetti compatibile con S3

In questa sezione, ti connetti alla VM, prepari l'ambiente e configuri un server di archiviazione di oggetti locale compatibile con S3 (minio) insieme a un client S3 (mc) per ospitare il bucket di backup.

  1. Connettiti alla VM tramite SSH utilizzando Identity-Aware Proxy (IAP). Poiché la VM non ha un indirizzo IP pubblico, gcloud esegue automaticamente il tunneling della connessione SSH tramite IAP.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. Installa il pacchetto policycoreutils-python-utils in modo che la policy SELinux possa essere configurata in un secondo momento, se necessario.
    sudo dnf install -y policycoreutils-python-utils
    
  3. Scarica il binario del server compatibile con S3 (minio).
    curl -L -o minio \
        https://github.com/minio/minio/releases/download/RELEASE.2024-05-10T01-41-38Z/minio.linux-amd64.RELEASE.2024-05-10T01-41-38Z
    chmod +x minio
    sudo mv minio /usr/local/bin/
    
  4. Crea una directory di dati per il server di archiviazione degli oggetti.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. Avvia il server compatibile con S3 in background con le credenziali di esempio. Tieni presente che la chiave segreta deve contenere almeno 8 caratteri.
    export MINIO_ROOT_USER="s3admin"
    export MINIO_ROOT_PASSWORD="s3password"
    
    nohup sudo env MINIO_ROOT_USER="$MINIO_ROOT_USER" \
        MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \
        /usr/local/bin/minio server /var/lib/s3-storage/data \
        --console-address ":9001" \
        > s3-server.log 2>&1 &
    
  6. Verifica che il server compatibile con S3 sia in esecuzione.
    ps aux | grep minio
    
  7. Scarica e installa il client S3 (mc) per gestire i bucket.
    curl -L -o mc \
        https://github.com/minio/mc/releases/download/RELEASE.2024-05-09T17-04-24Z/mc.linux-amd64.RELEASE.2024-05-09T17-04-24Z
    chmod +x mc
    sudo mv mc /usr/local/bin/
    
  8. Configura l'alias del client S3 (s3repo) e crea un bucket denominato alloydb-backups.
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

5. Installa AlloyDB Omni

In questa sezione, installa e configura AlloyDB Omni.

  1. Definisci le variabili di ambiente sulla VM per la directory di dati, l'URL del repository AlloyDB Omni e una password efficace per l'utente amministratore PostgreSQL postgres. Sostituisci l'URL con quello che hai ricevuto dal modulo di registrazione.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    Nota: il passaggio delle password utilizzando le variabili di ambiente nella riga di comando (ad es. PGPASSWORD=$PGPASSWORD) viene utilizzato qui per semplicità nel codelab, ma può esporre la password negli elenchi dei processi. In produzione, utilizza metodi più sicuri come un file .pgpass o un secret manager.
  2. Crea la directory dei dati in cui AlloyDB Omni memorizzerà i file di database.
    sudo mkdir -p $PGDATA
    
  3. Configura il repository YUM sulla VM creando il file di configurazione del repository.
    sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF
    [alloydbomni]
    name=alloydbomni
    baseurl=$ALLOYDB_OMNI_REPOSITORY_URL
    enabled=1
    repo_gpgcheck=0
    gpgcheck=1
    gpgkey=https://dl.google.com/linux/linux_signing_key.pub
    EOF
    
  4. Aggiorna la cache YUM.
    sudo yum makecache
    
  5. Installa la versione 18 del pacchetto RPM di AlloyDB Omni.
    sudo dnf install -y alloydbomni18
    
  6. Inizializza l'istanza del database AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. Disattiva temporaneamente la modalità enforcing di SELinux per facilitare la configurazione, come previsto dalle pratiche standard dei codelab.
    sudo setenforce 0
    
  8. Prepara l'istanza del database AlloyDB Omni.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. Attiva e avvia il servizio AlloyDB Omni systemd.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. Verifica che il servizio AlloyDB Omni sia attivo e in esecuzione.
    sudo systemctl status alloydbomni18
    

6. Configura pgBackRest

In questa sezione, installi pgBackRest dal repository AlloyDB Omni Common, configuri /etc/pgbackrest/pgbackrest.conf per utilizzare il bucket di archiviazione di oggetti compatibile con S3 come repository di backup e attivi l'archiviazione WAL in AlloyDB Omni.

  1. Definisci una variabile di ambiente sulla VM per l'URL del repository comune di AlloyDB Omni. Sostituisci l'URL con quello che hai ricevuto dal modulo di registrazione.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. Configura il repository YUM di pgBackRest e installa pgbackrest-2.58.0.
    sudo tee /etc/yum.repos.d/pgbackrest.repo <<EOF
    [pgbackrest]
    name=Google Alloydb Omni Orchestrator
    baseurl=$ALLOYDB_OMNI_COMMON_REPOSITORY_URL
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    gpgkey=https://dl.google.com/linux/linux_signing_key.pub
    EOF
    
    sudo dnf install -y pgbackrest-2.58.0
    
  3. Crea le directory spool e log per pgBackRest e assegna la proprietà all'utente postgres.
    sudo mkdir -p /var/log/pgbackrest
    sudo mkdir -p /var/lib/pgbackrest
    
    sudo chown -R postgres:postgres /var/log/pgbackrest
    sudo chown -R postgres:postgres /var/lib/pgbackrest
    
  4. Crea /etc/pgbackrest/pgbackrest.conf e configura autorizzazioni file restrittive.
    sudo mkdir -p /etc/pgbackrest/conf.d
    
    sudo tee /etc/pgbackrest/pgbackrest.conf <<EOF
    [global]
    spool-path=/var/lib/pgbackrest
    lock-path=/var/lib/pgbackrest
    
    # S3 Repository details
    repo1-type=s3
    repo1-s3-endpoint=http://localhost:9000
    repo1-s3-bucket=alloydb-backups
    repo1-s3-key=s3admin
    repo1-s3-key-secret=s3password
    repo1-s3-region=us-east-1
    repo1-s3-uri-style=path
    repo1-path=/pgbackrest
    
    # Retention policy
    repo1-retention-full=3
    repo1-retention-full-type=count
    repo1-retention-diff=16
    
    # Force immediate checkpoint during backup start
    start-fast=y
    
    # Logging
    log-path=/var/log/pgbackrest
    log-level-console=info
    log-level-file=info
    
    # Compression
    compress-type=zst
    
    # Asynchronous WAL archiving
    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=$PGDATA
    EOF
    
    sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
    sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
    
  5. Inizializza la stanza pgBackRest come utente postgres.
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    Verifica che stanza-create command end: completed successfully sia visualizzato nell'output.
  6. Configura i parametri di archiviazione di AlloyDB Omni utilizzando psql.
    sudo -u postgres /usr/lib/postgresql/18/bin/psql \
        -c "ALTER SYSTEM SET archive_mode = 'on';" \
        -c "ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=omni archive-push %p';" \
        -c "ALTER SYSTEM SET wal_level = 'replica';" \
        -c "ALTER SYSTEM SET max_wal_senders = 10;"
    
  7. Riavvia il servizio AlloyDB Omni per applicare le modifiche all'archiviazione.
    sudo systemctl restart alloydbomni18
    
  8. Verifica l'integrità e la connettività della configurazione di pgBackRest.
    sudo -u postgres pgbackrest --stanza=omni check
    
    Verifica che check command end: completed successfully sia visualizzato nell'output.

7. Esegui backup

In questa sezione utilizzi pgBackRest per eseguire un backup completo e un backup differenziale del tuo database AlloyDB Omni nell'archiviazione di oggetti compatibile con S3.

  1. Attiva un backup completo utilizzando pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. Attiva un backup differenziale utilizzando pgbackrest.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    Nota:altri tipi di backup supportati includono incr (incrementale).

8. Elenco e verifica dei backup

In questa sezione, elenca i backup e verifica che siano stati completati correttamente.

  1. Elenca i backup utilizzando il comando pgbackrest info.
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    Verifica che l'output mostri status: ok insieme alle informazioni di backup per ogni comando di backup eseguito:
    • Backup completo: full backup: F (ad esempio, 20260908-093545F)
    • Backup differenziale: diff backup: F_D (ad esempio, 20260908-093545F_20260908-094016D)
  2. Verifica i file di backup archiviati nel bucket utilizzando il client S3 (mc).
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    Nell'output dovresti vedere backup, archive e stanza.info.

9. Ripristinare i dati dal backup

In questa sezione, arresta il servizio di database AlloyDB Omni e ripristina i dati da un backup specifico utilizzando pgbackrest.

Attenzione: il ripristino arresta il database e sovrascrive tutti i dati del database.

  1. Definisci una variabile di ambiente per l'ID backup da cui vuoi eseguire il ripristino. Sostituisci il valore con l'ID backup mostrato nell'output di pgbackrest info.
    export BACKUPID="20260908-093545F"
    
  2. Arresta il servizio AlloyDB Omni e verifica che sia inattivo.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    Verifica che l'output mostri Active: inactive.
  3. Esegui pgbackrest restore con l'opzione --delta per ripristinare il database dal backup selezionato.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    Verifica che restore command end: completed successfully sia visualizzato nell'output.
  4. Avvia il servizio AlloyDB Omni e verifica che sia attivo e in esecuzione.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Verifica che l'output mostri Active: active (running).

10. Pulizia e sondaggio

Al termine del codelab, puoi eseguire la pulizia delle risorse Google Cloud per evitare addebiti indesiderati.

  1. Disconnettiti dalla sessione SSH sulla VM per tornare al terminale Cloud Shell locale.
    exit
    
  2. Elimina l'istanza VM di Compute Engine.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. Elimina la regola firewall creata per l'accesso SSH.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. Elimina il gateway Cloud NAT e il router Cloud.
    gcloud compute routers nats delete alloydb-omni-nat --router=alloydb-omni-router --region=$REGION --project=$PROJECT --quiet
    gcloud compute routers delete alloydb-omni-router --region=$REGION --project=$PROJECT --quiet
    
  5. Elimina l'itinerario personalizzato.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

11. Complimenti

Congratulazioni per aver completato il codelab. Hai configurato correttamente pgBackRest per eseguire il backup e il ripristino di un deployment RPM di AlloyDB Omni utilizzando l'archiviazione di oggetti compatibile con S3.

Argomenti trattati

  • Come configurare una VM di Compute Engine per l'RPM di AlloyDB Omni.
  • Come configurare un bucket di archiviazione di oggetti compatibile con S3.
  • Come configurare pgBackRest con un repository compatibile con S3.
  • Come eseguire, elencare e verificare i backup completi e differenziali.
  • Come ripristinare i dati da un backup utilizzando pgBackRest.

Per saperne di più, consulta la panoramica di AlloyDB Omni.

12. Sondaggio

Come utilizzerai questo tutorial?

Solo lettura Lettura e completamento degli esercizi