PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL DB übernehmen auf anderen Host



LinuxUser1001
06.09.02, 21:12
Hallo!

Ich habe auf einer MySQL DB einige Daten, die nun auf einen neuen Host im Web übernommen werden sollen.
Das Problem ist, ich kann nicht direkt auf den MySQL Server im Web zugreifen und die Daten übertragen, sondern muß diese irgend wie local auf dem Host im Web übertragen.

Ich habe inzwischen auch ein kleines PHP Script mit dem ich die Daten auf dem eigenen MySQL Server als "BackUp" sichern kann und dann per FTP auf den WebServer spielen und mit einen Restore Script wieder in die dortige Datenbank bringen kann.
Das Problem ist aber die DB Struktur auf dem Ziel Host.
Ich möchte diese ungern alle von Hand erstellen. Hat jemand eine Idee bzw. ein Script, wie ich die DB Struktur von der einen MySQL DB auf die andere übernehmen kann? Möglichst ohne großen Aufwand und schnell. :)

[oETTi]
06.09.02, 21:25
Hallo,

ich würde das ganze mit mysqldump realisieren.



mysqldump -u root -h 192.168.1.2 datenbank > mein_dump.sql


liefert eine *.sql-Datei mit allen benötigten SQL-Statements und Datensätzen.




mysqldump -u root - h 192.168.1.3 neue_datenbank < mein_dump.sql


führt die aktuellen SQL-Statements aus mein_dump.sql aus (legt Tabellen an etc.) und fügt die Datensätze ein.

Schau dir einfach mal den Aufbau der *.sql-Datei mit einem Texteditor an :-)

Ich hoffe das hilft soweit erstmal ;)

LinuxUser1001
06.09.02, 21:47
Ja, auf die Idee bin ich auch erst gekommen.
Aber ich kann auf dem WebSpace nicht per Shell zugreifen und so auch kein mysqldump direkt ausführen.
Oder gibt es eine andere Möglichkeit dafür?
Vielleicht per phpMyAdmin?

Ich muß die Dump Datei auf den Web Server mit MySQL DB per FTP hoch laden und dort irgend wie wieder in die DB bekommen und gleichzeitig die DB Struktur wieder herstellen lassen.

Die Dump Files benutze ich eh ständig für den täglichen BackUp.
Nur ich weiß nicht wie ich die auf den Ziel Host aufspielen kann bzw. an die DB bringen kann.

[oETTi]
06.09.02, 21:53
Mit phpMyAdmin kannst du diesen Dump auch erstellen. (inkl. SQL-Statements).
Diesen kannst du dann auch wieder problemlos mit phpMyAdmin einspielen.:)

LinuxUser1001
06.09.02, 22:28
Hmm... wenn es mit phpMyAdmin wieder einzuspielen ist, dürfte das mein Problem lösen.

Danke! :D

netzmeister
06.09.02, 23:04
Hallo,

bei kleinen Datenbanken geht das mit phpmyadmin sehr gut.

Bei grösseren Datenbanken geht es leider nicht.

Viele Grüße

Eicke

[oETTi]
07.09.02, 01:42
Stimmt! Versuch das ganze mal mit 300.000 Datensätzen. Spätestens dann geht phpMyAdmin in die Knie :-)

LinuxUser1001
07.09.02, 23:54
Tja... hmm... so ganz klappen will es nicht.

Wie kann ich das DumpFile denn nun mit phpMyAdmin rüber bringen?
Also mit Paste und Copy als SQL Statements kann man vergessen.
Das DumpFile ist gut 2.3 MB groß (ungepckt).
Und wenn ich versuche es als Datei anzugenben, kommt nur eine Fehlermeldung.

Nu schau ich wieder ratlos aus der Wäsche.

Ich habe zwar ein kleines PHP Script für BackUp und Restore gefunden. Das BackUp vom einen MySQL Server klappt auch. Nur das Restore auf dem Ziel Server will nicht funktionieren. Und wenn ich mir das PHP Script so anschaue (das restore.php), dann vermute ich mal, das es dabei zu viel Speicher frist (soweit mein bescheidenes PHP das versteht).
Die Datei wird als komplettes File geladen (per gzread) und dann mit explore als Query fertig gemacht. Und genau da (vermute ich mal) geht es in die Hose.

Neue Lösung such...

Vielleicht werde ich mal versuchen per CGI Shell Script doch noch mysqldump direkt auf dem Ziel Server aufzurufen (sofern der ISP das erlaubt).

[oETTi]
08.09.02, 01:52
Schick mir doch mal das/die PHP-Skript(e) als PM. Ich guck es mir mal an, und schreib es dir notfalls um :p

LinuxUser1001
08.09.02, 02:56
Nennt sich phpMyBackup.
Hier ist der Link.

http://www.dynamic-webpages.de/03.skript-archiv.php?countID=195&redirekt=http://www.nm-service.de/files/phpmybackup.zip

pi314
08.09.02, 11:22
verwende doch mal phpMyAdmin um nur die Datenbank-Struktur zu übertragen, da sollten der anfallende Datenbestand ja deutlich kleiner sein als beim übertragen der gesamten Datenbank



Ich habe inzwischen auch ein kleines PHP Script mit dem ich die Daten auf dem eigenen MySQL Server als "BackUp" sichern kann und dann per FTP auf den WebServer spielen und mit einen Restore Script wieder in die dortige Datenbank bringen kann.
Das Problem ist aber die DB Struktur auf dem Ziel Host.

