Zur Navigation

Große MySQL-Sicherungsdatei in die Datenbank von Webhoster laden

1 Jörg Kruse

Nur dürfte ohne Shell-Zugriff, den habe ich noch bei keinem Gratis-Hoster gefunden, wahrscheinlich keine Chance mit dem entsprechenden Kommandozeilenwerkzeug eine MySQL-Sicherungsdatei in die Datenbank zu laden.

Eine Möglichkeit wäre vielleicht noch ein PHP-Tool, das sich selbst immer wieder von neuem aufruft, und so den Dump stückchenweise in die Datenbank schiebt:

http://www.ozerov.de/bigdump/

18.12.2015 18:49

2 Ranma (Gast)

Bigdump hat durch die Funktionsweise bedingt eine wichtige Einschränkung. In der gesicherten Datei müssen Datensatz für Datensatz Queries vorhanden sein. Mit nur einer Query für alle Datensätze, was SQL erlaubt, geht es nicht, weil sich das Programm zwischendrin wieder aufrufen muß. Aber wie sichert mysqldump die Datenbank? Leider ist die Datei zu groß, um sie in einem Editor zu öffnen und nachzuschauen.

Kann Bigdump auch selbst exportieren? Der Beschreibung nach scheint es nur für den Import gedacht zu sein? Wie käme ich dann später zu Sicherungskopien?
Ranma

21.12.2015 01:05

3 Jörg Kruse

Leider ist die Datei zu groß, um sie in einem Editor zu öffnen und nachzuschauen.

Wenn du dir z.B. die ersten 30 Zeilen anschauen möchtest, kannst du das unter Linux mit dem Konsolen-Tool head:

head -n 30 very-big-dump.sql

... oder die ersten 1000 Zeilen in einer Datei speichern:

head -n 1000 very-big-dump.sql > first-1000-lines.sql

Wie käme ich dann später zu Sicherungskopien?

Wenn Cronjobs erlaubt sind, kann man darüber mysqldump aufrufen.

21.12.2015 13:39 | geändert: 21.12.2015 13:47

4 Ranma (Gast)

Und die entsprechende Funktion für den Import kann man nicht über einen Cronjob aufrufen?

Es ist ganz erstaunlich, was es unter Linux alles gibt, wenn man nur wüßte, daß es das gibt. Von früheren Umstiegsversuchen auf Linux (erst Red Hat, dann Ubuntu), habe ich noch Bücher über Linux und trotzdem bin ich noch nie auf die Dokumentation so nützlicher Funktionen gestoßen. Es ging früher immer nur darum, überhaupt erstmal das Betriebssystem irgendwie zum laufen zu kriegen und in manchen Punkten ist das heute noch problematisch (Netzwerkverbindungen, Drucker, Installation von Zusätzen)....
Ranma

22.12.2015 01:35

5 Jörg Kruse

Und die entsprechende Funktion für den Import kann man nicht über einen Cronjob aufrufen?

Über einen Cronjob werden keine Funktionen aufgerufen, sondern (ausführbare) Dateien. Du kannst mit dem Mysql-Client Dumps importieren und diesen natürlich auch per Cronjob aufrufen. Beschrieben hatte ich das hier schon mal:

https://joergs-forum.de/monstermaessige-xml-dateien-t-4684-2#p17

Da man das Passwort bei einem Cronjob nicht interaktiv eingeben kann, und es nicht besonders sicher ist, dieses direkt im Befehlsaufruf hinter der Option -p anzugeben, empfiehlt es sich, dieses in einer Datei zu hinterlegen, welche in der Konfiguration angegeben wird. Beschrieben wird dies auf dieser Seite im Manual, als dritter Punkt "Store your password in an option file.":

http://dev.mysql.com/doc/refman/5.7/en/password-security-user.html

22.12.2015 16:42 | geändert: 22.12.2015 16:45

6 Ranma (Gast)

Die vielen Optionen von phpMyAdmin erlauben es, statt aller Datensätze immer nur einige in eine Datei zu exportieren. Das steht ziemlich am Anfang der Liste der Optionen. Wenn man so eine Tabelle stückweise exportiert, dann muß man darauf achten, für jeden Durchlauf die Datei umzubenennen. phpMyAdmin benennt sonst jeden Versuch nach dem Namen der Tabelle ohne irgendwelche Zusätze. Bleibt man in jeder Datei unter hunderttausend Datensätzen, dann ist zumindest deren komprimierte Version überall klein genug für einen Upload. Aber wenn man Tabellen mit über einemillion Datensätzen hat, dann kostet das einige Stunden stumpfsinnige zusätzliche Arbeit.

Nicht so schön, aber machbar. Es sei denn phpMyAdmin beim Hoster bringt dann so etwas wie
#2006 - MySQL server has gone away
anstatt die Dateien importieren zu lassen.
Ranma

19.01.2016 04:34

7 Jörg Kruse

Wenn man so eine Tabelle stückweise exportiert, dann muß man darauf achten, für jeden Durchlauf die Datei umzubenennen. phpMyAdmin benennt sonst jeden Versuch nach dem Namen der Tabelle ohne irgendwelche Zusätze

Du kannst unter Dateinamenskonvention bzw. in neueren Versionen unter Vorlage für den Dateinamen ein Muster definieren, siehe u.a. hier:

http://duntuk.com/phpmyadmin-database-export-save-file-template

Wenn du einen Timestamp im Namen unterbringst, unterscheiden sich alle Dateien im Namen. Wenn die Option "Konvention merken" bzw. "Diese Einstellungen auch für zukünftige Exporte verwenden" angehakt ist, brauchst du das Muster auch nur einmal eingeben.

19.01.2016 19:55 | geändert: 19.01.2016 19:56

8 Ranma (Gast)

Das würde mir leider nur dann etwas bringen, wenn damit die automatische Aufteilung der Datensätze auf mehrere Dateien möglich wäre. Sonst muß ich immer wieder per Hand eintragen, welche Datensätze nun an der Reihe sind. Dabei kommt es auf das Anhängen einer Zahl an den Dateinamen auch nicht mehr an.
Ranma

20.01.2016 02:11

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]