Backup und Restore von 7.2 auf 8.1

Hi und Hallo,

ich bin neu hier und hoffe in der richtigen Rubrik zu sein.

Ist es moeglich, einen Dump von der Version 7.2.1 auf 8.1.9 zu Uebertragen?
Ebenfalls handelt es dabei um einen Systemwechsel von Linux auf Solaris 10.

gruesse & Dank

Ja … aber wohl nicht in einem Schritt.
Die empfohlene Prozedur ist, mit dem pg_dump der höheren Version auf die alte Datenbank zuzugreifen und damit die Daten zu exportieren. Diese werden dann gleich in dem passenden Format für die neue Version geschrieben.

Allerdings kann es sein, das du ein oder zwei Zwischenschritte einlegen musst und z.B. eine 7.4 oder eine 8.0 in ein temporäres Verzeichnis installieren musst. Mit dem pg_dump dieser temporären Version liest du die 7.2 aus und spielst die Daten in die 7.4 ein. Mit dem pg_dump der 8.2 greifst du auf die 7.4 zu und wiederholst den Schritt.

Klar soweit? :smiley:

Funktioniert den der Dump auch ueber ein SSH? Da die Datenbank nicht vorort ist.

Ja.

Andreas

Der Dump selber nicht, aber du kannst entweder per ssh auf den Datenbankserver zugreifen und dann dort die Aktionen ausführen oder du kannst mittels pg_bha.conf die Datenbank so konfigurieren, das man (auch ssl verschlüsselt) von Remote auf die Datenbank zugreifen kann.

Inwieweit kennst du dich mit PostgreSQL aus?

Man kann auch SSH benutzen, um Portforwarding zu betreiben und pg_dump darüber laufen lassen. Man kann auch ssh auf den anderen Rechner machen, dort pg_dump aufrufen und den Dump lokal ablegen. Machbar ist da vieles…

Andreas, SSH cool findend…

Das Problem wie ihr es doch beschrieben habt ist die gewisse abwaertskompatibilitaet. Somit ich mit PostgreSQL 8.1 nen Dump per SSH-Verbindung auf den 7.2 machen wuerde.
Wenn das denn ginge???

Ich glaube, wir reden aneinander vorbei.

Beschreib uns doch bitte mal an einem Beispiel, was genau du dir darunter vorstellst.

Ja, das kannst Du versuchen, was genau ist denn Dein Problem? ssh -L5555:localhost:5432 und Du hast lokal auf 5555 den dortigen PG-Server. Es kann aber passieren, daß das 8.1 pg_dump Dinge versucht, die auf 7.2 fehlschlagen. Exakt deswegen sagte ads aber auch schon, daß Du evtl. eine Zwischenversion installieren sollst.

Andreas

Ja ich weiss, daher sitzte ich noch an der Umsetzung.

Aber auf jedenfall Danke :slight_smile:

Es gab folgende Ausgabe

-bash: --: command not found
-bash: --: command not found
-bash: --: command not found
-bash: SET: command not found
-bash: SET: command not found
-bash: SET: command not found
-bash: --: command not found
-bash: --: command not found
-bash: Type:: command not found
-bash: Schema:: command not found
-bash: Owner:: command not found
-bash: --: command not found
-bash: COMMENT: command not found
-bash: --: command not found
-bash: --: command not found
-bash: Type:: command not found
-bash: Schema:: command not found
-bash: Owner:: command not found
-bash: --: command not found
-bash: REVOKE: command not found
-bash: REVOKE: command not found
-bash: GRANT: command not found
-bash: GRANT: command not found
-bash: --: command not found
-bash: --: command not found
-bash: --: command not found

Liegt es an dem Versionsunterschied oder an der SSH ???

Sicher das du den Dump im psql verwendest und nicht auf der normalen Kommandozeile ausführst??? So schaut das nämlich aus…

cu tb.

Das sind SQL-Befehle (und Kommentare), die Du der BASH anvertraust. Die Bash ist zwar recht mächtig, kann aber selbst kein SQL. Von daher wäre es zielführender, du würdest diese Befehle an PG verfüttern. psql -f wäre ein Weg dahin…