wenn du die Struktur erst mal hast, kannst du ja mit deinem script weitermachen

stefaan
08.09.02, 11:22
Servus!

Zu dem Backup-Script:
Darfst du auf die neue Datenbank "von außen" zugreifen?
Dann wäre das ja kein Problem, mit dem (Win-)Programm Mysql-Front geht das sicherlich, unter Linux gibts sicher vergleichbares.

Wenn nur mit Dump:
Diesen kannst du ja in kleine Teildumps teilen und dann einspielen, solange es keine 10^5 Datensätze sind.

Grüße, Stefan

Bones
08.09.02, 12:08
Original geschrieben von stefaan
Zu dem Backup-Script:
Darfst du auf die neue Datenbank "von außen" zugreifen?
Dann wäre das ja kein Problem, mit dem (Win-)Programm Mysql-Front geht das sicherlich, unter Linux gibts sicher vergleichbares.
Das würde ich dir auch empfehlen. MySQL-Front gibt's (oh Wunder!) unter http://www.mysqlfront.de.

Unter Linux kenne ich leider nichts vergleichbares - jedenfalls nichts, womit man so komfortabel Dumps ziehen kann. Ich verwende MyCC und SQLGUI. Mit beiden kannst du ganz einfach die Dumps wieder einspielen, nur das Backup zu machen kostet etwas mehr Mühe, da du jede Tabelle einzeln dumpen musst. :(

PS: Wenn jemand unter Linux ein GUI-Tool kennt mit dem sich genauso einfach Dumps erstellen lassen wie mit MySQL-Front unter Windows, wäre ich ziemlich dankbar. :)

LinuxUser1001
08.09.02, 13:34
Hatte ich oben ja schon geschrieben.
Ich kann nicht von außen / extern auf den MySQL Server zugreifen, sondern nur "intern" über localhost.

Also sind externe Lösungen schon mal nicht machbar, sonst könnte ich es auch einfach mit



mysqldump --opt database | mysql --host=remote-host -C database


direkt übertragen. (siehe auch man mysqldump)

Ich werde es jetzt erst mal per Shell-CGI-Script versuchen und wenn das nicht funktioniert eben wie oben jemand sagte, Stück für Stück (bei 2.4 MB Dump File eine menge Arbeit).

Ist aber schon seltsam, daß es dafür keine Lösung bzw. irgend welche PHP Scripte gibt. Vielleicht sollte man sowas ja mal machen.

netzmeister
08.09.02, 14:19
Hallo,

das ist ein Aufwand!

Sprich doch einfach mit Deinem Provider. Er soll das "Dump" für
Dich durchführen, wenn er Dich nicht per Shell drauflässt.

Den Dump schickt er Dir dann einfach zu. Du spielst die Daten dann wieder
per mysqldump ein. So einfach ist das.

Viele Grüße

Eicke

:confused:

LinuxUser1001
08.09.02, 14:25
Ja, leider ist das ein Aufwand.

Umgekerht. Ich müßte dem Provider den Dump von dem localem MySQL Server bzw. der DB zuschicken (hier im lokalem LAN) und dieser müßte ihn dann auf dem MySQL Server bzw. der DB auf der nun die WebSeite läuft einspielen. Aber leider wurde auf drei Anfragen (bezüglich externer Erreichbarkeit des Server und überspielen einer MySQL DB) nicht reagiert.
Das war schon etwas enttäuschend.
Obwohl das bestimmt kein Aufwand wäre, denn das Dump File liegt schon auf dem WebSpace bereit und müßte nur per mysqldump eingebunden werden.

Jinto
08.09.02, 14:36
Tja dann hilft wohl nnur der mühevolle weg:
1. Anlegen der von dir gesicherten Datenbankstruktur auf dem Server
2. schreiben eines Scripts zum absetzen von sql-Befehlen
3. schreiben eines php-Scriptes, welches deine SQL Befehle Befehl für Befehl an das Script von Punkt 2 übergibt.

Das dein resotre-Script auf dem Server nicht funktioniert liegt i.d.R nicht am Speicherverbrauch, sondern an der Ausführungszeit. Puretec z.B. gibt deinem Script nur eine gewisse Zeit, benötigt es länger wird es einfach abgebrochen.

HTH

netzmeister
08.09.02, 14:38
Hallo,

na den Prost. Am besten sucht Du Dir einen neuen Provider.

Im Moment kommst Du anders nicht weiter. Wir managen Datenbanken
von verschiedenen Kunden auf unseren Servern bis zu 0,5 GB. Kleine
Sachen kann der Kunde selber machen. Aber das ist ein Sache der
Konfiguration von PHP auf dem Server.

Viele Grüße

Eicke

LinuxUser1001
08.09.02, 18:58
So, mit phpMyAdmin habe ich es denn nun doch noch hin bekommen.
Wie oben jemand schon sagte...
Erst aus dem Dump File die Daten Strukturen mit phpMyAdmin erstellen.
Dann Stück für Stück die Daten eintragen. Was zu groß ist, als extra SQL Datei senden. Bis ca. 1 MB klappt das noch, darüber geht entweder phpMyAdmin oder der MySQL Server in die Knie.
Genau weiß ich es nicht.

Die komplette SQL Dump Datei (2,3 MB) wollte phpMyAdmin nicht fressen. Wurde zwar übertragen, aber passiert ist nichts.