TDE-fähige Cluster unterstützen transparente Sicherungen und Wiederherstellungen mit pgBackRest. Sie müssen keine zusätzlichen Schritte ausführen. Weitere Informationen finden Sie unter TDE-fähigen Cluster erstellen.
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.
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 bereitzustellen. 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: Hostverzeichnis, in dem Ihre Sicherungen gespeichert werden.
Erstellen Sie den Container mit dem neuen Sicherungsvolume 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.BACKUP_DIR: 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 fügt eine Manifestdatei im Nur-Text-Format hinzu.
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, das 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 für Repositorys werden mit einem numerischen Wert indexiert. Beispiel: repo1-. Parameter, die sich auf PostgreSQL-Cluster beziehen, werden ebenfalls unabhängig indexiert. Parameter, die für den ersten PostgreSQL-Cluster in einem Stanza spezifisch sind, haben beispielsweise das Präfix pg1-.
pgBackRest verwendet eine Konfigurationsdatei namens pgbackrest.conf, die globale und stanzaspezifische Parameter enthält.
Um eine Konfigurationsdatei zum Sichern Ihres AlloyDB Omni-Clusters zu erstellen und zu initialisieren, erstellen Sie die Datei pgbackrest.conf im Host-seitigen Sicherungsverzeichnis, das Sie in Sicherungsvolume in Container einbinden oder Sicherungsverzeichnis erstellen 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: Der Speicherort des Verzeichnisses, in das 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 Kundenbindung 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 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 werden aus Leistungsgründen asynchron übertragen. Der Standardwert istn.process-max: Maximale Anzahl der Prozesse, 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: 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 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 Back-ups geschrieben werden, initialisiert werden. Dazu wird die Strophe erstellt, 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 die 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 folgende Variable:
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 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 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-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 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 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=countErsetzen 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.
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--repo=2im Befehlpgbackrestan.