Hallo,
schön, dass man zwischendurch auch mal was in eigener Sprache zum Thema lesen kann. Ich hatte schon befürchtet, meine Frage in Lothar-Matthäus Stil formulieren zu müssen. Vorweg: ich würde eher von mir behaupten, dass mein Wissen über PostgreSQL und DBen… naja… sagen wir bestenfalls unvollständig ist.
Ich hoffe, dass ich hier mit meiner Frage richtig bin:
wie muss ich die Backups “meiner” DB konfigurieren, damit ich so aktuell und effizient wie möglich eine Sicherung der kompletten DB habe?
Installiert ist postgreSQL 9.1.9. Die DB umfasst 40 Tabellen mit mehreren Millionen Einträgen, täglich um mehrere tausend (evtl. auch zehtausend, kommt drauf an…) Einträge wachsend. Ich bin nicht sicher, ob das besonders relevant ist, aber es werden oids eingesetzt. Ferner gibt es zehntausende bytea-Objekte, die für das Ganze Prozedere zeitlich gesehen ein große Rolle zu spielen scheinen. Jedenfalls wurde mir zum Anlegen eines Backups der Befehl
pg_dumpall --clean --oids --username=postgres > /…/dump.sql
ans Herz gelegt. Im Ergebnis entspricht der Dump auch dem, was ich brauche, nur ergeben sich aus der Größe der DB damit mehrere Unannehmlichkeiten:
das Anlegen des Dumps dauert auf eine interne Platte ca. 1 Stunde, auf eine USB-Platte entsprechend länger. Das Backup soll nach Möglichkeit in einem anderen Raum (physisch) liegen, weshalb der Dump auf die interne Platte nur als Zwischenspeicherung in Frage kommt. Diese Zeit (1 Stunde) ist erträglich, obwohl die DB unter der Woche rund um die Uhr gebraucht wird.
Viel ärgerlicher ist aber die Zeit, die dann im Falle eines Sterbens der Festplatte gebraucht wird, um das Backup auf einem Server wieder einzuspielen. Ich habe die Zeit zwar nicht gestoppt, aber das schien zumindest mal > 6 Stunden zu brauchen, evtl. auch deutlich länger.
Nun also: gibt es eine Möglichkeit, die DB zumindest täglich wie beschrieben zu sichern? Ich stelle mir das idealer Weise so vor: ich erstelle einmalig einen kompletten Dump und spiele diesen auf einem Backup-Server ein. Jeden Tag wird dann ein Zwischenbackup von den Veränderungen seit dem letzten Zwischenbackup (spannende Frage: gibt’s sowas?) erstellt. Falls es so eine Funktion gibt, müsste das Ergebnis ja klein und schnell einzuspielen sein. Nach 7 Tagen könnte man dann die 7 Zwischenbackups auf dem Backup-Server einspielen, sodass dieser im Zweifelsfall schnell einsatzfähig ist (ohne die stundenlange Warterei auf das Einspielen des gesamten Dumps).
Geht das?
Dankbar für’s Durchlesen der Frage und jeden Hinweis, auch wo ich mal nachlesen sollte,
Jens