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
- Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
- 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.

- 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:
- Se utilizzi la console Google Cloud, premi G e poi S.
- Fai clic su questo link.
In genere, bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine dell'operazione, visualizzerai un risultato simile al seguente:
{: 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.
- 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" - Accedi utilizzando l'utente del tuo account Google Cloud e configura il progetto predefinito.
gcloud auth login gcloud config set project $PROJECT - 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" - 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 - 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 - 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-addressin 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 - 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.
- Connettiti alla VM tramite SSH utilizzando Identity-Aware Proxy (IAP). Poiché la VM non ha un indirizzo IP pubblico,
gcloudesegue automaticamente il tunneling della connessione SSH tramite IAP.gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - Installa il pacchetto
policycoreutils-python-utilsin modo che la policy SELinux possa essere configurata in un secondo momento, se necessario.sudo dnf install -y policycoreutils-python-utils - 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/ - Crea una directory di dati per il server di archiviazione degli oggetti.
sudo mkdir -p /var/lib/s3-storage/data - 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 & - Verifica che il server compatibile con S3 sia in esecuzione.
ps aux | grep minio - 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/ - Configura l'alias del client S3 (
s3repo) e crea un bucket denominatoalloydb-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.
- 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. Nota: il passaggio delle password utilizzando le variabili di ambiente nella riga di comando (ad es.export PGDATA="/var/lib/alloydbomni" export ALLOYDB_OMNI_REPOSITORY_URL="..." export PGPASSWORD="YourStrongPassword123!"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.pgpasso un secret manager. - Crea la directory dei dati in cui AlloyDB Omni memorizzerà i file di database.
sudo mkdir -p $PGDATA - 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 - Aggiorna la cache YUM.
sudo yum makecache - Installa la versione 18 del pacchetto RPM di AlloyDB Omni.
sudo dnf install -y alloydbomni18 - Inizializza l'istanza del database AlloyDB Omni.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - Disattiva temporaneamente la modalità enforcing di SELinux per facilitare la configurazione, come previsto dalle pratiche standard dei codelab.
sudo setenforce 0 - Prepara l'istanza del database AlloyDB Omni.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - Attiva e avvia il servizio AlloyDB Omni
systemd.sudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 - 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.
- 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="..." - 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 - 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 - Crea
/etc/pgbackrest/pgbackrest.confe 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 - Inizializza la stanza pgBackRest come utente
postgres. Verifica chesudo -u postgres pgbackrest --stanza=omni stanza-createstanza-create command end: completed successfullysia visualizzato nell'output. - 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;" - Riavvia il servizio AlloyDB Omni per applicare le modifiche all'archiviazione.
sudo systemctl restart alloydbomni18 - Verifica l'integrità e la connettività della configurazione di pgBackRest.
Verifica chesudo -u postgres pgbackrest --stanza=omni checkcheck command end: completed successfullysia 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.
- Attiva un backup completo utilizzando
pgbackrest.sudo -u postgres pgbackrest \ --stanza=omni \ --type=full backup - Attiva un backup differenziale utilizzando
pgbackrest. Nota:altri tipi di backup supportati includonosudo -u postgres pgbackrest \ --stanza=omni \ --type=diff backupincr(incrementale).
8. Elenco e verifica dei backup
In questa sezione, elenca i backup e verifica che siano stati completati correttamente.
- Elenca i backup utilizzando il comando
pgbackrest info. Verifica che l'output mostrisudo -u postgres pgbackrest \ --stanza=omni infostatus: okinsieme alle informazioni di backup per ogni comando di backup eseguito:- Backup completo:
full backup:(ad esempio,F 20260908-093545F) - Backup differenziale:
diff backup:(ad esempio,F_ D 20260908-093545F_20260908-094016D)
- Backup completo:
- Verifica i file di backup archiviati nel bucket utilizzando il client S3 (
mc). Nell'output dovresti vederemc ls s3repo/alloydb-backups/pgbackrest/backup,archiveestanza.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.
- 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" - Arresta il servizio AlloyDB Omni e verifica che sia inattivo.
Verifica che l'output mostrisudo systemctl stop alloydbomni18 sudo systemctl status alloydbomni18Active: inactive. - Esegui
pgbackrest restorecon l'opzione--deltaper ripristinare il database dal backup selezionato. Verifica chesudo -u postgres pgbackrest \ --stanza=omni \ --set=$BACKUPID \ --delta restorerestore command end: completed successfullysia visualizzato nell'output. - Avvia il servizio AlloyDB Omni e verifica che sia attivo e in esecuzione.
Verifica che l'output mostrisudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
10. Pulizia e sondaggio
Al termine del codelab, puoi eseguire la pulizia delle risorse Google Cloud per evitare addebiti indesiderati.
- Disconnettiti dalla sessione SSH sulla VM per tornare al terminale Cloud Shell locale.
exit - Elimina l'istanza VM di Compute Engine.
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet - Elimina la regola firewall creata per l'accesso SSH.
gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet - 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 - 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.