Dieser Blog wurde am 27.11.18 und am 29.11.18 aktualisiert, um Änderungen vorzunehmen, die von unseren großartigen Kommentatoren empfohlen wurden!
Wie bei jeder anderen Komponente eines Unternehmens sind Datenbanken äußerst wichtig für das Innenleben.
Unabhängig davon, ob es sich um den Kern des Unternehmens oder nur um eine weitere Komponente handelt, sollten Datenbanken regelmäßig gesichert und für eine mögliche zukünftige Wiederherstellung an sicheren Orten aufbewahrt werden.
Sollte ich in der Cloud sichern?
Als allgemeine Regel gilt, mindestens 3 Kopien von Wertgegenständen zu haben und diese Backups an verschiedenen Orten aufzubewahren. Sicherungen auf demselben Laufwerk sind nutzlos, wenn das Laufwerk selbst ausfällt, Sicherungen desselben Hosts sind ebenfalls gefährdet, wenn der Host ausfällt, und Sicherungen desselben Gebäudes sind ebenfalls gefährdet, wenn das Gebäude abbrennt (drastisch und unwahrscheinlich, aber möglich). P>
Cloud-Backups bieten eine einfache Lösung für den Bedarf an externen Backups, ohne dass neue Hardware an einem sekundären Standort eingerichtet werden muss. Es gibt viele verschiedene Cloud-Dienste, die Backup-Speicher anbieten, und die Wahl des richtigen hängt von Backup-Anforderungen, Größenanforderungen, Kosten und Sicherheit ab.
Die Vorteile von Cloud-Backups sind vielfältig, drehen sich jedoch hauptsächlich darum, diese Backups an einem anderen Ort als der Hauptdatenbank zu speichern, sodass wir im Falle einer Notfallwiederherstellung ein Sicherheitsnetz haben. Wir werden zwar nicht im Detail darauf eingehen, wie diese Backup-Optionen eingerichtet werden, aber wir werden einige verschiedene Ideen und Konfigurationen für Backups untersuchen.
Das Speichern von Backups in der Cloud hat einige Nachteile, beginnend mit der Übertragung. Wenn die Backups für die Datenbank extrem groß sind, kann der eigentliche Upload lange dauern und sogar höhere Kosten verursachen, wenn der Cloud-Service Gebühren für die Bandbreitenübertragung erhebt. Komprimierung wird dringend empfohlen, um Zeit und Kosten gering zu halten.
Sicherheit könnte ein weiteres Problem beim Hosten von Backups in der Cloud sein, während einige Unternehmen strenge Richtlinien dafür haben, wo ihre Daten gespeichert und vorhanden sind. Wenn die Sicherheit ein Problem darstellt, können alle Backups verschlüsselt werden, bevor sie zu einem Cloud-Hosting-Service exportiert werden.
Cloud-Backup-Optionen
Es gibt verschiedene Möglichkeiten, Datenbanksicherungen für PostgreSQL zu erstellen, und je nach Art der Sicherung variieren Wiederherstellungszeit, Größe und Infrastrukturoptionen. Da es sich bei vielen der Cloud-Speicherlösungen einfach um Speicher mit unterschiedlichen API-Frontends handelt, kann mit ein wenig Skripting jede clevere Backup-Lösung erstellt werden.
Snapshot-Sicherungen
Snapshots sind Sicherungen, die eine Kopie der PostgreSQL-Datenbank zu einem bestimmten Zeitpunkt enthalten. Diese Sicherungen werden entweder mit pg_dump erstellt, wodurch die Datenbank einfach in eine einzelne Datei gesichert wird, oder indem das Basisdatenverzeichnis für PostgreSQL kopiert wird. Beide können komprimiert, auf andere Laufwerke und Server kopiert und in die gewünschte Cloud-Speicheroption kopiert werden.
pg_dump mit Komprimierung verwenden
pg_dump -Fc severalnines > severalnines.dmp
Datenverzeichnissicherung mit pg_basebackup
Mit dem Programm pg_basebackup kann sehr einfach ein Basis-Backup erstellt werden. Weitere Informationen zu allen Funktionen und deren Einrichtung finden Sie in der offiziellen Dokumentation für die verwendete Version von PostgreSQL.
pg_basebackup --format=tar -z -D severalnines_basebackup
Amazon S3
Mit der AWS-Plattform von Amazon ist S3 ein Datenspeicherdienst, der zum Speichern von Datenbanksicherungen verwendet werden kann. Während Backups über die Webschnittstelle hochgeladen werden können, kann die Amazon CLI (Command Line Interface) dazu verwendet werden, dies über die Befehlszeile und über Backup-Automatisierungsskripte zu tun. Informationen zur AWS CLI finden Sie hier. Wenn Backups sehr lange aufbewahrt werden sollen und die Wiederherstellungszeit keine Rolle spielt, können Backups an den Glacier-Service von Amazon übertragen werden, der eine viel günstigere Langzeitspeicherung bietet.
aws s3 cp severalnines.dmp s3://severalninesbucket/backups
Amazon hat auch verschiedene Regionen für seine Dienste auf der ganzen Welt. Auch wenn sie eine gute Verfügbarkeitshistorie haben, erhöht die Verteilung von Sicherungskopien auf mehrere Regionen die Möglichkeiten der Notfallwiederherstellung und verringert die Wahrscheinlichkeit, dass wertvolle Daten verloren gehen.
Microsoft Azure-Speicher
Die Cloud-Plattform von Microsoft, Azure, hat Speicheroptionen mit einer eigenen Befehlszeilenschnittstelle, Informationen finden Sie hier.
az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup
Alle anderen modernen Cloud-Speicherdienste sollten ähnliche Tools zum Kopieren von Backups auf ihre Cloud-Server anbieten. Weitere Informationen finden Sie in ihrer Dokumentation.
Standby-Backups
Manchmal können Backups selbst in komprimiertem Zustand extrem groß sein, und das Hochladen eines täglichen oder wöchentlichen Backups in einen Cloud-Dienst könnte aufgrund von Bandbreitengeschwindigkeiten und/oder Kosten nicht in Frage kommen. Daher ist es viel schwieriger, ein Backup zur sicheren Aufbewahrung in die Cloud zu bekommen.
Eine Möglichkeit, dies zu tun, besteht darin, einen Warm- oder Hot-Standby in einer Cloud-basierten virtuellen Maschine auszuführen, z. B. in einer EC2-Instance von Amazon, wo es sich um eine exakte Kopie der Haupt-Master-Datenbank handelt und die einzigen Daten, die an die Cloud-Instance gesendet werden ist jede Änderung, anstatt eine weitere Kopie der gesamten Datenbank. Dazu müsste die gesamte Datenbank auf einmal übertragen werden, aber danach müssen nur die Änderungen übertragen werden.
Aber ist ein Standby-Server eigentlich ein Backup? Wenn die Master-Datenbank ausfällt, kann der Standby in den Master umgewandelt und Anwendungen darauf umgeleitet werden. Wenn jedoch das Ziel darin besteht, Backups für einen bestimmten Zeitpunkt in den letzten Wochen / Monaten zu haben, wird dies nicht funktionieren.
Um dies zu beheben, können mehrere Dinge getan werden. Der Standby selbst kann zu einer Verzögerung gezwungen werden, indem Daten beispielsweise erst aufgenommen werden, wenn sie einen Tag alt sind. Eine andere Möglichkeit besteht darin, Backups auf eine der herkömmlichen Arten (pg_dump, Datenverzeichniskopie) auf dem Cloud-Standby zu erstellen, was bedeutet, dass diese Backups nicht über das Netzwerk übertragen werden müssen, da sie auf dem Cloud-Rechner selbst erstellt werden. Übertragungen innerhalb des Netzwerks sind in der Regel schneller und billiger.
ClusterControl-Sicherungen und die Cloud
Multiplenines hat ClusterControl entwickelt, ein Datenbankverwaltungssystem, das bei der Verwaltung vieler verschiedener Datenbanken, einschließlich PostgreSQL, hilft. Es ist eine ultimative Toolbox für jeden Datenbank- oder Systemadministrator, um die vollständige Kontrolle und Sichtbarkeit seiner Datenbanken zu haben, und enthält sehr praktische Backup-Funktionen.
Mit ClusterControl können Sicherungen von PostgreSQL-Datenbanken einfach verwaltet, geplant und so eingerichtet werden, dass die erstellten Sicherungen automatisch in „Cloud-Speicher“-Dienste kopiert werden, einschließlich Amazon S3, Microsoft Azure und Google Cloud. Dadurch ist es nicht erforderlich, benutzerdefinierte Tools zum Hochladen von Backups in die Cloud zu erstellen, und bietet eine schöne Benutzeroberfläche für die Backups im Allgemeinen.
Das Sichern unserer Datenbanken sollte immer erfolgen, und das Speichern an einem zweiten, dritten und vierten Ort ist eine sehr gute und gängige Praxis. Das Hinzufügen einer Cloud-Option erhöht die Disaster-Recovery-Optionen und schafft eine weitere Ebene der Back-End-Stabilität für ein Unternehmen, bei dem in vielen Fällen das Unternehmen verschwindet, wenn die Datenbank verschwindet. Wenn Sie heute Cloud-Backup-Optionen erkunden, können Sie die Katastrophe von morgen verhindern.