| Author |
Message |
Katha007
knows MySQLDumper

Joined: 09 Oct 2011
Posts: 8

|
Posted:
2011-10-09, 15:50 Einspielen von Dumps dauert zu lange |
  |
Hallo,
im vorab: ich find MySqlDumper toll, deshalb denke ich, dass das Problem an meinen lokalen Einstellungen liegt.
Ich habe eine neue Festplatte (alte kaputt ), auf der ich unter Windows 7/Apache 2.2 neu MySQL 5.5 installiert habe.
Von der alten Festplatte habe ich ein Backup von allen DBs gemacht - mit MySqlDumper 1.24.4.
Auf der neuen Festplatte habe ich auch MySqlDumper 1.24.4 installiert. Alles problemlos.
Ich kann die Dumps auch einspielen, sie brauchen aber ewig lang.
Multipart is aktiviert und die Dump-Teile haben gz-komprimiert je ca. 2 MB.
Zusätzliches Problem:
Meine produktive Umgebung liegt auf einem Unix-Server. Dort werden die Dumps mit MySqlDumper 1.24 erstellt. Diese Dumps habe ich versucht, lokal mit phpMyAdmin zu importieren. Da brauche ich ca. 3 Stunden für einen 2 MB gz-Teil. Das kann nicht sein.
Auf meiner alten Festplatte ging es viel schneller.
Fragen:
1. Ist in meiner MySql-Installation etwas falsch eingestellt?
2. Kann ich im MySqlDumper etwas einstellen, außer Konfiguration->Allgemein Speichergrenze 120795955 (automatisch ermittelt) und 30.000 bis 500.000 bei der Geschwindigkeitskontrolle?
Vielen Dank im voraus
Katha
|
|
  |
 |
Anzeigen
|
Posted:
Anzeigen |
 |
|
| |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16067
Location: Reichenberg bei Würzburg

|
Posted:
2011-10-09, 18:08 Re: Einspielen von Dumps dauert zu lange |
  |
« Katha007 » wrote: Auf der neuen Festplatte habe ich auch MySqlDumper 1.24.4 installiert. Alles problemlos.
Ich kann die Dumps auch einspielen, sie brauchen aber ewig lang.
...
Da brauche ich ca. 3 Stunden für einen 2 MB gz-Teil. Das kann nicht sein.
Das ist auch absolut ungewöhnlich. 2MB sollten in kürzester Zeit wieder eingespielt sein (unter einer Minute). Als Problemquelle kommt aber wohl nur Dein lokales Setup und Deine lokale Hardware in Frage, welche wir nicht beurteilen können. Deshalb können wir hier leider nicht unterstützend helfen.
Du scheinst ein ganz anderes lokales Problem zu haben, welches gar nichts mit MySQLDumper zu tun hat.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Katha007
knows MySQLDumper

Joined: 09 Oct 2011
Posts: 8

|
Posted:
2011-10-09, 18:23 (No subject) |
  |
Tja, ich glaube auch, dass es nicht am MySqlDumper liegt (dafür ist die Software einfach zu gut ;-) ).
Es war halt meine Hoffnung, dass hier jemand das gleiche Problem schon mal hatte und mir etwas zu den grundsätzlichen Einstellungen sagen kann.
Was kann man sonst noch wo einstellen, damit das Einspielen von einem Dump schneller geht?
Wenn ich die Dump-Teile entkomprimier und den SQL-Code aus dem Dump in die SQL-Eingabe von phpMyAdmin reinkopier, geht es um ein vielfaches schneller. Warum?
Schöne Grüße aus Bayern (Nürnberg) nach Bayern (Würzburg)
Übrigens: ich bin in Reichenberg geboren. Mein Reichenberg liegt aber in Tschechien, auf Tschechisch Liberec geannt. ;-)
|
|
  |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16067
Location: Reichenberg bei Würzburg

|
Posted:
2011-10-09, 18:39 (No subject) |
  |
Das Problem scheinen bei Dir die Zugriffe auf die Datei zu sein.
Warum diese so schrecklich langsam sind, können wir - wie gesagt - aus der Ferne nicht beruteilen.
Gruß aus Reichenberg - dem aus dem Frankenland.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Katha007
knows MySQLDumper

Joined: 09 Oct 2011
Posts: 8

|
Posted:
2011-10-10, 23:49 (No subject) |
  |
Nach stundenlanger Recherche weiß ich jetzt die Ursache:
Bei den massenhaften Inserts in die InnoDB muss ich auf dem MySQL-Server das Autocommit ausschalten.
Wenn ich die Inserts manuell über PHPMyAdmin schick und ihnen "SET AUTOCOMMIT = 0" voranstelle, werden die Daten superschnell eingefügt.
Ich habe im MySqlDumpert unter Konfiguration->"Command before Dump" diese Zeile eingefügt, es hilft aber nicht weiter.
Im Dump selbst steht zwar in der ersten Zeile (die ja auskommentiert ist) folgendes drin:
-- Status:165:974165:MP_1:dbxxxxxxxx:perl:1.24.4::5.0.92-1~ui40+1:11:SET AUTOCOMMIT=0;:COMMIT;:utf8:EXTINFO
Im SQL-Code selbst sind die Befehle jedoch nicht enthalten (wie z.B. SET FOREIGN_KEY_CHECKS=0 .
Dementsprechend langsam ist das Wiedereinspielen des Backups.
Was kann ich tun?
Gruß auch aus dem Frankenland ;-)
|
|
  |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16067
