PostgreSQL: Backup

juedan

FreeBSDler
Hellau Forum,

da für meine Bergtouren-Datenbank das Konzept steht und ausprogrammiert ist, möchte ich natürlich in regelmäßigen Abständen ein Backup aller Daten machen. PostgreSQL bietet eine für meine Zwecke ausreichende Möglichkeit an: pg_dump(all).

In der Anleitung steht, dass pg_dump per Parameter -Fc die Ausgabe mit Hilfe von zlib komprimiert: pg_dump -Fc database > database.dump.gz
Die Alternative ist pg_dump database | gzip > database.dump.gz

Meine Fragen ist nun:
Sind die beiden Verfahren kompatibel zueinander und ist pg_dump -Fc versionsneutral?

Im Voraus vielen Dank für die Antworten
 

medV2

Well-Known Member
Ich denke ja, aber ob postgress garantiert, dass es Versionsneutral ist weiß ich nicht.

Ich würde aber - wenn ich mit pg_dump dumpe - das ganze durch zstd pipen, ist besser und schneller als beide anderen von dir genannten Alternativen.
 

juedan

FreeBSDler
Moin medV2,

danke für die Antwort.
In der Dokumentation zu PostgreSQL steht leider nichts zur Versionsneutralität.

Ich werde dann wie Du es vorschlägst mit GZIP komprimieren. Wenn ich mich eingelsen habe, wird pg_basebackup zum Einsatz kommen.

Danke und schönen Fasching/Fastnacht/Fasnet/...
 

medV2

Well-Known Member
Wenn du nur einen Server mit ner kleinen DB hast, ist basebackup womöglich ein Overkill, du musst dafür auch an der config schrauben.

Ich hab btw zstd empfohlen nicht gzip :D
 

juedan

FreeBSDler
Wenn du nur einen Server mit ner kleinen DB hast, ist basebackup womöglich ein Overkill, du musst dafür auch an der config schrauben.
Die Datenbank wächst natürlich stetig weiter: je mehr Bergtouren, desto mehr EInträge... und es stehen da noch viele Berge herum:D

Ich hab btw zstd empfohlen nicht gzip :D

Oh, ach so. Ich dachte, das wäre ein Platzhalter für ein wie auch immer geartetes Zip :D
 

Azazyel

Well-Known Member
Für den Anfang würde ich pg_dump empfehlen, das in der Voreinstellung simple Plain-SQL-Dumps erzeugt. Die haben den Vorteil, sich problemlos PostgreSQL-versionsübergreifend als auch (meist mit nur minimalsten Anpassungen) in anderen SQL-Datenbanken importieren zu lassen.

Die Option --format=custom erstellt in kürzer Zeit einen platzsparenderen Dump, der aber rein maschinenlesbar ist. Dieser Dump ist ausschließlich aufwärtskompatibel, d.h. er lässt sich nur in der gleichen oder einer neueren PostgreSQL-Version einspielen, niemals in einer älteren.

Die Verwendung von pg_basebackup ist für ein Hobby-Projekt vermutlich Overkill, ohne genauere Infos lässt sich das aber schwerlich abschließend beurteilen.

Die Backups würde ich in jedem Fall mit zstd komprimieren. Im Jahre 2020 gibt es praktisch keinen Grund mehr, noch gzip zu verwenden. Falls die Zeit zum Komprimieren und Dekomprimieren keinerlei Rolle spielt, kann man höchstens noch mit xz ein paar Byte einsparen.
 

Yamagi

Possessed With Psi Powers
Teammitglied
Die Backups würde ich in jedem Fall mit zstd komprimieren.
Da kann es sich lohnen noch etwas mit dem Compression Window umzuspielen. Das ist die Option --long, bei strukturiertem Text - wie so ein Dump ja oft ist - kann sie wahre Wunder wirken.

Ansonsten würde ich auch erstmal mit pg_dump anfangen. Aber bitte mit einem Script außen herum, was die Backups automatisch durchrotiert, Fehlercodes auswertet und so weiter. Und nicht einfach nur das Kommando selbst in die Crontab. :)
 

juedan

FreeBSDler
@Yamagi : eh kloar, mache ich grundsätzlich so. Die Backups werden sowohl auf Festplatte, USB-Stick und bei meinem Webhoster gesichert.
@Azazyel , medV2 : für den Anfang werde ich eh pg_dump nehmen.

pg_basebackup werde ich mir zumindest zu Gemüte führen. Mal sehen, vielleicht kommt es bei größerem Datenvolumen zum Einsatz - wie geschrieben: da wird es noch viele Bergtouren geben...

Danke für die Ratschläge und den Tipp mit zstd, den ich umsetzen werde.
 
Oben