Postgres DB sichern

Status
Für weitere Antworten geschlossen.

dathen

Benutzer
Mitglied seit
29. Mai 2007
Beiträge
65
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,

kann mir jemand sagen, wie die eingebaute Postgres DB gesichert werden kann? Würde sie gerne dumpen oder ggf. auch die Datendateien irgendwo nach /volume1 kopieren...

Da gibt's unter /usr/syno/pgsql/bin/ das executable "pg_dumpall", aber wenn ich das ausführe, gibt's folgende Fehlermeldung:

pg_dumpall: could not connect to database "template1": FATAL: role "root" does not exist

Irgendwelche Ideen?

Danke und Gruß, dathen
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich hab zwar den pg_dumpall noch nicht ausprobiert (weil ich den phppgadmin als 3rd-party nutze), aber eins weiß ich, mit dem Benutzer 'root' kommst da nicht weit. 'admin' ist der Richtige und ohne Passwort.

itari
 

dathen

Benutzer
Mitglied seit
29. Mai 2007
Beiträge
65
Punkte für Reaktionen
0
Punkte
0
Hi itari,

Ich hab zwar den pg_dumpall noch nicht ausprobiert (weil ich den phppgadmin als 3rd-party nutze), aber eins weiß ich, mit dem Benutzer 'root' kommst da nicht weit. 'admin' ist der Richtige und ohne Passwort.

itari

vielen Dank für den Tip, ich hatte pg_dumpall erstaml ohne parameter ausgeführt, so kam die obige Fehlermeldung zustande. Mit admin als User hat's geklappt. Werde mir aber auch mal den phppgadmin anschauen...

Merci und Gruß, dathen

PS: Hab's mir mal angeschaut, soweit ganz nett. Zur cronjob gesteuerten Sicherung ziehe ich pg_dumpall aber vor, wo es ja nun funktioniert ;-)
 
Zuletzt bearbeitet:

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Mit welchen Parametern rufst Du pg_dumpall genau auf?
 

dathen

Benutzer
Mitglied seit
29. Mai 2007
Beiträge
65
Punkte für Reaktionen
0
Punkte
0
Hi Trolli!

Mit welchen Parametern rufst Du pg_dumpall genau auf?

Jetzt, wo es funktioniert? Ich glaube sinngemäß mit "pg_dumpall -U admin > pgdump.sql" (bin grad nicht zuhause und habe keinen direkten Zugriff). Irgendwo habe ich noch gelesen, dass diese Zugriffsweise nicht ohne weiteres BLOBs sichern kann und man die Ausgabe von pg_dumpall in eine Nicht-Textdatei umleiten soll. So ganz verstanden hatte ich das aber nicht, um ehrlich zu sein.

Im Home-Verzeichnis habe ich noch eine .pgpass Datei liegen, in der das Passwort des admin Users steht (natürlich nur Leserechte für den User).

Das ganze steht bei mir in der crontab und wird im Moment einmal pro Nacht aufgerufen, ich erwäge aber, das auf einmal wöchentlich zu ändern, nämlich kurz bevor das Backup auf meine USB-Platte gezogen wird.

Zu pg_dumpall habe ich mich hier schlau gemacht:
http://www.postgresql.org/files/documentation/books/pghandbuch/html/app-pg-dumpall.html

Wie sicherst Du die Postgres-DB?

Gruß, dathen
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Im Moment eben noch gar nicht. Aber ich hab mir bereits etwas ähnliches für die MySQL-DB gebastelt. Da könnte ich ja gleich das Backup für die Postgres-DB mit reinpacken...

Danke für die Infos!

Trolli
 

linuxdep

Benutzer
Mitglied seit
02. Jan 2009
Beiträge
584
Punkte für Reaktionen
11
Punkte
38
was wird eigentlich alles in der Postgress Db gespeichert?
Soweit ich das in meinem kurzen DS Leben erfahren habe, sind die User für die Photo Station 3 drin, was noch???
 

Quicky81

Benutzer
Mitglied seit
21. Okt 2008
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Hilfe bei DUMP Erstellung mit phpPgAdmin

Hallo Synos, ich bin nun grad dabei die Postgres Datenbank (PhotoStation) von meiner alten DS106 (ohne Datenbanksicherungsfunktion) als Dump zu exportieren um Sie auf der neuen DS409 einzuspielen. Da ich jedoch keine Datenbankexperte bin, und grade mal weißt wie über phpMyAdmin ein Dump erstellt wird, komme ich nicht weiter. Die Export Funktion von phpPgAdmin bringt keinerlei Ausgabe und aus den Hilfen der Befehlsreferenz werde ich nicht schlau. Könnt Ihr mir helfen und erklären wie ich damit nun die Daten meiner Photostation sichern kann?:confused:
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich habs nie ausprobiert, aber ich würde es so machen wie auf dem Bildchen. Beim Einspielen das SQL-Fenster aufmachen und via Zwischenablage die Dateiinhalte einkopieren.

Itari
 

Anhänge

  • pgadmin.jpg
    pgadmin.jpg
    56,4 KB · Aufrufe: 126

Quicky81

Benutzer
Mitglied seit
21. Okt 2008
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Genau das habe ich schon gemacht, mehrfach, jedoch bleibt die Seite nach dem ausführen des Scripts bleibt die Seit im rechten Frame leider weiß und ich bekomme keine Datei zum download angeboten.... mache ich was falsch oder ist bei mir wieder die große ausnahme. Ich möchte doch nur von der alten 106 auf die neue 409 wechseln und mal up2date sein.

