Gefällt dir dieser Artikel?

phpMyAdmin: große SQL Dateien importieren

erschienen in der Kategorie Webdesign, am 29.05.2012
Schnatterente
Die Datenbank einer Webseite zu sichern, ist Dank der browserbasierten Datenbankverwaltungssoftware phpMyAdmin sehr leicht zu bewältigen. Die exportierten Dateien wieder zu importieren kann hingegen etwas kniffliger werden - zumindest dann, wenn es sich um recht große Datenbanken handelt und serverseitige Beschränkungen für Ausführungszeit und Speicherverbrauch, dem Import auf halber Strecke einen Strich durch die Rechnung machen.

Die Ursachen für dieses Problem sind in den Einstellungen des Webservers und des MySQL-Datenbankservers zu finden. Wer root-Zugriff auf den Webseitenserver hat, kann die entsprechenden Werte in den jeweiligen Konfigurationsdateien ändern:
  • php.ini: max_execution_time - legt fest, wie lang eine Anfrage maximal bearbeitet werden darf (in Sekunden)
  • php.ini: memory_limit - legt fest, wie viel Speicher einem Skript zur Verfügung gestellt wird
  • php.ini: post_max_size - legt fest, bis zu welcher Größe HTTP POST Anfragen akzeptiert werden
  • php.ini: upload_max_filesize - gibt an, bis zu welcher Dateigröße Uploads akzeptiert werden
  • my.cnf: max_allowed_packet - gibt an, bis zu welcher Größe MySQL Anfragen bearbeitet werden

Nach Anpassung der Werte und Neustart der entsprechenden Server, sollten große SQL-Imports sowohl via phpMyAdmin, als auch via Konsole möglich sein.

Die meisten Webseitenbetreiber haben aber keinen root-Zugriff auf den Webserver, weil sie nur den benötigten Webspace und eine Datenbank angemietet haben. In diesem Fall können die obigen Einstellungen meist nur in einem sehr eingeschränkten Rahmen, über ein Webinterface wie Plesk oder Confixx, bearbeitet werden und ein Zugriff auf die Datenbank ist auch nur via phpMyAdmin möglich.

Doch auch in diesem Fall gibt es eine Möglichkeit, große SQL Dateien zu importieren. Der Trick besteht darin, sie einfach in viele kleinere Anfragen aufzusplitten. Das Programm MySQL Dump Splitter übernimmt diese Aufgabe voll automatisch. Das Tool kann hier kostenlos heruntergeladen werden (als .exe Datei, ohne Installation - die Anwendung läuft mit Wine super unter Linux). Die Bedienung ist denkbar einfach. Man füttert den Dump Splitter mit einer großen SQL-Datei und gibt an, wie groß die Splitdateien maximal werden dürfen. Die Software erstellt dann viele kleinere SQL Dateien sowie eine Readme-Datei, in der noch einmal darauf hingewiesen wird, dass es wichtig ist, die entstandenen SQL-Files in der richtigen Reihenfolge zu importieren.

Somit kann man einen großen SQL-Import auf viele kleinere herunterbrechen, die (bei richtig gewählter Größe) von phpMyAdmin akzeptiert werden.

Natürlich kann dieses Vorgehen auch etwas ausarten. Man stelle sich vor, man hat eine 5 Gigabyte große Datenbank und der Upload des Providers erlaubt nur 8 Megabyte große Dateien. Der SQL Dump Splitter würde 641 Dateien erzeugen, die man alle per Hand hochladen müsste.

In so einem Fall wären folgende Überlegungen ratsam
  • etwas größere SQL-Splits erzeugen und sie möglichst gut komprimieren (insofern der Provider wenigstens den Upload komprimierter SQL-Dateien zulässt)
  • große, nicht mehr benötigte Teile der Datenbank weglassen (z.B. Zugriffs-Statistiken der Webseite, die viele Tausend Zeilen Browser- und IP-Informationen enthalten)
  • sich an den Provider wenden und diesen um Hilfe bitten (eventuell, wenn der Provider jegliche Hilfestellung verweigert, mit Kündigung drohen)
  • sich einen anderen Provider suchen
  • bei vorhandenen Linux-Kenntnissen: auf einen Virtual Host umsteigen und die Vorteile des root-Zugriffs genießen



Update 06.09.2014: Download-Link aktualisiert. (Die Original-Projektseite scheint es nicht mehr zu geben.)

Geschnatter

20 Kommentare, selbst mitschnattern << < Seite 3/3 > >>
mcan, am 11.04.2015 um 01:45 Uhr
Super Artikel! Habe seit ca. einer Woche nach genau dieser Anleitung gesucht! DANKE!
Gordon, am 02.06.2015 um 11:22 Uhr
Hallo.

Das ist genau was ich gesucht habe (und das schon seid ner Stunde). Wollte gerade ein 20MB Backup wieder einspielen und er wollte mich nur 8MB hochladen lassen... jetzt gehts. Danke!
Trader, am 25.09.2015 um 08:58 Uhr
Danke, sehr hilfreich. Ich hoffe, das hilft mir. Meine Datenbank ist mittlerweile über 50 MB groß.
Antwort: Das klingt eigentlich noch nach einer Datenbank-Größe, die man auch mit Komprimierung (zip, gzip, bzip) recht gut unter Kontrolle bringen kann.
Jörg, am 29.05.2016 um 20:03 Uhr
Super Sache, Danke!
Luis, am 13.09.2016 um 16:21 Uhr
Tausend Dank! Mal sehen ob es klappt.
800MB ist die DB.
200MB Maximum.

Bin gespannt!
rafael, am 28.09.2016 um 12:50 Uhr
Vielen Dank für diesen Beitrag!