PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Woher weiß ich, ob meine PostgreSQL-Sicherung gut ist?

Backups sind ein Muss in jedem Disaster-Recovery-Plan. Es reicht möglicherweise nicht immer aus, um ein akzeptables Wiederherstellungspunktziel zu garantieren, ist aber ein guter erster Ansatz. Das Problem ist, was passiert, wenn Sie im Fehlerfall dieses Backup verwenden müssen und es aus irgendeinem Grund nicht verwendbar ist? Wahrscheinlich möchten Sie nicht in diese Situation geraten, also werden wir in diesem Blog sehen, wie Sie bestätigen können, ob Ihr Backup gut zu verwenden ist.

Arten von PostgreSQL-Sicherungen

Lassen Sie uns anfangen, über die verschiedenen Arten von Backups zu sprechen. Es gibt verschiedene Typen, aber im Allgemeinen können wir sie in zwei einfache Kategorien unterteilen:

  • Logisch :Das Backup wird in einem für Menschen lesbaren Format wie SQL gespeichert.
  • Physisch :Das Backup enthält binäre Daten.

Warum erwähnen wir das? Weil wir sehen werden, dass es einige Überprüfungen gibt, die wir für einen Typ durchführen können und nicht für den anderen.

Überprüfen der Sicherungsprotokolle

Der erste Weg, um zu bestätigen, ob alles in Ordnung ist, besteht darin, die Sicherungsprotokolle zu überprüfen.

Der einfachste Befehl zum Ausführen einer PostgreSQL-Sicherung könnte zum Beispiel lauten:

$ pg_dumpall > /path/to/dump.sql

Aber wie kann ich feststellen, ob bei der Ausführung des Befehls ein Fehler aufgetreten ist? Sie können einfach hinzufügen, dass die Ausgabe an eine bestimmte Protokolldatei gesendet wird:

$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Also können Sie diese Zeile im Server-Cron hinzufügen, um ihn jeden Tag auszuführen:

30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Und Sie sollten die Protokolldatei überwachen, um nach Fehlern zu suchen, indem Sie sie beispielsweise in ein Überwachungstool wie Nagios einfügen.

Das Überprüfen der Protokolle reicht nicht aus, um zu bestätigen, dass die Sicherung funktioniert, denn wenn beispielsweise die Sicherungsdatei aus irgendeinem Grund beschädigt ist, werden Sie dies wahrscheinlich nicht in der Protokolldatei sehen.

Überprüfen des Sicherungsinhalts

Wenn Sie logische Sicherungen verwenden, können Sie den Inhalt der Sicherungsdatei überprüfen, um zu bestätigen, dass Sie alle Datenbanken dort haben.

Sie können Ihre aktuellen PostgreSQL-Datenbanken beispielsweise mit diesem Befehl auflisten:

$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'

postgres

template1

world

Und überprüfen Sie, welche Datenbanken Sie in der Sicherungsdatei haben:

$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'

template1

postgres

world

Das Problem bei dieser Überprüfung ist, dass Sie die Größe oder die Daten nicht überprüfen, sodass es möglich ist, dass Sie Daten verlieren, wenn bei der Ausführung der Sicherung ein Fehler aufgetreten ist.

Wiederherstellen, um die Sicherung manuell zu prüfen

Der sicherste Weg, um zu bestätigen, ob ein Backup funktioniert, ist es wiederherzustellen und auf die Datenbank zuzugreifen.

Nachdem das Backup abgeschlossen ist, können Sie es manuell auf einem anderen Host wiederherstellen, indem Sie die Dump-Datei kopieren und zum Beispiel ausführen:

$ psql -f /path/to/dump.sql postgres

Dann können Sie darauf zugreifen und die Datenbanken überprüfen:

$ psql

postgres=# \l

                                  List of databases

   Name    | Owner   | Encoding |   Collate | Ctype    | Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

 postgres  | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

 template0 | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 | =c/postgres          +

           |          | |             | | postgres=CTc/postgres

 template1 | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 | =c/postgres          +

           |          | |             | | postgres=CTc/postgres

 world     | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

(4 rows)

Das Problem bei dieser Methode ist natürlich, dass Sie sie manuell ausführen oder einen Weg finden sollten, dies zu automatisieren, was eine zeitaufwändige Aufgabe sein könnte.

Automatische ClusterControl-Backup-Verifizierung

Sehen wir uns nun an, wie ClusterControl die Überprüfung von PostgreSQL-Backups automatisieren und dabei helfen kann, Überraschungen oder manuelle Aufgaben zu vermeiden.

Wählen Sie in ClusterControl Ihren Cluster aus und gehen Sie zum Abschnitt "Sicherung". Wählen Sie dann "Sicherung erstellen".

Die Funktion zur automatischen Überprüfung der Sicherung ist für geplante Sicherungen verfügbar. Wählen wir also die Option „Sicherung planen“.

Wenn Sie eine Sicherung planen, müssen Sie zusätzlich zur Auswahl der allgemeinen Optionen wie Methode oder Speicher auch Zeitplan/Häufigkeit angeben.

Im nächsten Schritt können Sie Ihre Sicherung komprimieren und verschlüsseln und die angeben Aufbewahrungsfrist. Hier haben Sie auch die Funktion „Sicherung überprüfen“.

Um diese Funktion zu verwenden, benötigen Sie einen dedizierten Host (oder eine VM). ist nicht Teil des Clusters.

ClusterControl installiert die Software und stellt die Sicherung auf diesem Host wieder her . Nach der Wiederherstellung sehen Sie das Bestätigungssymbol im Bereich ClusterControl Backup.

Fazit

Wie bereits erwähnt, sind Backups in jeder Umgebung obligatorisch, aber ein Backup ist kein Backup, wenn Sie es nicht verwenden können. Sie sollten also sicherstellen, dass Ihr Backup nützlich ist, falls Sie es eines Tages benötigen. In diesem Blog haben wir verschiedene Möglichkeiten aufgezeigt, wie Sie Ihr Backup überprüfen können, um Probleme zu vermeiden, wenn Sie es wiederherstellen möchten.