pgBackRest ist ein flexibles Sicherungs- und Wiederherstellungs-Dienstprogramm für PostgreSQL. Da AlloyDB Omni mit PostgreSQL kompatibel ist, können Sie pgBackRest verwenden, um Ihre AlloyDB Omni-Daten mit manuellen, geplanten und kontinuierlichen Sicherungen zu schützen.
pgBackRest schreibt seine Sicherungsdaten in lokale, Remote- oder cloudbasierte Repositories. Nachdem Sie mindestens ein Repository eingerichtet haben, können Sie pgBackRest verwenden, um Ihre AlloyDB Omni-Daten mit verschiedenen Methoden wiederherzustellen, einschließlich der Wiederherstellung zu einem bestimmten Zeitpunkt (PITR).
AlloyDB Omni enthält pgBackRest in seinem Docker-Container. Sie können also pgBackRest verwenden, um Ihre AlloyDB Omni-Daten zu sichern und wiederherzustellen, ohne zusätzliche Software installieren zu müssen.
Weitere Informationen zu pgBackRest finden Sie in seinem Nutzerhandbuch.
Hinweis
Bevor Sie AlloyDB Omni für die Verwendung mit pgBackrest konfigurieren, muss AlloyDB Omni auf einem Server, den Sie steuern, installiert sein und ausgeführt werden.
Hinweis zu Dateisystempfaden
Die in AlloyDB Omni enthaltene pgBackRest-Software wird im selben Docker-Container wie AlloyDB Omni ausgeführt. Aus diesem Grund sind alle Dateisystempfade, die Sie verwenden, um pgBackRest über die Konfigurationsdatei oder als Befehlszeilenargumente zur Verfügung zu stellen, Speicherorte im Dateisystem des Containers und nicht im Dateisystem Ihres Hostcomputers.
Viele der Befehle und Beispiele auf dieser Seite beziehen sich auf Ihr Datenverzeichnis als /mnt/disks/pgsql
, unabhängig vom Speicherort Ihres Datenverzeichnisses auf Ihrem Hostsystem. Das liegt daran, dass AlloyDB Omni Ihr Datenverzeichnis im containerisierten Dateisystem unter /mnt/disks/pgsql
bereitstellt. Daher können Sie das Datenverzeichnis ohne weitere Einrichtung als Speicherort für die pgBackRest-Konfiguration und ‑Repositories verwenden.
Wenn Sie den containerisierten pgBackRest so konfigurieren möchten, dass er aus Verzeichnissen im Dateisystem Ihres Hostcomputers außerhalb Ihres AlloyDB Omni-Datenverzeichnisses liest oder in solche Verzeichnisse schreibt, müssen Sie diese Verzeichnisse für den Container verfügbar machen.
Basiskonfiguration mit lokalen Sicherungen
Die Schritte in diesem Abschnitt führen Sie durch eine einfache Einrichtung von pgBackRest, einschließlich einer kurzen Konfigurationsdatei, die pgBackRest anweist, kontinuierliche Sicherungsdaten in ein Unterverzeichnis Ihres AlloyDB Omni-Datenverzeichnisses zu schreiben.
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. Wenn Sie Dateisystempfade ändern, denken Sie daran, dass diese für den Container sichtbar sein müssen; siehe auch Ein Hinweis zu Dateisystempfaden
Authentifizierung über vertrauenswürdige Unix-Sockets einrichten
Ermöglichen Sie es dem AlloyDB Omni-Hostcomputer, den postgres
-Nutzer des Datenbankservers ohne die Notwendigkeit eines Passworts zu authentifizieren. Das vereinfacht die nachfolgenden Schritte.
Fügen Sie der Datei
/var/alloydb/config/pg_hba.conf
die folgende Zeile hinzu:local all postgres trust
AlloyDB Omni neu starten:
sudo alloydb database-server stop
sudo alloydb database-server start
Sicherungs-Repository erstellen und konfigurieren
Die in diesem Abschnitt erstellte Konfigurationsdatei ist ein Beispiel, das eine minimale Einrichtung für die lokal gespeicherte, kontinuierliche Sicherung ermöglicht. Sie können diese Datei entsprechend Ihren Anforderungen beliebig ändern. Weitere Informationen finden Sie unter Cluster-Stanza konfigurieren.
Erstellen Sie in Ihrem AlloyDB Omni-Datenverzeichnis ein
backups
-Unterverzeichnis:mkdir DATA_DIR/backups
Ersetzen Sie DATA_DIR durch den Dateisystempfad zu Ihrem Datenverzeichnis, z. B.
/home/$USER/alloydb-data
.Erstellen Sie in Ihrem Datenverzeichnis eine Datei mit dem Namen
pgbackrest.conf
und kopieren Sie den folgenden Inhalt in die Datei:# 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
Initialisieren Sie den Sicherungsspeicherort mit dem Befehl
pgbackrest stanza-create
:docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create
Datenbank für kontinuierliche Sicherungen konfigurieren
Damit kontinuierliche Sicherungen ermöglicht werden, führen Sie den folgenden Befehl aus, um mehrere PostgreSQL-Parameter festzulegen:
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;"
AlloyDB Omni neu starten:
sudo alloydb database-server stop
sudo alloydb database-server start
pgBackRest-Befehle ausführen
Wenn Sie die Schritte im vorherigen Abschnitt ausführen, wird pgBackRest für die Verwendung mit Ihrem AlloyDB Omni-Server konfiguriert. Informationen zum Prüfen des Sicherungsstatus, zum Erstellen manueller Sicherungen und zum Ausführen anderer Aufgaben finden Sie in der Befehlsreferenz.
Als Best Practice sollten Sie pgBackRest-Befehle direkt auf dem Hostcomputer ausführen, auf dem der AlloyDB Omni-Container installiert ist, und dabei den Befehl docker exec
verwenden. Verwenden Sie beispielsweise den Befehl pgbackrest backup
, um eine manuelle Sicherung zu erstellen. Ändern Sie ihn so, dass er als Teil eines docker
exec
-Befehls ausgeführt wird und auf die Konfigurationsdatei verweist, die Sie zuvor erstellt haben:
docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni --type=full backup
Der Wert des Flags --config-path
ist /mnt/disks/pgsql
, da dies immer der Speicherort Ihres Datenverzeichnisses im Dateisystem des AlloyDB Omni-Containers ist. Wenn Sie die Schritte im vorherigen Abschnitt ausgeführt haben, enthält Ihr Datenverzeichnis die Datei pgbackrest.conf
, die für die korrekte Ausführung von pgBackRest-Befehlen erforderlich ist. Weitere Informationen finden Sie unter Ein Hinweis zu Dateisystempfaden.
Sie können auch Umgebungsvariablen verwenden, um den Speicherort Ihrer pgBackRest-Konfigurationsdatei festzulegen. Weitere Informationen finden Sie unter Konfigurationspfadoption.
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-Repositories 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-Buckets 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:
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.
Fügen Sie Ihrer
pgbackrest.conf
-Datei 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=/pgbackrest # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=count
Ersetzen Sie BUCKET_NAME durch den Namen des Cloud Storage-Buckets, in dem pgBackRest Sicherungen speichern soll.
Initialisieren Sie den cloudbasierten Sicherungsspeicherort mit dem Befehl
pgbackrest stanza-create
:docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create
Nachdem Sie das Sicherungs-Repository in Ihrem Cloud Storage-Bucket mit dem Befehl pgbackrest stanza-create
initialisiert haben, sichert pgBackRest an zwei Speicherorten:
Dem Speicherort im lokalen Dateisystem, der an anderer Stelle in der Konfigurationsdatei als
repo1-path
definiert ist.Dem Cloud Storage-Bucket, der mit den in diesem Beispiel eingerichteten
repo2-
-Konfigurationsanweisungen definiert wird.