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

Erstellen eines Cold Standby für PostgreSQL mit Amazon AWS

Die Notwendigkeit, Hochverfügbarkeit für Datenbanken zu erreichen, ist eine ziemlich häufige Aufgabe und oft ein Muss. Wenn Ihr Unternehmen über ein begrenztes Budget verfügt, kann es teuer werden, einen Replikations-Slave (oder mehr als einen) zu unterhalten, der auf demselben Cloud-Anbieter läuft (nur abzuwarten, ob er eines Tages benötigt wird). Abhängig von der Art der Anwendung gibt es einige Fälle, in denen ein Replikations-Slave erforderlich ist, um das RTO (Recovery Time Objective) zu verbessern.

Es gibt jedoch eine andere Option, wenn Ihr Unternehmen eine kurze Verzögerung akzeptieren kann, um Ihre Systeme wieder online zu bringen.

Cold Standby ist eine Redundanzmethode, bei der Sie einen Standby-Knoten (als Backup) für den primären Knoten haben. Dieser Knoten wird nur während eines Masterausfalls verwendet. Die restliche Zeit ist der Cold-Standby-Knoten heruntergefahren und wird nur verwendet, um bei Bedarf ein Backup zu laden.

Um diese Methode zu verwenden, ist eine vordefinierte Backup-Richtlinie (mit Redundanz) gemäß einem akzeptablen RPO (Recovery Point Objective) für das Unternehmen erforderlich. Es kann sein, dass der Verlust von 12 Stunden Daten für das Unternehmen akzeptabel ist oder dass der Verlust von nur einer Stunde ein großes Problem darstellen könnte. Jedes Unternehmen und jede Anwendung muss ihren eigenen Standard bestimmen.

In diesem Blog erfahren Sie, wie Sie eine Sicherungsrichtlinie erstellen und sie mithilfe von ClusterControl und seiner Integration mit Amazon AWS auf einem Cold-Standby-Server wiederherstellen.

Für diesen Blog gehen wir davon aus, dass Sie bereits ein AWS-Konto und ClusterControl installiert haben. Während wir in diesem Beispiel AWS als Cloud-Anbieter verwenden werden, können Sie einen anderen verwenden. Wir verwenden die folgende PostgreSQL-Topologie, die mit ClusterControl bereitgestellt wird:

  • 1 primärer PostgreSQL-Knoten
  • 2 PostgreSQL Hot-Standby-Knoten
  • 2 Load Balancer (HAProxy + Keepalived)

Erstellen einer akzeptablen Sicherungsrichtlinie

Die beste Vorgehensweise zum Erstellen dieser Art von Richtlinie besteht darin, die Sicherungsdateien an drei verschiedenen Orten zu speichern, einen lokal auf dem Datenbankserver (für eine schnellere Wiederherstellung), einen anderen auf einem zentralen Sicherungsserver und der letzte in der Wolke.

Sie können dies verbessern, indem Sie auch vollständige, inkrementelle und differenzielle Sicherungen verwenden. Mit ClusterControl können Sie alle oben genannten Best Practices ausführen, alle vom selben System aus, mit einer benutzerfreundlichen und einfach zu bedienenden Benutzeroberfläche. Beginnen wir mit der Erstellung der AWS-Integration in ClusterControl.

Konfigurieren der ClusterControl-AWS-Integration

Gehen Sie zu ClusterControl -> Integrationen -> Cloud-Anbieter -> Cloud-Anmeldeinformationen hinzufügen.

Wählen Sie einen Cloud-Anbieter aus. Wir unterstützen AWS, Google Cloud oder Azure. Wählen Sie in diesem Fall AWS und fahren Sie fort.

Hier müssen Sie einen Namen, eine Standardregion und eine AWS hinzufügen Schlüssel-ID und Schlüsselgeheimnis. Um diese letzteren zu erhalten oder zu erstellen, sollten Sie zum Abschnitt IAM (Identity and Access Management) in der AWS-Verwaltungskonsole gehen. Weitere Informationen finden Sie in unserer Dokumentation oder AWS-Dokumentation.

Nun haben Sie die Integration erstellt, lassen Sie uns das erste Backup mit planen ClusterControl.

Planung eines Backups mit ClusterControl

Gehen Sie zu ClusterControl -> PostgreSQL-Cluster auswählen -> Backup -> Backup erstellen.

Sie können wählen, ob Sie sofort eine einzelne Sicherung erstellen oder eine planen möchten neue Sicherung. Wählen wir also die zweite Option und fahren fort.

Wenn Sie eine Sicherung planen, müssen Sie zuerst einen Zeitplan festlegen /Frequenz. Dann müssen Sie eine Sicherungsmethode (pg_dumpall, pg_basebackup, pgBackRest), den Server, von dem die Sicherung genommen wird, und den Ort, an dem Sie die Sicherung speichern möchten, auswählen. Sie können unser Backup auch in die Cloud (AWS, Google oder Azure) hochladen, indem Sie die entsprechende Schaltfläche aktivieren.

Geben Sie dann die Verwendung der Komprimierung, die Komprimierungsstufe, die Verschlüsselung und den Aufbewahrungszeitraum an für Ihre Sicherung. Es gibt eine weitere Funktion namens „Sicherung verifizieren“, die Sie bald in diesem Blogbeitrag ausführlicher sehen werden.