Andreas

Im Netz hatte ich folgenden String gefunden…

pg_dump -U USERNAME YOUR-DATABASE-NAME | ssh user@remote.server.com "dd of=/pgsql/$(date +’%d-%m-%y’)"

Mit dem ich es probiert habe

Urgs …

Nun sag mir bitte, das du weisst, was dieser String macht und das nicht nur einfach probiert hast.

Ja leider fische ich hier um dunkeln. Bin aber echt froh darueber euch gefunden zuhaben.
Mir wurde dieses Vorhaben uebergeben, was ja auch nicht so schlimm ist. Nur komm ich nicht voran.

Dieser String macht das verstehen nicht wirklich leichter, nur fand ich diesen unter dem Gesichtspunkt einen Dump per SSH zumachen.

Erst einmal brauchst Du einen Plan. Einen Plan von dem, was Du machen willst. Hilfreich ist auch Zettel und Bleistift. Da malst Du erst mal auf, welche Rechner beteiligt sind, wo welche DB mit welcher Version läuft und wo was hin soll.

Auf dem Rechner, auf dem pg_dump aufgerufen wird, läuft es auch. Du solltest also, bei einer Migration, pg_dump der neueren Version aufrufen. Dem pg_dump kannst via -h und -p sagen, zu welchem Host/Port verbunden werden soll. Das kann auch ein entfernter rechner sein.

Wenn Du dem Netz dazwischen nicht traust oder aus anderen Gründen kannst Du SSH einschalten. Du willst aber weiterhin pg_dump auf dem Rechner mit der neuen Version nutzen. Also machst Du, vom neuen Rechner aus, eine SSH-Verbindung incl. Portforwarding zum alten, zu sichernden Rechner: (ich unterstelle mal, SSH-Zielhost ist gleich dem Server. Das kann aber auch wieder anders sein)

ssh -L5555:127.0.0.1:5432 <alter_server>

In einer anderen Konsole auf dem rechner mit der neuen Version startest Du nun:

pg_dump -h localhost -p 5555 ....

Es mag komisch erscheinen, daß da localhost steht. Glaub mir, ist so. Durch das SSH mit dem -L - Geraffel haben wir einen SSH-Tunnel. Google nach ssh und Tunnel und Du wirst Licht am Ende desselbigen sehen…


Andreas



Dieser String macht das verstehen nicht wirklich leichter, nur fand ich diesen unter dem Gesichtspunkt einen Dump per SSH zumachen.

Es ist relativ gefählich, mit Dingen und Kommandos zu spielen, die man nicht versteht. ‘dd’ z.B. ist in der Lage, ohne Rückfrage komplette Partitionen zu schreddern. Wenn ich nun auf meiner Homepage schreibe:

dd if=/dev/random of=/dev/hda

dann solltest Du das vielleicht eher doch nicht ohne nachzudenken ausführen.

Andreas

Das hilft dir (und uns) leider auch nur bedingt weiter.

An dieser Stelle bleibe ich bei meinem üblichen Statement stehen: wenn du nicht verstehst, was du da machst, lass jemanden ran, der davon Ahnung hat. Kostet weniger Zeit und Nerven.

Na super. Dann wuerden wir wohl alle noch in Hoehlen sitzten und die Waende bemalen.

Das was ich wollte, ist ein String fuer ein SSH Dump mehr nicht…

Du verwechselst da was. Hier sind Leute wie ads und ich, die halbwegs Erfahrung mit der Materie und auch den Dingen drum herum haben. Diese Leute helfen Dir unentgeldlich, aber ehrlich. Die Alternative sind Bezahldienste. Vom EDV-Supporter von $KLITSCHE, der Dir das erzählt, was Du willst bis zur Edelnutte aus dem Nobelpuff, die es Dir so besorgt, wie Du es willst und bezahlen kannst.

Also, ich an Deiner Stelle würde mal über das, was ads sagte, mal nachdenken. Und auch nicht so pampig auftreten.

Vielleicht solltest Du einfach mal Doku lesen. SSH gehört zu den recht gut dokumentierten Dingen.

Andreas