Edit:
Ich hab mal versucht über das linke Baummenu eine einzelne Tabelle zu exportieren, da komm egal was ich mache folgender Fehler:

<br />
<b>Notice</b>: Undefined offset: 1 in <b>/usr/syno/synoman/phpsrc/phppgadmin/dbexport.php</b> on line <b>75</b><br />
<br />
<b>Notice</b>: Undefined offset: 1 in <b>/usr/syno/synoman/phpsrc/phppgadmin/dbexport.php</b> on line <b>78</b><br />

Bedeutet das nun das ich n Problem hab oder ist das normal?

EDIT2:
Ich habe rausgefunden wie ich per SSH die Sicherung starten kann:

DiskStation> cd /usr/syno/pgsql/bin/
DiskStation> ./pg_dumpall -U admin > /tmp/pgdump.sql

Weitere Erkenntnisse folgen
 
Zuletzt bearbeitet:

Quicky81

Benutzer
Mitglied seit
21. Okt 2008
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Ich habe nun einen DUMP erstellt der die gesamte Postgres DB enthält, leider ist dieser mit 1 MB kleiner wie die noch leere Postgress DB mit 1,2MB auf der 409. Das bedeutet ich kann nicht einfach die ganze Datenbank zurückspielen da sonst Einträge auf der 409 fehlen würden, oder? Ich könnte doch versuchen über die phpPgAdmin einzelne SQL inserts einzufügen oder?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die Fehlermekldung kommt von einem falschen Pfad in den Skripten des phpPgAdmin - hab ich also auch. ;)

Mach mal auf der Konsole der DS folgendes:

Rich (BBCode):
ln /usr/syno/pgsql/bin/pg_dump /usr/bin/pg_dump

Bei mir wird es dann - und mach am besten pro Tabelle einen Export

Itari
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.505
Punkte für Reaktionen
1.343
Punkte
234
Ich habe rausgefunden wie ich per SSH die Sicherung starten kann:

DiskStation> cd /usr/syno/pgsql/bin/
DiskStation> ./pg_dumpall -U admin > /tmp/pgdump.sql

Das habe ich gemacht. Nur den Pfad auf einen Ordner unter volume1 geändert. Die pgdump.sql ist 113 MB groß. Scheint also funktioniert zu haben.:)

ABER:
Mit welchen Befehl kann ich die Sicherung auf einer neu aufgesetzten DS einspielen?
(ich habe erst versucht mit phpPgAdmin zu exportieren - hat aber immer Dateien mit 0 Byte produziert ...)

Vielen Dank schon mal
 

mars99

Benutzer
Mitglied seit
22. Aug 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
1
psql -U admin -L pgdump_restore.log -f pgdump.sql
Es gibt natürlich noch weitere Parameter bei 'psql', aber damit sollte es schon mal klappen.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.505
Punkte für Reaktionen
1.343
Punkte
234
Vielen Dank erst einmal für die Antwort.
Ich benutze die Konsole nur in Ausnahmefällen - kenne mich also überhaupt nicht aus:(

Mit diesem Befehl habe ich die DB gesichert:
cd /usr/syno/pgsql/bin/
./pg_dumpall -U admin > /volume1/files/pgdump.sql


Wie muss ich deine Befehle jetzt eingeben, damit ich die /volume1/files/pgdump.sql wieder rücksichern kann???
Sorry, dass ich es so genau wissen muss...

Danke
 

mars99

Benutzer
Mitglied seit
22. Aug 2012
Beiträge
29
Punkte für Reaktionen
0
Punkte
1
Vielen Dank erst einmal für die Antwort.
Ich benutze die Konsole nur in Ausnahmefällen - kenne mich also überhaupt nicht aus:(

Mit diesem Befehl habe ich die DB gesichert:
cd /usr/syno/pgsql/bin/
./pg_dumpall -U admin > /volume1/files/pgdump.sql


Wie muss ich deine Befehle jetzt eingeben, damit ich die /volume1/files/pgdump.sql wieder rücksichern kann???
Sorry, dass ich es so genau wissen muss...
Danke

Ich bin mir nicht sicher ob auch alle Datenbanken und Schemata mit pg_dumpall in der "pgdump.sql" landen, gehe im folgenden aber davon aus (nutze sonst nur pg_dump und gebe an welche Datenbanken und Schemata gesichert werden sollen. pg_dumpall vermittelt aber den Eindruck alles zu sichern).
Die Datei kann wie folgt wieder eingespielt werden (wenn noch was in der Datenbank drin ist kann das Fehler werfen)....
  1. Login als "admin"...
  2. cd /usr/syno/pgsql/bin/
  3. psql -U admin -L /volume1/files/pgdump_restore.log -f /volume1/files/pgdump.sql
Es wird eine Logdatei "pgdump_restore.log" unter /volume1/files gespeichert. Weitere Meldungen/Fehler bei der Befehlsausführung werden auf der Kommandozeile ausgegeben. Wenn es in einer Transaktion ausgeführt werden soll müsste noch der Parameter "-1" (ohne die Anführungszeichen - "minus eins" kein kleines L) oder alternativ "--single-transaction" verwendet werden. Wenn es in einer Transaktion eingespielt werden soll und ein noch so kleiner Fehler auftritt, bricht PostgreSQL den gesamten Restore Prozess ab und "nichts" wird in der DB gespeichert (auch nicht das was am Anfang fehlerfrei war; Transaktion(ssicherheit) bedeutet hier: Es wird alles oder gar nichts in der DB gespeichert).
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat