Informationen zu Kubernetes finden Sie unter Sichern und Wiederherstellen in Kubernetes.
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:
- Installieren und führen Sie AlloyDB Omni auf einem Server aus, den Sie steuern.
- Richten Sie einen persistenten Datenspeicher für Ihre AlloyDB Omni-Instanz ein.
Basiskonfiguration mit lokalen Sicherungen
Die Schritte in diesem Abschnitt führen Sie durch eine einfache 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.
Sicherungs-Volume in Ihrem Container bereitstellen
Aus organisatorischen Gründen empfehlen wir dringend, ein separates Volume für pgBackRest-Backups zu erstellen und einzuhängen. So richten Sie ein neues Volume ein:
Wenn Ihr Container ausgeführt wird, beenden und entfernen Sie ihn.
Docker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAMEDocker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAMEPodman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAMEPodman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAMEErsetzen 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. Beachten Sie, dassNEW_PASSWORDnur dann ein neues Passwort festlegt, wennDATA_DIRein neuer Speicherort 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 Port5432veröffentlichen soll. Wenn Sie auch den PostgreSQL-Standardport auf dem Hostcomputer verwenden möchten, geben Sie5432an.
Machen Sie das Sicherungsverzeichnis in Ihrem Container für
postgreslesbar.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“, um die Konfiguration für einen PostgreSQL-Datenbankcluster zu bezeichnen. Der Strophenname ist beliebig und muss nicht mit dem Hostserver, dem PostgreSQL-Cluster oder dem Datenbanknamen übereinstimmen. In der pgBackRest-Dokumentation wird empfohlen, die Stanza nach der Funktion des Clusters zu benennen.
Im Repository werden Sicherungen gespeichert. pgBackRest unterstützt das Schreiben in mehr als ein Repository in einer bestimmten Stanza. Die meisten Konfigurationsparameter, die sich auf Repositories beziehen, 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, die globale und stanzaspezifische Parameter enthält.
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 Sicherungs-Volume in Ihrem Container bereitstellen 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: Verzeichnisspeicherort, 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: Verzeichnisspeicherort, in den die Logdateien geschrieben werden. Wenn Sie die Logdateien an einen separaten Speicherort schreiben möchten, der nicht mit den Sicherungen selbst vermischt ist, passen Sie diesen Parameter an.repo1-retention-full: Anzahl der Vollsicherungen, die beibehalten werden sollen.repo1-retention-full-type: Gibt an, ob die Aufbewahrung nach Anzahl oder Zeitraum (Tage) gemessen wird.repo1-retention-diff: Anzahl der differenziellen Backups, die aufbewahrt werden sollen.
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) angezeigt wird. Sie können dies in der Konfigurationsdatei an Ihre Anforderungen anpassen oder diesen Wert 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 von Prozessen, die für die Komprimierung und Übertragung verwendet werden sollen. Dieser Wert wird normalerweise auf einem primären Cluster aufmax_cpu/4oder auf einem Stand-by-Cluster aufmax_cpu/2festgelegt. Der Standardwert ist1.compress-type: Zu verwendender 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 AlloyDB Omni-Standardkonfiguration erforderlich sind, sowie einige empfohlene Parametereinstellungen. Eine vollständige Liste der Konfigurationsparameter finden Sie in der pgBackRest Configuration Reference.
Nach der Konfiguration von pgBackRest müssen die Ziel-Repositories, in die Sicherungen geschrieben werden, durch Erstellen der Stanza initialisiert werden. Dabei werden 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 Stanza 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.
Validieren Sie die Sicherungskonfiguration.
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 durchführen
Führen Sie eine Vollsicherung 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 ein differenzielles Backup 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.
Berichtssicherungen
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 die Angabe zusätzlicher Backup-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-Bucket als Backup-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 Backup-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 dem Abschnitt
[global]Ihrerpgbackrest.conf-Datei die folgenden 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=countErsetzen Sie die folgende Variable:
BUCKET_NAME: Name des Cloud Storage-Buckets, in dem pgBackRest Sicherungen speichern soll.PATH_IN_BUCKET: Der Verzeichnispfad im Cloud Storage-Bucket, in dem pgBackRest Sicherungen 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 Backup-Repository in Ihrem Cloud Storage-Bucket mit dem Befehl pgbackrest stanza-create initialisiert haben, sichert pgBackRest möglicherweise an zwei Speicherorten:
Dem Speicherort im lokalen Dateisystem, der an anderer Stelle in der Konfigurationsdatei als
repo1-pathdefiniert ist. Dies ist der standardmäßige Standort, wenn--repoim Befehlpgbackrestnicht angegeben ist.Dem 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 im Befehlpgbackrestden Wert--repo=2an.