pgBackRest für AlloyDB Omni unter Linux einrichten

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie Ihre Daten schützen, indem Sie AlloyDB Omni für die Verwendung mit pgBackRest konfigurieren, einem Open-Source-Datenbanksicherungsserver.

Weitere Informationen zu pgBackRest finden Sie in seinem Nutzerhandbuch.

Hinweis

Bevor Sie AlloyDB Omni für die Verwendung mit pgBackRest konfigurieren, müssen Sie die folgenden Voraussetzungen erfüllen:

Basiskonfiguration mit lokalen Sicherungen

Die Schritte in diesem Abschnitt führen Sie durch die grundlegende Einrichtung von pgBackRest. Bei Basiskonfigurationen werden keine Sicherungen nach Zeitplan aktiviert. Weitere Informationen finden Sie unter Geplante Sicherungen einrichten.

Da pgBackRest ein flexibles Drittanbieterprodukt ist, das mit AlloyDB Omni kompatibel ist, können Sie jeden dieser Schritte nach Bedarf an Ihre eigenen Anforderungen und Vorlieben anpassen.

Sicherungsverzeichnis erstellen

Aus organisatorischen Gründen empfehlen wir dringend, ein separates Verzeichnis für pgBackRest-Sicherungen zu erstellen. So richten Sie ein neues Verzeichnis ein:

  1. Wenn AlloyDB Omni ausgeführt wird, beenden Sie es.

    sudo systemctl stop alloydbomni18
    
  2. Erstellen Sie ein Sicherungsverzeichnis.

    sudo mkdir -p BACKUP_DIR
    

    Ersetzen Sie BACKUP_DIR durch das Hostverzeichnis, in dem Ihre Sicherungen gespeichert werden.

  3. Machen Sie das Sicherungsverzeichnis für postgres lesbar.

    sudo chown -R postgres:postgres BACKUP_DIR
    

Lokale Sicherungen konfigurieren

pgBackRest erstellt Unterverzeichnisse für jede erstellte Sicherung und fügt eine Manifestdatei im Nur-Text-Format hinzu.

pgBackRest verwendet den Begriff Stanza für die Konfiguration eines PostgreSQL-Datenbankclusters. Der Stanza-Name ist beliebig und muss nicht mit dem Namen des Hostservers, des PostgreSQL-Clusters oder der Datenbank übereinstimmen. In der pgBackRest-Dokumentation wird empfohlen, die Stanza nach der Funktion des Clusters zu benennen.

Das Repository ist der Ort, an dem Sicherungen geschrieben werden. pgBackRest unterstützt das Schreiben in mehrere Repositorys in einer bestimmten Stanza. Die meisten Konfigurationsparameter für Repositorys werden mit einem numerischen Wert indexiert. Beispiel: repo1-. Parameter für PostgreSQL-Cluster werden ebenfalls unabhängig indexiert. Beispiel: pg1-.

pgBackRest verwendet eine Konfigurationsdatei namens pgbackrest.conf für globale und stanzaspezifische Parameter.

Wenn Sie eine Konfigurationsdatei zum Sichern Ihres AlloyDB Omni-Clusters erstellen und initialisieren möchten, erstellen Sie die Datei pgbackrest.conf im hostseitigen Sicherungsverzeichnis, das Sie unter Sicherungsverzeichnis erstellen erstellt haben.

[global]
# Paths (all mandatory):

repo1-path=BACKUP_DIR
spool-path=BACKUP_DIR/spool
lock-path=BACKUP_DIR


# 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=BACKUP_DIR

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=/tmp

pg1-path=DATA_DIR

Einige Parameter sind obligatorisch, andere können jedoch bei Bedarf an Ihre spezifischen Anforderungen angepasst werden, z. B.:

  • repo1-path: Verzeichnisspeicherort, an dem die Sicherungen geschrieben werden. Wir empfehlen einen Speicherort, der sowohl für den Hostserver als auch für den Container sichtbar ist.

  • log-path: Verzeichnisspeicherort, an dem die Logdateien geschrieben werden. Wenn Sie die Logdateien an einem separaten Speicherort speichern möchten, der nicht mit den Sicherungen selbst vermischt ist, passen Sie diesen Parameter an.

  • repo1-retention-full: Anzahl der aufzubewahrenden Vollsicherungen.

  • repo1-retention-full-type: Gibt an, ob die Aufbewahrungsdauer nach Anzahl oder Zeitraum (in Tagen) gemessen wird.

  • repo1-retention-diff: Anzahl der aufzubewahrenden differenziellen Sicherungen.

