AlloyDB Omni-RPM mit pgBackRest in S3-kompatiblem Speicher sichern und wiederherstellen

1. Einführung

In diesem Codelab wird gezeigt, wie Sie pgBackRest konfigurieren, um eine AlloyDB Omni-RPM-Bereitstellung mit S3-kompatiblem Objektspeicher zu sichern und wiederherzustellen.

Hinweis:In diesem Codelab stellen Sie eine eigenständige MinIO-Binärdatei auf der VM bereit, die als lokaler, einfacher S3-kompatibler Speicherendpunkt für Tutorials und Tests dient. Verwenden Sie für Produktionsarbeitslasten immer eine unterstützte, aktiv verwaltete S3-kompatible Speicherlösung oder einen Cloud-Objektspeicher.

Voraussetzungen

  • Über die Cloud Console auf ein Google Cloud-Projekt und Cloud Shell zugreifen
  • Das Google Cloud SDK (gcloud) ist installiert und konfiguriert.

Lerninhalte

  • So richten Sie eine Compute Engine-VM für AlloyDB Omni RPM ein.
  • So richten Sie einen lokalen S3-kompatiblen Objektspeicherserver auf der VM ein.
  • So konfigurieren Sie pgBackRest für die Verwendung von S3-kompatiblem Objektspeicher als Sicherungs-Repository.
  • So führen Sie Sicherungen durch, listen sie auf und prüfen sie.
  • So stellen Sie Daten aus einer Sicherung wieder her.

Voraussetzungen

  • URL-Link zu AlloyDB Omni-RPMs abrufen Die Links werden an Ihre E‑Mail-Adresse gesendet, die die Repository-URL des Servers enthält. Initialisieren Sie die folgende Umgebungsvariable, damit die URL während des Codelabs verwendet werden kann.
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    
  • Ein funktionierendes Terminal mit Zugriff auf Google Cloud. Sie können Cloud Shell für diesen Zweck verwenden.

2. Einrichtung und Anforderungen

Projekteinrichtung

Google Cloud-Projekt erstellen

  1. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

Cloud Shell starten

Sie können Google Cloud zwar per Fernzugriff von Ihrem Laptop aus bedienen, in diesem Codelab verwenden Sie jedoch die Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Symbol zum Aktivieren von Cloud Shell

  1. Öffnen Sie die Google Cloud Console und klicken Sie in der Symbolleiste rechts oben auf das Cloud Shell-Symbol.Sie können Cloud Shell auch auf eine der folgenden Arten öffnen:

Die Bereitstellung und Verbindung mit der Umgebung dauert in der Regel nur wenige Augenblicke. Wenn dieser Vorgang abgeschlossen ist, sehen Sie in etwa Folgendes:

Google Cloud Shell-Terminal, das zeigt, dass die Umgebung verbunden ist{: width="624"}

3. Compute Engine-VM erstellen

In diesem Abschnitt erstellen Sie mit dem Befehlszeilentool gcloud eine einzelne Compute Engine-VM. Sie verwenden ein Rocky Linux 9-Image, das vollständig mit AlloyDB Omni-RPMs kompatibel ist.

  1. Definieren Sie Umgebungsvariablen für Ihre Projekt-ID, den VM-Namen, den Maschinentyp, die Zone und die Region.
    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. Melden Sie sich mit Ihrem Google Cloud-Konto an und konfigurieren Sie das Standardprojekt.
    gcloud auth login
    gcloud config set project $PROJECT
    
  3. Erstellen Sie eine Firewallregel, um SSH-Verbindungen zu Ihrer VM zuzulassen.
    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. Da die VM ohne öffentliche IP-Adresse erstellt wird, konfigurieren Sie einen Cloud Router und ein Cloud NAT-Gateway, damit die VM auf externe Paket-Repositories zugreifen und die erforderliche Software herunterladen kann.
    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. Achten Sie darauf, dass Ihr VPC-Netzwerk eine gültige Standard-Internetgatewayroute hat. In einigen freigegebenen Umgebungen oder Sandbox-Umgebungen werden Standardrouten gelegentlich durch Bereinigungsskripts entfernt. Diese Route ist erforderlich, damit Cloud NAT ausgehenden Traffic an das Internet weiterleiten kann.
    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. Erstellen Sie die Compute Engine-VM-Instanz mit Rocky Linux 9 und einem 20 GB großen abgestimmten nichtflüchtigen Speicher. Verwenden Sie zur Erhöhung der Sicherheit das Flag --no-address, damit der VM keine öffentliche IP-Adresse zugewiesen wird.
    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. Prüfen Sie nach dem Erstellen der VM den Status der VM.
    gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
    

4. S3-kompatiblen Objektspeicher einrichten

