Umzugssorgen

Hallo Forum,

ich bin Anfänger beim Thema Datenbank und will hier nur eine ältere Installation auf neue Hard- und Software umziehen lassen.

Vor einigen Wochen habe ich schonmal ein paar Fragen gestellt, aber bin mangels Durchblick damit nicht weitergekommen.
Vielleicht klappt es diesmal besser.

Ich habe eine postgresql 6.5.3 auf einem betagten Rechner Laufen. Alles unter Linux (alt Redhat, neu Debian). Es gibt dort nur eine relevante Datenbank mit einigen Tabellen.

Andreas Kretschmer hatte mir den Tipp gegeben, es folgendermassen zu versuchen:
pg_dumpall -h ip.des.alten.servers|psql datenbank

Dabei bekomme ich nun folgende Fehlermeldung:

pg_dumpall: konnte nicht mit der Datenbank »template1« verbinden: expected authentication request from server, but received U

Diese Meldung kommt auch, wenn ich den user “-U postgres” angebe und mich per Passwort authentifiziere.

Woran kann das noch liegen?

Danke,
Schultze

Ich tippe darauf, daß in der pg_hba.conf da eine zu Deinen Versuchen unpassende AUTH-Methode festgelegt ist. Schau Dir an, was dort steht (die pg_hba.conf des laufenden Systems) Diese Datei ist gut dokumentiert. Notfalls zeige uns diese Datei.

Ich hab hier grad keinen Zugang zu einem gescheiten System, Windoze mit Explodierer ohne Tabbed Browsing ist einfach nur Scheiße…

Andreas, im inet-caffee sitzend…

Hallo Andreas,

hier die Zeile der pg_hba.conf:

host all ip.des.netzes.0 255.255.255.0 trust

Ich kann von den Windowskisten im Netz mittels Excell und Query auch Datenabfragen machen. Also nehme ich an, dass das so korrekt ist.

Schultze

Kannst du mittels psql auf die Datenbank connecten?

Es kann auch sein, das die Auth Methoden bzw. das Protokoll von 6.x in den hohen 7.x Versionen (7.4 bei Debian, oder?) gar nicht mehr unterstützt werden.

Bliebe wohl als Ausweg, mal eine ältere 7.x Version von Hand zu compilieren und in ein eigenes Verzeichnis zu installieren.

Nein, das geht leider nicht.

Hier ist es 8.1. Gibt es denn keine möglichkeit die Authenifizierung temporär zu deaktivieren? Also, dass gar nicht nach dem User und dessen Berechtigung gefragt wird?

Das klingt nach einer Menge vertrakter Kleinigkeiten…

Schultze

Ich glaube, mich zu erinnern, das zwischendrin der Code, um auf ganz alte Datenbanken zuzugreifen, herausgeworfen wurde. Sind einfach Altlasten, die man nicht über viele Versionen mitführen möchte.

Ich würde mir also an deiner Stelle irgendwo die älteste PG Version besorgen, die du finden kannst und die mal temporär irgendwohin installieren. Reicht ja schon, wenn das /tmp ist. Damit kannst du probieren, ob du auf die Datenbank kommst.

Wenn du da schon dabei bist und Erfolg hast, einen Dump zu ziehen: spiele den in diese temporäre Version ein und dumpe diese Datenbank wiederum mit der 8.x Version …

Jetzt kommt zumindest eine andere Fehlermeldung:

Ich habe Version 7.4 installiert, das ist die älteste, die es ohne Verrenkung per apt-get für “etch” gibt. Der Server läuft nach wie vor unter 8.1.

/usr/lib/postgresql/7.4/bin/pg_dump -i -h ip.des.alten.servers datenbank | /usr/lib/postgres/7.4/bin/psql -p 5433

ergibt folgende Meldung

pg_dump: Version des Servers: 6.5.3; Version von pg_dump: 7.4.16
pg_dump: Fortsetzung trotz unterschiedlicher Versionen
pg_dump: konnte Datumsstil nicht auf ISO setzen: ERROR: parser: parse error at or near “iso”

Kann man das hinbiegen, oder muss ich noch eine ältere Version probieren?

Schultze

Also zuerst einmal würde ich den Dump bloss in eine Datei ziehen. Dann siehst du, ob das ganze schon beim Export schief geht oder erst beim Import in die neue DB. Davon ausgehend kannst du entscheiden, ob du mit einer älteren Version arbeiten musst oder sollst oder ob man vielleicht mit etwas nachbearbeiten des Dumps die Sachlage klären kann.

Ansonsten gibt es hier: http://www.postgresql.org/ftp/source/v7.3.18/ noch etwas ältere Sourcen. Wie gesagt, einfach nur temporär die Software compilieren und nach /tmp oder so installieren. Das kann man danach ja komplett wieder wegwerfen.

Ansonsten gibt es hier noch ganz alte Versionen:

ftp://ftp-archives.postgresql.org/pub/source/

Rein aus der Erinnerung heraus:

host all all ip.des.netzes.0/24 trust

Du hast da vermutlich was flasch: es fehlt DB oder user (all all) und die Syntax für die Netzadresse ist kapott (CIDR, frag Wikimedia, falls Dir das nix sagt)




Andreas

Welche von den Sourcen muss ich denn holen? Ich brauche doch eigentlich nur pg_dump mit den notwendigen Librarys.

Schultze

Hast du meinen ersten Vorschlag schon geprüft, indem du erst mal bloss den Dump von der anderen Maschine holst?

Kann ich das dann nicht gleich mit der 6.5.3 auf dem alten System machen?

Dann muss ich wohl die ganze Datenbank installieren und nicht nur pg_dump?

Ich werde das mal probieren.
Danke,
Schultze

Ja, gleiche Meldung:

/usr/lib/postgresql/7.4/bin/pg_dump -i -h ip.des.alten.servers datenbank > dump
pg_dump: Version des Servers: 6.5.3; Version von pg_dump: 7.4.16
pg_dump: Fortsetzung trotz unterschiedlicher Versionen
pg_dump: konnte Datumsstil nicht auf ISO setzen: ERROR: parser: parse error at or near “iso”

Schultze

hrmpf Schade.

Was gegen die alte Version spricht: eigentlich der Grund, das die neuere Version immer auch die Verhaltensweisen der älteren Version kennt und dementsprechend das passend für die neue umschreiben kann.

Der empfohlene Weg ist, mit der neueren Version zu dumpen, weil man dann in der Regel einen Dump erhält, den man ohne großen Aufwand in die neue Datenbank einspielen kann.

Wenn du jetzt einen Dump mit der 6.x erstellst, wirst du sicherlich viel umarbeiten dürfen, um das in deiner 8.x einspielen zu können.

Du kannst mal testweise in der postgresql.conf den Parameter ‘datestyle’ verändern, ich weiss aber nicht auswendig, ob pg_dump den nutzt …

Würde ich mal probieren, aber welche möglichen Werte gibt es dort?

Schultze

http://search.postgresql.org/search?q=datestyle&a=1&submit=Search