Weitere nicht kritische, aber empfohlene Parametereinstellungen, die mit AlloyDB Omni in der Konfigurationsdatei kompatibel sind, sind:

  • log-level-console: Protokollierungsstufe, die beim Ausführen von pgBackup-Befehlen auf dem Bildschirm (STDOUT) geschrieben wird. Sie können diese Einstellung in der Konfigurationsdatei an Ihre Anforderungen anpassen oder diesen Wert mit dem Befehlszeilenargument --log-level-console überschreiben. Der Standardwert ist warn.

  • start-fast: Erzwingt einen Prüfpunkt, um die Sicherungen schnell zu starten. Der Standardwert ist n.

  • archive-async: WAL-Segmentdateien asynchron für eine bessere Leistung pushen. Der Standardwert ist n.

  • process-max: Maximale Anzahl der Prozesse, die für die Komprimierung und Übertragung verwendet werden sollen. Dieser Wert wird in der Regel auf max_cpu/4 auf einem primären Cluster oder max_cpu/2 auf einem Standby-Cluster festgelegt. Der Standardwert ist 1.

  • compress-type: Zu verwendender Komprimierungsalgorithmus. Der Standardwert ist gz.

Es gibt viele weitere pgBackRest-Konfigurationsparameter, die angepasst werden können. In dieser Dokumentation werden nur die Parameter behandelt, die für die Standardkonfiguration von AlloyDB Omni obligatorisch sind, sowie einige empfohlene Parametereinstellungen. Die vollständige Liste der Konfigurationsparameter finden Sie in der Online-Dokumentation zur pgBackRest-Konfigurationsreferenz.

Nach der Konfiguration von pgBackRest müssen die Ziel-Repositorys, in die Sicherungen geschrieben werden, initialisiert werden. Dazu wird die Stanza erstellt, die die in der Konfigurationsdatei festgelegten Parameter verwendet.

So konfigurieren Sie Ihre Datenbank für Sicherungen:

  1. Erstellen Sie die Stanza mit dem Befehl stanza-create.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni stanza-create
    

    Ersetzen Sie BACKUP_DIR durch das Sicherungsverzeichnis, das Sie unter Sicherungsverzeichnis erstellen erstellt haben.

  2. Konfigurieren Sie Ihre Datenbank für Sicherungen.

    /usr/lib/postgresql/18/bin/psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/BACKUP_DIR --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;"
    
  3. Starten Sie AlloyDB Omni neu.

    sudo systemctl restart alloydbomni18
    
  4. Validieren Sie die Sicherungskonfiguration.

    /usr/lib/postgresql/18/bin/psql -h localhost -U postgres \
    -c "SELECT name, setting
        FROM pg_catalog.pg_settings
        WHERE name IN ('archive_command',
                       'archive_mode',
                       'max_wal_senders',
                       'wal_level')
        ORDER BY name"
    
  5. Führen Sie eine pgBackRest-Prüfung durch.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    check
    

Sicherung ausführen

  1. Führen Sie eine vollständige Sicherung aus.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    --type=full backup
    

    Ersetzen Sie BACKUP_DIR durch das Sicherungsverzeichnis, das Sie unter Sicherungsverzeichnis erstellen erstellt haben.

  2. Führen Sie eine differenzielle Sicherung durch.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    --type=diff backup
    
  3. Sicherungen melden.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    info
    

Geplante Sicherungen einrichten

Wenn Sie geplante Sicherungen einrichten möchten, erstellen Sie einen Cronjob, der den Befehl pgbackrest backup so oft wie nötig ausführt. Weitere Informationen finden Sie unter Sicherung planen.

Benutzerdefinierte Konfiguration und Remote-Sicherungen

Nachdem Sie eine grundlegende Konfiguration eingerichtet haben, können Sie die Konfigurationsdatei mit den in der pgBackRest-Konfigurationsreferenz dokumentierten Optionen an Ihre Anforderungen und Vorlieben anpassen.

Dazu gehört die Angabe zusätzlicher Sicherungs-Repositorys auf Remote-Computern oder in der Cloud. Wenn Sie mehrere Repositorys definieren, ist die standardmäßige Sicherungsmaßnahme von pgBackRest, gleichzeitig in alle zu schreiben.

pgBackRest unterstützt beispielsweise die Verwendung eines Cloud Storage-Bucket als Sicherungs-Repository, mit einer Reihe von zugehörigen Konfigurationsoptionen. Im folgenden Abschnitt wird eine Möglichkeit zur Verwendung dieser Optionen beschrieben.

Beispielkonfiguration mit Cloud Storage

Die Schritte in diesem Abschnitt bauen auf der Konfigurationsdatei auf, die in Einfache Konfiguration mit lokalen Sicherungen vorgestellt wird. Diese Änderungen an der Datei definieren ein zweites Sicherungs-Repository in einem Cloud Storage-Bucket, auf das über Identity and Access Management (IAM) zugegriffen wird.

Für den automatischen Authentifizierungsstil in diesem Beispiel muss ein AlloyDB Omni-Cluster auf einer Compute Engine-VM-Instanz ausgeführt werden. Wenn Sie AlloyDB Omni nicht auf einer Compute Engine-VM Instanz ausführen, können Sie trotzdem eine Sicherung in einem Cloud Storage-Bucket erstellen. Verwenden Sie dazu eine andere Authentifizierungsmethode, z. B. einen Google Cloud Dienstkontoschlüssel, der im lokalen Dateisystem gespeichert ist.

Anhand der folgenden Schritte erweitern Sie die vorherige Konfigurationsdatei so, dass ein Cloud Storage-basiertes pgBackRest-Repository definiert wird:

  1. Konfigurieren Sie die Bucket-Berechtigungen damit das Dienstkonto, das an Ihre VM-Instanz angehängt ist, in den Bucket schreiben kann. Dazu ist es erforderlich, dass die IAM-Rolle „Storage Object User“ für dieses Dienstkonto festgelegt ist.

  2. Fügen Sie dem Abschnitt [global] Ihrer Datei pgbackrest.conf diese Zeilen hinzu:

    # 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=PATH_IN_BUCKET
    
    # Cloud Storage backup retention parameters:
    repo2-retention-full=8
    repo2-retention-full-type=count
    

    Ersetzen Sie die folgende Variable:

    • BUCKET_NAME: Name des Cloud Storage-Buckets, in dem pgBackRest Sicherungen speichern soll.
    • PATH_IN_BUCKET: Verzeichnispfad im Cloud Storage-Bucket, in dem pgBackRest Sicherungen speichern soll.
  3. Initialisieren Sie den cloudbasierten Sicherungsspeicherort mit dem pgbackrest stanza-create Befehl:

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni stanza-create
    

    Ersetzen Sie BACKUP_DIR durch das Sicherungsverzeichnis, das Sie unter Sicherungsverzeichnis erstellen erstellt haben.

Nachdem Sie das Sicherungs-Repository in Ihrem Cloud Storage-Bucket mit dem Befehl pgbackrest stanza-create initialisiert haben, sichert pgBackRest möglicherweise an zwei Speicherorten:

  • Speicherort im lokalen Dateisystem, der an anderer Stelle in der Konfigurationsdatei als repo1-path definiert ist. Dies ist der standardmäßige Standort, wenn --repo im Befehl pgbackrest nicht angegeben ist.

  • Cloud Storage-Bucket, der mit den in diesem Beispiel eingerichteten Konfigurationsanweisungen repo2-gcs-bucket definiert wird. Wenn Sie den Cloud Storage-Bucket verwenden möchten, geben Sie im Befehl pgbackrest --repo=2 an.

Nächste Schritte