Umzug der Daten(-bank) auf anderen Server

Hallo,
wie kann ich die Daten vom Test Server auf den Produktions Server umziehen oder kopieren?
Gruß Dieter

Hallo Dieter,

wenn Du die gesamte Datenbank kopieren möchtest kannst Du das mit Standard Postgres Befehlen erreichen.

@julian.bischof : Kannst Du ein Beispiel posten?

VG
Norbert

Hallo,
ich habe es mit
sudo -u postgres pg_dumpall > full.sql
versucht. Hat auch geklappt.
Beim restoren auf dem Notebook (da läuft vitualbox mit metasfresh) habe ich mit meinem account eingeloggt. Nun versuche ich mit
psql -f full.sql postgres
das ganze wieder zurück zu spielen.
Bekomme dann den Fehler FATAL: role “nebergd” does not exist
Dann habe ich es mit sudo versucht und bekomme dann den gleichen Fehler nur das role root steht…
mein linux ist leider etwas veraltet und beschränkt sich auf ls und cd :slight_smile:
Gruß Dieter

Achja das habe ich auch noch probiert:
psql -h localhost -U pgsql < full.sql
Dann kommt password für user psql: das habe ich natürlich nicht

Hallo Dieter

Ich würde dir eher empfehlen, ein pg_dump -Fc metasfresh > metasfresh.pgdump durchzuführen.
Dadurch exportierst du NUR die entsprechende Datenbank. (-Fc ist ein switch, mit dem in ein postgresql-custom format gedumped wird.)

Anschließend kannst du die Datenbank mit pg_restore -Fc -d metasfresh metasfresh.pgdump wiederherstellen.

Wichtig: auf dem neuen Server muss die Rolle “metasfresh” existieren und eine leere “postgresql-template” datenbank mit dem Namen “metasfresh” existieren ( createdb metasfresh -O metasfresh )

Deinem Linux-Nutzer fehlen scheinbar die Berechtigungen für eine Postgres-Superuser Rolle(!).
Du könntest es als Linux-User “postgres” versuchen, wenn du ohnehin root zugriff auf dein System hast (su postgres) … allerdings würde ich dir eher dazu raten, wie oben beschrieben die einzelne Datenbank zu dumpen und dann in ein bestehendes DBMS zu importieren.

Eine gute Vorgehensweise für einen DB-Umzug auf ein anderes System wäre also folgender:

  1. Auf dem Quell-System ein pg_dump -Fc metasfresh > /home/metasfresh/metasfresh.pgdump
  2. Kopieren des Dumps auf das neue System (zb. via scp)
  3. Installation von metasfresh auf dem neuen System
  4. Via dropdb metasfresh als Nutzer “postgres” die Standard-Datenbank von metasfresh löschen und mit “createdb metasfresh -O metasfresh” (ebenfalls als Nutzer “postgres”) eine leere Datenbank erstellen
  5. Nun als Nutzer “metasfresh” den kopierten dump in das neue System importieren: pg_restore -Fc -d metasfresh /home/metasfresh/metasfresh.pgdump

Gruß, Julian

Hi
als was geht ist wenn man an den Rechten nach dem frisch installieren des System nichts geändert hat:
su root
als root dann su metasfresh (fragt dann nicht nach dem Passwort)
dann cd /opt/metasfresh
dann pg_dump -Fc metasfresh > /var/tmp/metasfresh.pgdump
:slight_smile: und siehe wird das file erstellt.
Dann rüberkopieren auf den neuen Server.
Den Rest muss ich jetzt noch hinkriegen
Gruß
Dieter

Hi,
also habe su postgres eingegeben
wenn ich psql aufrufe und \l mache dann kommt auch die db metasfresh; wieder raus
dann dropdb metasfresh
dropdb: database removal failed: ERROR: database “metasfresh” is being accessed by other users
DETAIL: There are 8 other sessions using the database.
??
Was nun
Gruß
Dieter

Hallo

Kann es sein, dass auf dem neuen System noch metasfresh läuft und versucht auf die Datenbank zuzugreifen?
mit systemctl status metasfresh_server.service kannst du schauen, ob der Dienst noch läuft.
mit systemctl stop metasfresh_server.service kannst du den dienst stoppen und wenn du mit dem Import problemlos fertig bist: systemctl start metasfresh_server.service

Alternativ könnte ich dir auch empfehlen den dump in eine temporäre neue datenbank einzuspielen, dann metasfresh stoppen wenn alles klappt, die alte datenbank droppen und die temporäre in “metasfresh” umbenennen.

Hi,
boäh was für ein Akt. Womit keiner mehr gerechnet hat. Das war doch noch mal ein entscheidender Hinweis mit dem Server stoppen.
Was funktioniert hat ist:
Den Dump in das Verzeichnis /var/tmp kopieren.
Dann su root
service metasfresh_server stop
dann su postgres
wie oben beschrieben:
4. Via dropdb metasfresh als Nutzer “postgres” die Standard-Datenbank von metasfresh löschen und mit “createdb metasfresh -O metasfresh” (ebenfalls als Nutzer “postgres”) eine leere Datenbank erstellen
5. Nun als Nutzer “metasfresh” den kopierten dump in das neue System importieren:
dann aber
pg_restore -Fc -d metasfresh /var/tmp/metasfresh.pgdump

Das ganze gestaltet sich so schwierig, weil man weder das Passwort von postgres (postgres geht nicht) noch metasfresh kennt. Deshalb der Umweg über /var/tmp/

Wie auch immer ein kleiner Schritt für die Menschheit und ein Meilenstein für Dieter :slight_smile:

Danke und nehme ich in meine Anleitung rein.

Prima, dass es geklappt hat :slight_smile:

Mit der Installation von metasfresh wird auch automatisch ein Heimverzeichnis für den Nutzer erstellt (/home/metasfresh/) was genau für solche Dinge geeignet ist.
Dort kannst du auch einen ssh-schlüssel in die authorized_keys datei hinterlegen lassen und dann per SSH die Datei direkt dem Nutzer metasfresh ins Verzeichnis kopieren. https://www.thomas-krenn.com/de/wiki/OpenSSH_Public_Key_Authentifizierung_unter_Ubuntu

Aber viele Wege führen bekanntlich nach Rom :slight_smile: