Datenbank wiederherstellen OHNE pg_dump

Mein Hoster hat auf meinem Ubuntu-Server ein Update ausgeführt. Jetzt bootet er nicht mehr. Ich kann nur noch über den Recovery-Modus eine SSH Shell öffnen.

Auf dem Server ist Postgres 9.1 installiert. Allerdings kann ich im Recovery-Modus keine Installationen vornehmen und habe nur Leserechte. Ich möchte jetzt auf einen anderen Server umziehen und vor allem wieder auf meine Datenbank zugreifen können.

Leider habe ich keinen aktuellen Datenbank-Dump, den ich auf einem anderern Server einspielen könnten. Aber ich kann /var/lib/postgresql auf einen neuen Server kopieren. Da sollten die Daten ja eigentlich enthalten sein.

Wenn ich dann aber auf den neuen Rechner den Postgres Server mit meinem kopierten Verzeichnis starte, kommt so etwas wie “incorrect checksum in control file”.

Gibt es irgendeinen weg, OHNE pg_dump die Datenbank wiederherzustellen? Ich habe wie gesagt keinen Dump und kann auf dem kaputten Server auch keinen erzeugen.

Wie wäre es deinen Unbuntu Server erstmal zu reparieren, so das Du pg_dump ganz normal nutzen kannst?
Dein Anbieter wird Dir sicher eine chroot Möglichkeit gegeben haben, von dem Du vom Rescue System in den Read/Write
versetzen kannst, zumindest ist das bei Strato, bei 1&1, Hetzner und Alfahosting so.

Das ist alles recht suboptimal.

  • PG 9.1 ist seit, Moment, …, seit 2016 nicht mehr supportet, die letzte Version mit Community-Support erschien als 9.1.24 am 27. 10. 2016.

  • Du hast keinen aktuellen Dump. Vermutlich auch kein aktuelles physisches Backup. Also, unterm Strich, gar kein Backup. Offenbar sind/waren die Daten also nicht wichtig.

  • wenn Du das DataDir sichern kannst, und dieses valide ist, dann kannst Du (unter dem selben OS mit derselben Umgebung) die DB damit wieder starten. Eine Fehlermeldung, die mit "kommt so etwas wie " startet, ist aber nicht hilfreich. Vermutlich startest Du mit != 9.1

Zur letzten Frage: ein pg_dump brauchst Du jetzt nicht mehr, Du brauchst ein Restore von einem Backup, was vor dem Crash erstellt wurde. Oder anders formuliert: Du willst kein Backup, Du willst Restore.

Für die Zukunft:

  • Update, update, update, …
  • nutze aktuelle Versionen
  • mache Backups
  • prüfe die Backups
  • Backups müssen vollständig unabhängig vom zu sichernden DB-Server sein
  • pg_dump als logisches Backup hat seine Grenzen, nicht nur, daß da globale Objekte fehlen, es hat auch kein PITR
  • schaue Dir daher auch Alternativen wie z.B. Barman an
  • wenn es wichtig ist, suche Dir professionellen Support, die Dich vorher beraten, wie man es richtig macht. Z.B. bei uns.