Verwenden von Skripten zum Sichern und Wiederherstellen der PostgreSQL-Datenbank
Die folgenden Skripte stehen zur Ausführung von Sicherungen der PostgreSQL-Datenbank zur Verfügung. Wenn Sie die Skripte ausführen, müssen Sie Ihre Datenbank nicht anhalten, um eine Sicherung durchzuführen.
- postgresql_backup_pre.sh: Dieses Skript versetzt die Datenbank in den Sicherungsmodus.
- postgresql_snapshot_post.sh: Dieses Skript holt die Datenbank aus dem Sicherungsmodus.
- postgresql_settings: Dies ist eine Konfigurationsdatei, in der die PostgreSQL-Variablen evtl. aktualisiert werden müssen.
- postgresql_backup_post.sh: Dieses Skript aktualisiert das Protokoll über den Sicherungsstatus.
Voraussetzungen
Bevor Sie mit der Sicherung beginnen, stellen Sie Folgendes sicher:
- "WAL level" ist auf "archive" (oder "hot_standby") eingestellt
- "archive_mode" ist auf "on" eingestellt
- "archive_command" muss festgelegt werden, um den Archivierungsspeicherort anzugeben
Hinweis: Um die Einstellungen anzuwenden, starten Sie den Server nach der Konfiguration dieser Einstellungen in der Datei "postgresql.conf" neu.
Die folgenden Befehle unterstützen bei der Prüfung des Status des Archivmodus nach dem Neustart:
- show archive_mode
- show archive_command
- show WAL level
Anwenden von Skripten
Befolgen Sie diese Schritte:
- Extrahieren Sie die LinuxPostgres.zip, die die folgenden vier Dateien enthält: postgresql_backup_pre.sh, postgresql_snapshot_post.sh, postgresql_settings, postgresql_backup_post.sh
- Kopieren Sie die Dateien aus "pre/post backup/snapshot" in den folgenden Pfad auf dem Linux-Sicherungsserver: /opt/Arcserve/d2dserver/usr/prepost.
- Kopieren Sie "postgresql_settings" in den Quellpfad "/root/backup".
- Achten Sie darauf, dass Sie "postgresql_settings" auf alle Werte anhand der Variablen prüfen, und nehmen Sie erforderliche Änderungen gemäß Ihrer Umgebung vor.
- Konfigurieren Sie den Plan über die UDP-Konsole, und wählen Sie den PostgreSQL-Knoten als Quelle aus.
-
- Bestätigen Sie den Sicherungsstatus. Um den Status der PostgreSQL-Sicherung zu ermitteln, prüfen Sie die Datei "arcserve_postgresql_backup_${DATE}.log". Diese Protokolldatei wird unter dem vom Benutzer festgelegten Verzeichnis erstellt. Weitere Informationen zur Konfiguration des Verzeichnisses finden Sie in der Datei "postgresql_settings".
Wiederherstellen der PostgreSQL-Datenbank
Gehen Sie wie folgt vor:
- Halten Sie den Datenbankserver an.
- Um den ursprünglichen Speicherort wiederherzustellen, gehen Sie folgendermaßen vor:
- Löschen Sie Dateien und Verzeichnisse aus dem aktuellen Ordner "/data".
- Führen Sie eine Wiederherstellung des gesamten Ordners "/data" durch.
- Löschen Sie die Dateien der folgenden Ordner nach Abschluss der Wiederherstellung aus dem Ordner "/data":
- pg_dynshmem/
- pg_notify/
- pg_serial/
- pg_snapshots/
- pg_stat_tmp/
- pg_subtrans/
- pg_internal.init
- Öffnen Sie den Ordner, der für die WAL-Archivierung konfiguriert ist, und gehen Sie folgendermaßen vor:
- Löschen Sie die Dateien im wiederhergestellten Verzeichnis "pg_wal", das die Informationen zu Transaktionen enthält, die während der Sicherung durchgeführt wurden.
- Kopieren Sie nun für Datenkonsistenz und Wiederherstellung auf einen bestimmten Zeitpunkt die Dateien vom benutzerdefinierten archivierten Speicherort in den Ordner "pg_wal".
- Starten Sie den Datenbankserver.
Wiederherstellen an einem alternativen Speicherort auf demselben Server
- Halten Sie den Datenbankserver an.
- Führen Sie "PGDATA" aus, und konfigurieren Sie es auf "new_data_directory_path".
- Initialisieren Sie die neu erstellte Datenbank mithilfe von "Initdb" cmd.
- Löschen Sie Dateien und Verzeichnisse aus dem aktuellen Ordner "/data".
- Führen Sie eine Wiederherstellung des gesamten Ordners "/data" durch.
- Löschen Sie die Dateien aus den folgenden Ordnern nach Abschluss der Wiederherstellung aus dem Ordner "/data":
- pg_dynshmem/
- pg_notify/
- pg_serial/
- pg_snapshots/
- pg_stat_tmp/
- pg_subtrans/
- pg_internal.init
- Öffnen Sie den Ordner, der für die WAL-Archivierung konfiguriert ist, und gehen Sie folgendermaßen vor:
- Löschen Sie die Dateien im wiederhergestellten Verzeichnis "pg_wal", das die Informationen zu Transaktionen enthält, die während der Sicherung durchgeführt wurden.
- Kopieren Sie nun für Datenkonsistenz und Wiederherstellung auf einen bestimmten Zeitpunkt die Dateien vom benutzerdefinierten archivierten Speicherort in den Ordner "pg_wal".
- Starten Sie den Datenbankserver.
- Hinweis: Stellen Sie sicher, dass der Datenbankstart in der Sitzung durchgeführt wird, in der PGDATA aktualisiert wird.
Einschränkungen
Die obigen Skripte können keine Sicherung durchführen, wenn die PostgreSQL-Datenbank mit einem nicht standardmäßigen Port konfiguriert ist. Die Skripte funktionieren nur mit der standardmäßigen Portnummer 5432.
Um dieses Problem zu umgehen, verwenden Sie die folgenden Empfehlungen, um die Skripte "postgresql_backup_pre.sh" und "postgresql_snapshot_post.sh" manuell zu ändern:
- postgresql_backup_pre.sh:
- Original: sudo -u ${USERNAME} -H -- psql -c "SELECT pg_start_backup('Arcserve UDP backup - ${DATE} $(timestamp)', true)" >> ${LOG} 2>&1
- Geändert: sudo -u ${USERNAME} -H -- psql -p 5432 -c "SELECT pg_start_backup('Arcserve UDP backup - ${DATE} $(timestamp)', true)" >> ${LOG} 2>&1
- postgresql_snapshot_post.sh:
- Original: sudo -u ${USERNAME} -H -- psql -c "SELECT pg_stop_backup()" >> ${LOG} 2>&1
- Geändert: sudo -u ${USERNAME} -H -- psql -p 5432 -c "SELECT pg_stop_backup()" >> ${LOG} 2>&1
Copyright © 2014-2021, Arcserve. Alle Rechte vorbehalten.
|
|