Wenn die Option „Backup in die Cloud hochladen“ aktiviert war, In diesem Schritt müssen Sie die Cloud-Anmeldeinformationen auswählen und einen S3-Bucket erstellen oder auswählen, in dem die Sicherung gespeichert werden soll. Sie müssen auch den Aufbewahrungszeitraum angeben.

Jetzt haben Sie die geplante Sicherung im Abschnitt „Sicherung planen“ von ClusterControl. Um die zuvor erwähnten Best Practices abzudecken, können Sie eine Sicherung planen, um sie auf einem externen Server (ClusterControl-Server) und in der Cloud zu speichern, und dann eine weitere Sicherung planen, um sie lokal im Datenbankknoten für eine schnellere Wiederherstellung zu speichern.

Wiederherstellen einer Sicherung auf Amazon EC2

Sobald die Sicherung abgeschlossen ist, können Sie sie wiederherstellen, indem Sie ClusterControl im Bereich Sicherung verwenden.

Erstellen der Amazon EC2-Instanz

Um es wiederherzustellen, benötigen Sie zunächst einen Ort, an dem Sie dies tun können. Lassen Sie uns also eine einfache Amazon EC2-Instanz erstellen. Gehen Sie in der AWS-Verwaltungskonsole im EC2-Abschnitt zu „Launch Instance“ und konfigurieren Sie Ihre Instance.

Wenn Ihre Instanz erstellt wird, müssen Sie die öffentliche SSH-Datei kopieren key vom ClusterControl-Server.

Wiederherstellen der Sicherung mit ClusterControl

Jetzt haben Sie die neue EC2-Instanz, verwenden wir sie, um die Sicherung dort wiederherzustellen. Gehen Sie dazu in Ihrem ClusterControl in den Backup-Bereich (ClusterControl -> Cluster auswählen -> Backup), und dort können Sie "Backup wiederherstellen" auswählen oder direkt "Wiederherstellen" auf dem Backup, das Sie wiederherstellen möchten.

Sie haben drei Möglichkeiten, die Sicherung wiederherzustellen. Sie können die Sicherung in einem vorhandenen Datenbankknoten wiederherstellen, die Sicherung auf einem eigenständigen Host wiederherstellen und überprüfen oder aus der Sicherung einen neuen Cluster erstellen. Da Sie einen Cold-Standby-Knoten erstellen möchten, verwenden wir die zweite Option „Auf eigenständigem Host wiederherstellen und überprüfen“.

Sie benötigen einen dedizierten Host (oder eine VM), der nicht Bestandteil ist des Clusters, um die Sicherung wiederherzustellen, verwenden wir also die für diesen Job erstellte EC2-Instanz. ClusterControl installiert die Software und stellt die Sicherung auf diesem Host wieder her.

Wenn die Option „Server herunterfahren, nachdem die Sicherung wiederhergestellt wurde“ aktiviert ist, stoppt ClusterControl den Datenbankknoten nach Abschluss des Wiederherstellungsjobs, und genau das brauchen wir für diese Cold-Standby-Erstellung.

Sie können den Sicherungsfortschritt im Abschnitt ClusterControl-Aktivität überwachen.

Verwenden der ClusterControl-Verify-Backup-Funktion

Ein Backup ist kein Backup, wenn es nicht wiederherstellbar ist. Stellen Sie daher sicher, dass die Sicherung funktioniert, und stellen Sie sie regelmäßig auf dem Cold-Standby-Knoten wieder her.

Diese Backup-Funktion von ClusterControl Verify Backup ist eine Möglichkeit, die Wartung eines Cold-Standby-Knotens zu automatisieren, indem ein aktuelles Backup wiederhergestellt wird, um dieses so aktuell wie möglich zu halten und den manuellen Wiederherstellungs-Backup-Job zu vermeiden. Mal sehen, wie es funktioniert.

Für die Aufgabe „Auf eigenständigem Host wiederherstellen und überprüfen“ ist ein dedizierter Host (oder eine VM) erforderlich, der nicht Teil des Clusters ist, um die Sicherung wiederherzustellen. Verwenden wir also dieselbe EC2-Instance hier.

Die Funktion zur automatischen Überprüfung der Sicherung ist für geplante Sicherungen verfügbar. Gehen Sie also zu ClusterControl -> Select the PostgreSQL Cluster -> Backup -> Create Backup und wiederholen Sie die Schritte, die Sie zuvor gesehen haben, um ein neues Backup zu planen.

Im zweiten Schritt steht Ihnen die Funktion „Sicherung überprüfen“ zur Verfügung um es zu aktivieren.

Mit den obigen Optionen installiert ClusterControl die Software und stellt die Sicherung wieder her der Wirt. Wenn nach der Wiederherstellung alles geklappt hat, sehen Sie das Bestätigungssymbol im Bereich ClusterControl Backup.

Fazit

Wenn Sie ein begrenztes Budget haben, aber Hochverfügbarkeit benötigen, können Sie einen Cold-Standby-PostgreSQL-Knoten verwenden, der je nach RTO und RPO des Unternehmens gültig sein kann oder nicht. In diesem Blog haben wir Ihnen gezeigt, wie Sie ein Backup planen (entsprechend Ihrer Geschäftsrichtlinie) und wie Sie es manuell wiederherstellen. Wir haben auch gezeigt, wie Sie das Backup automatisch in einem Cold-Standby-Server mit ClusterControl, Amazon S3 und Amazon EC2 wiederherstellen können.