In diesem Abschnitt stellen Sie eine Verbindung zu Ihrer VM her, bereiten die Umgebung vor und richten einen lokalen S3-kompatiblen Objektspeicherserver (minio) sowie einen S3-Client (mc) zum Hosten Ihres Sicherungs-Buckets ein.

  1. Stellen Sie eine SSH-Verbindung zur VM über Identity-Aware Proxy (IAP) her. Da die VM keine öffentliche IP-Adresse hat, wird die SSH-Verbindung von gcloud automatisch über IAP getunnelt.
    gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap
    
  2. Installieren Sie das Paket policycoreutils-python-utils, damit die SELinux-Richtlinie später bei Bedarf konfiguriert werden kann.
    sudo dnf install -y policycoreutils-python-utils
    
  3. Laden Sie die S3-kompatible Server-Binärdatei (minio) herunter.
    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. Erstellen Sie ein Datenverzeichnis für den Objektspeicherserver.
    sudo mkdir -p /var/lib/s3-storage/data
    
  5. Starten Sie den S3-kompatiblen Server im Hintergrund mit Beispielanmeldedaten. Der geheime Schlüssel muss mindestens 8 Zeichen lang sein.
    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. Prüfen Sie, ob der S3-kompatible Server ausgeführt wird.
    ps aux | grep minio
    
  7. Laden Sie den S3-Client (mc) herunter und installieren Sie ihn, um Buckets zu verwalten.
    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. Konfigurieren Sie den S3-Client-Alias (s3repo) und erstellen Sie einen Bucket mit dem Namen alloydb-backups.
    mc alias set s3repo http://localhost:9000 s3admin s3password
    mc mb s3repo/alloydb-backups
    

5. AlloyDB Omni installieren

In diesem Abschnitt installieren und konfigurieren Sie AlloyDB Omni.

  1. Definieren Sie Umgebungsvariablen auf der VM für das Datenverzeichnis, die AlloyDB Omni-Repository-URL und ein starkes Passwort für den PostgreSQL-Administratornutzer postgres. Ersetzen Sie die URL durch die URL, die Sie über das Registrierungsformular erhalten haben.
    export PGDATA="/var/lib/alloydbomni"
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export PGPASSWORD="YourStrongPassword123!"
    
    Hinweis:Das Übergeben von Passwörtern über Umgebungsvariablen in der Befehlszeile (z.B. PGPASSWORD=$PGPASSWORD) wird hier der Einfachheit halber im Codelab verwendet, kann aber das Passwort in Prozesslisten offenlegen. Verwenden Sie in der Produktion sicherere Methoden wie eine .pgpass-Datei oder einen Secret Manager.
  2. Erstellen Sie das Datenverzeichnis, in dem AlloyDB Omni seine Datenbankdateien speichert.
    sudo mkdir -p $PGDATA
    
  3. Konfigurieren Sie das YUM-Repository auf Ihrer VM, indem Sie die Repository-Konfigurationsdatei erstellen.
    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. Aktualisieren Sie den YUM-Cache.
    sudo yum makecache
    
  5. Installieren Sie Version 18 des AlloyDB Omni-RPM-Pakets.
    sudo dnf install -y alloydbomni18
    
  6. Initialisieren Sie die AlloyDB Omni-Datenbankinstanz.
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb
    
  7. Deaktivieren Sie den SELinux-Erzwingungsmodus vorübergehend, um die Einrichtung zu erleichtern, wie in Codelabs üblich.
    sudo setenforce 0
    
  8. AlloyDB Omni-Datenbankinstanz vorbereiten
    sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb
    
  9. Aktivieren und starten Sie den AlloyDB Omni-Dienst systemd.
    sudo systemctl enable alloydbomni18
    sudo systemctl start alloydbomni18
    
  10. Prüfen Sie, ob der AlloyDB Omni-Dienst aktiv ist und ordnungsgemäß ausgeführt wird.
    sudo systemctl status alloydbomni18
    

6. pgBackRest konfigurieren

In diesem Abschnitt installieren Sie pgBackRest aus dem AlloyDB Omni Common-Repository, konfigurieren /etc/pgbackrest/pgbackrest.conf so, dass Ihr S3-kompatibler Objektspeicher-Bucket als Sicherungsrepository verwendet wird, und aktivieren die WAL-Archivierung in AlloyDB Omni.

  1. Definieren Sie eine Umgebungsvariable auf der VM für die URL Ihres AlloyDB Omni Common-Repositorys. Ersetzen Sie die URL durch die URL, die Sie über das Registrierungsformular erhalten haben.
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..."
    
  2. Konfigurieren Sie das pgBackRest-YUM-Repository und installieren Sie 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. Erstellen Sie die Spool- und Log-Verzeichnisse für pgBackRest und weisen Sie den Nutzer postgres als Eigentümer zu.
    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. Erstellen Sie /etc/pgbackrest/pgbackrest.conf und konfigurieren Sie strenge Dateiberechtigungen.
    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. Initialisieren Sie die pgBackRest-Stanza als Nutzer postgres.
    sudo -u postgres pgbackrest --stanza=omni stanza-create
    
    Prüfen Sie, ob stanza-create command end: completed successfully in der Ausgabe angezeigt wird.
  6. Konfigurieren Sie die AlloyDB Omni-Archivierungsparameter mit 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. Starten Sie den AlloyDB Omni-Dienst neu, um die Archivierungsänderungen zu übernehmen.
    sudo systemctl restart alloydbomni18
    
  8. Überprüfen Sie die Integrität der pgBackRest-Konfiguration und die Konnektivität.
    sudo -u postgres pgbackrest --stanza=omni check
    
    Prüfen Sie, ob check command end: completed successfully in der Ausgabe angezeigt wird.

