Datenbank zwischen 2 Servern driekt kopieren
Jo
- datenbank
Hallo Leute,
in einigen Berichten habe ich bereits gelesen, dass man zB. mit PHPMyAdmin einen MySQL Dump erstellen kann, den runterladen, und am anderen Server wieder "importieren" kann.
Soweit ist es mir klar wie das Funktioniert.
Blöderweise habe ich jetzt eine Datenbank, die 6 GBytes an Daten umfasst. Gibt es auch eine Möglichkeit einen PHPMyAdmin-Dump direkt auf einen anderen Server zu kopieren?
Mir würde schon helfen, wenn ich den Dump am eigenen Server in ein FTP-Verzeichnis kopieren könnte, weil dann könnte ich den Dump mit FXP von Server zu Server direkt kopieren. Bei letzterer Methode müsste ich allerdings dann auch wissen, wie ich den Dump dann vom Server direkt wieder direkt von diesen Server aus importieren kann ;)
Es wäre alles einfacher, wenn ich vom "Ursprungsserver" die Root-Rechte hätte, aber die hab ich nicht, so kann ich die Datenbank auch nicht direkt kopieren *snief*verzweifel*
Herzlichen Dank für Eure Tipps,
Grüße
Jo
Hello,
wenn Du eine MySQL-Datenbank hast und es Dir möglich ist, den MySQL-Deamon herunterzufahren, oder zumindest die Datenbank zu Locken und ein Flush auszuüben, dann könntest Du die Tabellen (zumindst bei MyISAM-Format) einfach kopieren.
Alle Tabellen der Datenbank locken
Alle Buffers flushen
Tarball anlegen
Remote-Login von neuen Server auf den alten
Mittels ftp den taball rüberziehen
auspacken
Was verlorengeht, sind die Rechte auf die Tabellen, denn die stehen in ja in der MySQL-Tabelle des ersten Severs.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin!
Informiere Dich über den Befehl "mysqldump". Lasse mit diesem die Datentabellen in eine Datei "dumpen", zippe diese mit gzip und lade sie per ftp vom Server herunter.
Info:http://dev.mysql.com/doc/mysql/de/mysqldump.html
Wenn Du keinen Shell- Zugang hast: Führe den mysqldump - Befehl innerhalb von PHP aus:
Info: http://de3.php.net/manual/de/function.exec.php
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi,
wenn du nicht auf mysqldump zugreifen kannst (darfst), hilft dir da evtl. ein eigener Server-Skript z.B. in PHP
leg in der Zieldatenbank alle Tabelle an, aber erstmal OHNE INDEX-FELDER!! Sonst dauert der Import u.U. zu lange und der Server geht unnötig in die Knie.
Der "Struktur-Dump" mit CREATE-Table aus phpMyAdmin liefert dir das Zeug dazu. Lösche aber unbedingt alle INDEX und PRIMARY Angaben aus dem SQL script den das Teil erstellt.
Ab PHP 4.2 kannst du gleichzeitig mehrere Verbindungen zu verschiedenen Servern/Datenbanken aufbauen. Dazu gibt's einen neuen "new_link" Parameter, den du auf true setzen musst. Öffne also im Script zu Anfang zwei connections auf die beiden Datenbanken.
http://php.net/manual/function.mysql-connect.php
in einer Schleife über die Tabellennamen führst du ein
INSERT INTO db_ziel.tabelleXY SELECT * FROM db_quelle.tabelleXY
aus um die Daten direkt einzufügen (siehe unten)
wenn alles drin ist, legst du die Indizes in den Zieltabellen entsprechend neu an. Schreib dir ggf. auchd afür einen kleinen Script mit den ALTER TABLE Befehlen. Die Angaben kannst du dir aus dem "CREATE Dumps" von phpMyAdmin rauskopieren
Zu 3)
Die Tabellen kannst du zur Vermeidung von Fehlern auch dynamisch mit
SHOW TABLES
abfragen und dann über die Ergebnisliste (Array) durchschleifen.
Wichtiger: Bei extrem großen Tabellen (groß ist relativ) kann dir ein Timeout im Skript passieren (muss nicht, kann aber).
Du sollest dann evtl. bei den INSERT...SELECTs mit LIMIT arbeiten und das Häppchenweise importieren, z.B. in 500er Blöcken
... LIMIT 0,500
... LIMIT 501,1000
Viel Erfolg,
CirTap