Informationen zu Kubernetes finden Sie unter Sichern und Wiederherstellen in Kubernetes.
pgBackRest ist ein flexibles Sicherungs- und Wiederherstellungstool 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 (Point-in-Time Recovery, 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 im Nutzerhandbuch.
Hinweise
Bevor Sie AlloyDB Omni für die Verwendung mit pgBackRest konfigurieren, muss AlloyDB Omni auf einem von Ihnen kontrollierten Server 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 pgBackRest über die Konfigurationsdatei oder als Befehlszeilenargumente zur Verfügung 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 /var/lib/postgresql/data
, unabhängig vom Speicherort Ihres Datenverzeichnisses auf Ihrem Hostsystem. Das liegt daran, dass AlloyDB Omni Ihr Datenverzeichnis im containerisierten Dateisystem unter /var/lib/postgresql/data
bereitstellt. Daher können Sie das Datenverzeichnis ohne weitere Einrichtung als Speicherort für die pgBackRest-Konfiguration und ‑Repositories verwenden.
Wenn Sie das containerisierte pgBackRest so konfigurieren möchten, dass es aus Verzeichnissen im Dateisystem Ihres Hostcomputers außerhalb Ihres AlloyDB Omni-Datenverzeichnisses liest oder in diese 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, müssen diese für den Container sichtbar sein. Hinweis zu Dateisystempfaden
Authentifizierung über vertrauenswürdige Unix-Sockets einrichten
Ermöglichen Sie es der AlloyDB Omni-Hostmaschine, den postgres
-Nutzer des Datenbankservers ohne Passwort zu authentifizieren. Das vereinfacht die nachfolgenden Schritte.
Fügen Sie der Datei
DATA_DIR/pg_hba.conf
die folgende Zeile hinzu:local all postgres trust
Ersetzen Sie DATA_DIR durch den Dateisystempfad zu Ihrem Datenverzeichnis, z. B.
/home/$USER/alloydb-data
.AlloyDB Omni neu starten:
docker restart CONTAINER_NAME
Ersetzen Sie
CONTAINER_NAME
durch den Namen, den Sie dem AlloyDB Omni-Container bei der Installation zugewiesen haben, z. B.my-omni
.
Sicherungs-Repository erstellen und konfigurieren
Die in diesem Abschnitt erstellte Konfigurationsdatei ist ein Beispiel, das eine minimale Einrichtung für lokal gespeicherte, kontinuierliche Back-ups ermöglicht. Sie können diese Datei nach Bedarf ändern. Weitere Informationen finden Sie unter Cluster-Stanza konfigurieren.
Erstellen Sie im Datenverzeichnis von AlloyDB Omni das Unterverzeichnis
backups
:mkdir DATA_DIR/backups
Erstellen Sie in Ihrem Datenverzeichnis eine Datei mit dem Namen
pgbackrest.conf
und kopieren Sie den folgenden Inhalt hinein:[global] # Paths (all mandatory): repo1-path=/var/lib/postgresql/data/backups spool-path=/var/lib/postgresql/data lock-path=/var/lib/postgresql/data # 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=/var/lib/postgresql/data/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=/var/lib/postgresql/data pg1-path=/var/lib/postgresql/data/data
Initialisieren Sie den Sicherungsspeicherort mit dem Befehl
pgbackrest stanza-create
:docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create
Datenbank für kontinuierliche Sicherungen konfigurieren
Führen Sie den folgenden Befehl aus, um kontinuierliche Sicherungen zu aktivieren und mehrere PostgreSQL-Parameter festzulegen:
docker exec CONTAINER_NAME psql -h localhost -U postgres \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --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;"
AlloyDB Omni neu starten:
docker restart CONTAINER_NAME
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 Host 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 ein manuelles Backup zu erstellen. Ändern Sie den Befehl so, dass er in einem docker
exec
-Befehl ausgeführt wird und auf die Konfigurationsdatei verweist, die Sie zuvor erstellt haben:
docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backup
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 auch die Angabe zusätzlicher Sicherungs-Repositories auf Remote-Computern oder in der Cloud. Wenn Sie mehrere Repositorys definieren, schreibt pgBackRest standardmäßig gleichzeitig in alle.
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 Back-ups beschrieben 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 die automatische Authentifizierung 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.
So erweitern Sie die vorherige Konfigurationsdatei, um ein Cloud Storage-basiertes pgBackRest-Repository zu definieren:
Konfigurieren Sie die Bucket-Berechtigungen, damit das Dienstkonto, das an Ihre VM-Instanz angehängt ist, in den Bucket schreiben kann. Dazu ist die IAM-Rolle „Storage Object User“ für dieses Dienstkonto erforderlich.
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 Back-ups speichern soll.
Initialisieren Sie den cloudbasierten Sicherungsspeicherort mit dem Befehl
pgbackrest stanza-create
:docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --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:
Der Speicherort im lokalen Dateisystem, der an anderer Stelle in der Konfigurationsdatei als
repo1-path
definiert ist.Der Cloud Storage-Bucket, der mit den in diesem Beispiel eingerichteten
repo2-
-Konfigurationsanweisungen definiert wird.