Location: Reichenberg bei Würzburg

|
Posted:
2011-10-11, 03:43 (No subject) |
  |
Warum läuft Dein MySQL-Server mit AUTOCOMMIT=1?
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Jens_K
Moderator

Age: 37
Joined: 04 Sep 2007
Posts: 1709
Location: Nähe Bielefeld

|
Posted:
2011-10-11, 08:53 (No subject) |
  |
|
   |
 |
Katha007
knows MySQLDumper

Joined: 09 Oct 2011
Posts: 8

|
Posted:
2011-10-11, 10:28 (No subject) |
  |
Leider kann man AUTOCOMMIT nicht in der conf ausschalten.
Ich habe es in der ini probiert mit:
init_connect='SET AUTOCOMMIT=0'
(habe ich irgendwo im Internet gefunden)
Es hilft aber nicht.
|
|
  |
 |
Katha007
knows MySQLDumper

Joined: 09 Oct 2011
Posts: 8

|
Posted:
2011-10-11, 12:05 (No subject) |
  |
Hm, hab eine Lösung gefunden: den Code von MySqlDumper anpassen.
in mysqldumper/inc/mysql.php als Zeile 275 (Version 1.24.4) folgenden Code einfügen:
mysql_query('SET AUTOCOMMIT = 0', $config['dbconnection']);
Jetzt flutscht die Einspielung des Backups.
Ist zwar keine koscher Lösung, aber ich kann damit jetzt leben.
|
|
  |
 |
Harry72
Developer


Age: 40
Joined: 27 Jul 2011
Posts: 51

|
Posted:
2011-10-11, 12:08 (No subject) |
  |
Hi,
du kannst auch in der my.cnf unter [mysqld] die Zeile
init_connect='set autocommit=0'
hinzufügen.
Probier's mal aus. Müsste auch klappen.
_________________ VG
Harry
Ich würde so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht.
|
|
   |
 |
Katha007
knows MySQLDumper

Joined: 09 Oct 2011
Posts: 8

|
Posted:
2011-10-11, 12:18 (No subject) |
  |
Wie ich oben geschrieben habe, init_connect='set autocommit=0' funktioniert nicht.
Eine Erklärung dafür sehe ich hier: http://dev.mysql.com/doc/refman/5.1/de/server-system-variables.html.
Quote:
Beachten Sie, dass der Inhalt von init_connect nicht für Benutzer ausgeführt wird, die die Berechtigung SUPER haben. Zweck dieser Maßnahme ist es zu verhindern, dass ein fehlerhafter Wert für init_connect eine Verbindung zum System für alle Benutzer unmöglich macht.
|
|
  |
 |
Harry72
Developer


Age: 40
Joined: 27 Jul 2011
Posts: 51

|
Posted:
2011-10-11, 12:31 (No subject) |
  |
Ok. Hauptsache es läuft jetzt.
_________________ VG
Harry
Ich würde so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht.
|
|
   |
 |
Katha007
knows MySQLDumper

Joined: 09 Oct 2011
Posts: 8

|
Posted:
2011-10-11, 12:33 (No subject) |
  |
Aber danke für deinen Vorschlag.
Man weiß nie, was greifen könnte.
|
|
  |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16067
Location: Reichenberg bei Würzburg

|
Posted:
2011-10-11, 19:27 (No subject) |
  |
Und um das auch für die Zukunft zufriedenstellend abzuschließen:
In der nächsten Version werden wir vorsehen konfigurierbare Queries (also auch das SET AUTOCOMMIT=0) nach jedem Selbstaufruf neu senden zu können.
Momentan ist das Problem, dass der Query zwar beim ersten Seitenaufruf getätigt wird, aber nach dem ersten Javascript-Selbstaufruf wird die alte DB-Verbindung geschlossen und anschließend eine neue geöffnet, wo dieser Query nicht erneut gesendet wird. Damit greift dann wieder die Standardeinstellung.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Katha007
knows MySQLDumper

Joined: 09 Oct 2011
Posts: 8

|
Posted:
2011-10-12, 13:42 (No subject) |
  |
Ja, das ist eine gute Idee. Es sollte aber auch vorgesehen werden, konfigurierbare Queries kurz vorm Ende des jeweiligen Aufrufs senden zu können.
Meine Lösung (mit der extra Code-Zeile in MySqlDumper) funktioniert nicht.
Die Dumps werden zwar schnell durchlaufen, aber es fehlt der abschließende COMMIT bevor sich die Seite neu aufruft. D.h. die Inserts einer Tabelle, die VOR dem Wiederaufruf der Seite durchgelaufen wurden, werden in die DB nicht gespeichert.
Ich habe für mich eine funktionierende Lösung gefunden, indem ich den Code von PhpMyAdmin angepasst habe (Anfang und am Ende der Datei import.php die jeweiligen DB-queries) und importiere den Dump dateiweise über PhpMyAdmin.
Aber es wäre toll, wenn das Einspielen komplett über MySqlDumper funktionieren würde. Dann wäre das Programm mehr als perfekt.
Viele Grüße
Katha
|
|
  |
 |
|
|