Informationen zu Kubernetes finden Sie unter Sichern und Wiederherstellen in Kubernetes.
Weitere Informationen zu pgBackRest finden Sie im Nutzerhandbuch.
Hinweise
Bevor Sie AlloyDB Omni für die Verwendung mit pgBackRest konfigurieren, müssen Sie die folgenden Voraussetzungen erfüllen:
- AlloyDB Omni auf einem Server installieren und ausführen, den Sie verwalten.
- Richten Sie persistenten Datenspeicher für Ihre AlloyDB Omni-Instanz ein.
Basiskonfiguration mit lokalen Sicherungen
Die Schritte in diesem Abschnitt führen Sie durch die grundlegende Einrichtung von pgBackRest. Bei einfachen Konfigurationen sind keine geplanten Sicherungen möglich. 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.
Sicherungsvolume in Ihrem Container bereitstellen
Aus organisatorischen Gründen empfehlen wir dringend, ein separates Volume für pgBackRest-Sicherungen zu erstellen und einzubinden. So richten Sie ein neues Volume ein:
Wenn Ihr Container ausgeführt wird, beenden und entfernen Sie ihn.
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Ersetzen Sie die folgende Variable:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Erstellen Sie ein Sicherungsverzeichnis im Dateisystem Ihres Containers.
Docker
mkdir -p BACKUP_DIR
Docker
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Ersetzen Sie die folgende Variable:
BACKUP_DIR
: Das Hostverzeichnis, in dem Ihre Sicherungen gespeichert werden.
Erstellen Sie den Container mit dem neuen Sicherungs-Volume neu.
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.NEW_PASSWORD
: Das Passwort, das dempostgres
-Nutzer des neuen Containers nach der Erstellung zugewiesen wurde. MitNEW_PASSWORD
wird nur dann ein neues Passwort festgelegt, wennDATA_DIR
ein neuer Standort ist.DATA_DIR
: Der Pfad des Hostverzeichnisses, in dem Ihre Daten gespeichert sind.DATA_DIR
: Der Pfad des Hostverzeichnisses, in dem Ihre Daten gespeichert sind.BACKUP_DIR
: Das Hostverzeichnis, in dem Ihre Sicherungen gespeichert werden.HOST_PORT
: Der TCP-Port auf dem Hostcomputer, auf dem der Container seinen eigenen Port5432
veröffentlichen soll. Wenn Sie auch den PostgreSQL-Standardport auf dem Hostcomputer verwenden möchten, geben Sie5432
an.
Machen Sie das Sicherungsverzeichnis in Ihrem Container für
postgres
lesbar.Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Ersetzen Sie die folgende Variable:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Lokale Sicherungen konfigurieren
pgBackRest erstellt für jede Sicherung Unterverzeichnisse und enthält eine Manifestdatei im Nur-Text-Format.
pgBackRest verwendet den Begriff „Stanza“ für die Konfiguration eines PostgreSQL-Datenbankclusters. Der Strophenname 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.
In das Repository werden Sicherungen geschrieben. pgBackRest unterstützt das Schreiben in mehrere Repositorys in einer bestimmten Strophe. Die meisten Konfigurationsparameter für Repositorys werden mit einem numerischen Wert indexiert. Beispiel: repo1-
. Parameter, die sich auf PostgreSQL-Cluster beziehen, werden ebenfalls unabhängig indexiert. Beispiel: pg1-
pgBackRest verwendet eine Konfigurationsdatei namens pgbackrest.conf
, um globale und stanzaspezifische Parameter zu speichern.
Wenn Sie eine Konfigurationsdatei zum Sichern Ihres AlloyDB Omni-Clusters erstellen und initialisieren möchten, erstellen Sie die Datei pgbackrest.conf
im Host-seitigen Sicherungsverzeichnis, das Sie unter Sicherungsvolume in Container einbinden erstellt haben.
[global]
# Paths (all mandatory):
repo1-path=/var/lib/postgresql/backups
spool-path=/var/lib/postgresql/backups/spool
lock-path=/var/lib/postgresql/backups
# 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/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=/tmp
pg1-path=/var/lib/postgresql/data
Einige Parameter sind obligatorisch, andere können bei Bedarf an Ihre spezifischen Anforderungen angepasst werden, z. B.:
repo1-path
: Der Verzeichnispfad, in den die Sicherungen geschrieben werden. Wir empfehlen einen Speicherort, der sowohl für den Hostserver als auch für den Container sichtbar ist.log-path
: Der Speicherort des Verzeichnisses, in das 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 beizubehaltenden vollständigen Sicherungen.repo1-retention-full-type
: Gibt an, ob die Kundenbindung nach Anzahl oder Zeitraum (Tage) gemessen wird.repo1-retention-diff
: Anzahl der beizubehaltenden 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) ausgegeben wird. Sie können diesen Wert in der Konfigurationsdatei an Ihre Anforderungen anpassen oder mit dem Befehlszeilenargument--log-level-console
überschreiben. Der Standardwert istwarn
.start-fast
: Erzwingt einen Prüfpunkt, um die Sicherungen schnell zu starten. Der Standardwert istn
.archive-async
: WAL-Segmentdateien asynchron übertragen, um die Leistung zu verbessern. Der Standardwert istn
.process-max
: Maximale Anzahl der Prozesse, die für die Komprimierung und Übertragung verwendet werden sollen. Diese Einstellung ist in der Regel aufmax_cpu/4
in einem primären Cluster oder aufmax_cpu/2
in einem Standby-Cluster festgelegt. Der Standardwert ist1
.compress-type
: Der zu verwendende Komprimierungsalgorithmus. Der Standardwert istgz
.
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 erforderlich sind, sowie einige empfohlene Parametereinstellungen. Eine vollständige Liste der Konfigurationsparameter finden Sie in der pgBackRest Configuration Reference.
Nachdem Sie pgBackRest konfiguriert haben, müssen die Ziel-Repositories, in die Back-ups geschrieben werden, initialisiert werden. Dazu erstellen Sie die Strophe, die die in der Konfigurationsdatei festgelegten Parameter verwendet.
Führen Sie die folgenden Schritte aus, um Ihre Datenbank für Sicherungen zu konfigurieren:
Erstellen Sie den Absatz mit dem Befehl
stanza-create
.Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Konfigurieren Sie Ihre Datenbank für Sicherungen.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Starten Sie den Container neu.
Docker
docker restart CONTAINER_NAME
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Sicherungskonfiguration validieren
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Führen Sie eine pgBackRest-Prüfung durch.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Sicherung erstellen
Führen Sie eine vollständige Sicherung durch.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Führen Sie eine differenzielle Sicherung durch.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Sicherungen melden.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Ersetzen Sie die folgenden Variablen:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
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 Google Cloud , 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 muss für dieses Dienstkonto die IAM-Rolle „Storage Object User“ festgelegt sein.
Fügen Sie diese Zeilen dem
[global]
-Abschnitt Ihrerpgbackrest.conf
-Datei 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 Back-ups speichern soll.PATH_IN_BUCKET
: Der Verzeichnispfad im Cloud Storage-Bucket, in dem pgBackRest Back-ups speichern soll.
Initialisieren Sie den cloudbasierten Sicherungsspeicherort mit dem Befehl
pgbackrest stanza-create
:Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Ersetzen Sie die folgende Variable:
CONTAINER_NAME
: Der Name, den Sie für Ihren Container verwendet haben.
Nachdem Sie das Sicherungs-Repository in Ihrem Cloud Storage-Bucket mit dem Befehl pgbackrest stanza-create
initialisiert haben, kann pgBackRest an bis zu zwei Speicherorten sichern:
Speicherort im lokalen Dateisystem, der an anderer Stelle in der Konfigurationsdatei als
repo1-path
definiert ist. Dies ist der Standardspeicherort, wenn--repo
im Befehlpgbackrest
nicht angegeben ist.Cloud Storage-Bucket, der mit den in diesem Beispiel eingerichteten
repo2-gcs-bucket
-Konfigurationsanweisungen definiert wird. Wenn Sie den Cloud Storage-Bucket verwenden möchten, geben Sie--repo=2
im Befehlpgbackrest
an.