7. Sicherung durchführen

In diesem Abschnitt verwenden Sie pgBackRest, um eine Vollsicherung und eine differenzielle Sicherung Ihrer AlloyDB Omni-Datenbank in einem S3-kompatiblen Objektspeicher durchzuführen.

  1. Lösen Sie eine vollständige Sicherung mit pgbackrest aus.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=full backup
    
  2. Lösen Sie eine differenzielle Sicherung mit pgbackrest aus.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --type=diff backup
    
    Hinweis:Zu den anderen unterstützten Sicherungstypen gehört incr (inkrementell).

8. Sicherungen auflisten und überprüfen

In diesem Abschnitt lassen Sie sich die Sicherungen auflisten und prüfen, ob sie erfolgreich abgeschlossen wurden.

  1. Sicherungen mit dem Befehl pgbackrest info auflisten
    sudo -u postgres pgbackrest \
        --stanza=omni info
    
    Prüfen Sie, ob in der Ausgabe status: ok zusammen mit Sicherungsinformationen für jeden ausgeführten Sicherungsbefehl angezeigt wird:
    • Vollständiges Back-up : full backup: F (z. B. 20260908-093545F)
    • Differenzielle Sicherung : diff backup: F_D (z. B. 20260908-093545F_20260908-094016D)
  2. Prüfen Sie die im Bucket gespeicherten Sicherungsdateien mit dem S3-Client (mc).
    mc ls s3repo/alloydb-backups/pgbackrest/
    
    In der Ausgabe sollten backup, archive und stanza.info angezeigt werden.

9. Daten aus einer Sicherung wiederherstellen

In diesem Abschnitt beenden Sie den AlloyDB Omni-Datenbankdienst und stellen Daten aus einer bestimmten Sicherung mit pgbackrest wieder her.

Achtung:Beim Wiederherstellen wird Ihre Datenbank beendet und alle Datenbankdaten werden überschrieben.

  1. Definieren Sie eine Umgebungsvariable für die Sicherungs-ID, aus der Sie Daten wiederherstellen möchten. Ersetzen Sie den Wert durch die Sicherungs-ID, die in der Ausgabe von pgbackrest info angezeigt wird.
    export BACKUPID="20260908-093545F"
    
  2. Beenden Sie den AlloyDB Omni-Dienst und prüfen Sie, ob er inaktiv ist.
    sudo systemctl stop alloydbomni18
    sudo systemctl status alloydbomni18
    
    Prüfen Sie, ob in der Ausgabe Active: inactive angezeigt wird.
  3. Führen Sie pgbackrest restore mit der Option --delta aus, um die Datenbank aus dem ausgewählten Backup wiederherzustellen.
    sudo -u postgres pgbackrest \
        --stanza=omni \
        --set=$BACKUPID \
        --delta restore
    
    Prüfen Sie, ob restore command end: completed successfully in der Ausgabe angezeigt wird.
  4. Starten Sie den AlloyDB Omni-Dienst und prüfen Sie, ob er aktiv ist und ausgeführt wird.
    sudo systemctl start alloydbomni18
    sudo systemctl status alloydbomni18
    
    Prüfen Sie, ob in der Ausgabe Active: active (running) angezeigt wird.

10. Bereinigung und Umfrage

Nach Abschluss des Codelabs können Sie die Google Cloud-Ressourcen bereinigen, um unerwünschte Kosten zu vermeiden.

  1. Trennen Sie die Verbindung zu Ihrer SSH-Sitzung auf der VM, um zu Ihrem lokalen Cloud Shell-Terminal zurückzukehren.
    exit
    
  2. Löschen Sie die Compute Engine-VM-Instanz.
    gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet
    
  3. Löschen Sie die Firewallregel, die für den SSH-Zugriff erstellt wurde.
    gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet
    
  4. Löschen Sie das Cloud NAT-Gateway und den Cloud Router.
    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. Löschen Sie die benutzerdefinierte Route.
    gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
    

11. Glückwunsch

Herzlichen Glückwunsch zum Abschluss des Codelabs! Sie haben pgBackRest erfolgreich konfiguriert, um eine AlloyDB Omni-RPM-Bereitstellung mit S3-kompatiblem Objektspeicher zu sichern und wiederherzustellen.

Behandelte Themen

  • So richten Sie eine Compute Engine-VM für AlloyDB Omni RPM ein.
  • So richten Sie einen S3-kompatiblen Objektspeicher-Bucket ein.
  • pgBackRest mit einem S3-kompatiblen Repository konfigurieren
  • So führen Sie vollständige und differenzielle Sicherungen durch, listen sie auf und überprüfen sie.
  • So stellen Sie Daten aus einer Sicherung mit pgBackRest wieder her.

Weitere Informationen finden Sie in der AlloyDB Omni-Übersicht.

12. Umfrage

Wie werden Sie diese Anleitung verwenden?

Nur durchlesen Lesen und Übungen machen