mysqldump verbraucht zu viele resourcen

TAiS46

Registered User
Hallo,

meine Datenbank wird immer größer und ich stelle immer wieder fest,
das durch mysqldump der MySQL Prozess manchmal abschmiert, bzw
der Server so überlastet ist, das keine Verbindung mehr zu MySQL aufgebaut werden kann.

Gibt es eine alternative oder eine Möglichkeit, das mysqldump nicht so viele Resourcen frisst?

Wäre http://www.mysqldumper.de/ ggf. eine Alternative?
 
Wie groß ist denn deine Datenbank? Ich habe selbst 15 GB große Datenbanken problemlos dumpen können...
 
Oh, gerade mal 60mb.
Ggf. ist es nicht gut, das Backup im Live Betrieb aus zu führen?
Habe gerade was über den Parameter --single-transaction gelesen.

Des weiteren stelle ich gerade von MyISAM auf InnoDB um.
 
Naja, eine Transaktion kannst du ja eh nur sinnvoll über Transaktionsfähige Datenbank-Engines (wie InnoDB) laufen lassen ;)

Ob im Livebetrieb oder nicht sollte eigentlich kaum Unterschied machen. Wie macht sich denn der Absturz des MySQL-Servers bemerkbar?
Und von wo aus startest du den Dump - auf der selben Maschine auf der auch der MySQL-Server läuft oder von extern über eine TCP-Verbindung?
Und nicht zuletzt: Wie viele Ressourcen hat denn der Server (insbesondere RAM)?
 
Zudem ist die Aussage "verbraucht zu viele Ressourcen" nicht hilfreich. Welche Ressourcen denn?
CPU? Ram? Festplatten IO Leistung? Netzwerkkarte?
ps, top, iostat, sar, vmstat und iptraf liefern dir hierzu erstmal vernünftige Werte.
 
Code:
top - 20:47:38 up 132 days,  2:51,  2 users,  load average: 1.66, 21.03, 27.51
Tasks: 262 total,   1 running, 261 sleeping,   0 stopped,   0 zombie
Cpu(s): 22.6%us, 10.9%sy,  0.4%ni, 46.3%id, 19.3%wa,  0.0%hi,  0.5%si,  0.0%st
Mem:   2034520k total,  1574596k used,   459924k free,     6972k buffers
Swap:   523260k total,   438192k used,    85068k free,   446744k cached

Bei dem 5/15 min load habe ich was anderes gemacht.
Der 1.66 war beim Backup, es scheint nicht viel Resourcen zu in anspruch zu nehmen.

Ich habe ein crontab laufen alle 15 Minuten, der ein Backup von der MySQL macht.
Jetzt kam es teilweise bei der Durchführung eines mysqldump dazu, das keine Verbindung mehr aufgebaut werden konnte. Wenn ich top mal zum laufen bekommen habe, hatte ich nen Load von ca. 200! Das ganze hat ca. 5-10 Minuten gedauert und der Server hat sich wieder beruhigt.

Kann es daran liegen, das während dem dump auf den Server zugegriffen wird?

Edit: mysqldump wird auf der lokalen Maschine ausgeführt und schiebt das backup dann auf einen FTP server mit wput.
 
20% wait ist aber auch schon ganz ordentlich.
Was sagt denn "show processlist" via mysql Client, wenn du es minütlich während des Backuplaufes ausführst?
Client vor dem Backup starten.

Wenn mysqldump die Tabellen lockt, während viele andere Prozesse darauf zugreifen wollen, müssen diese natürlich warten, bis er die jeweiligen Tabelle freigegeben hat. Wenn das entsprechend lange dauert, schaukeln sich die Prozesse hoch. Die Load eines Systems ist für sowas nur ein Indikator. Der Wert selbst sagt erstmal nichts darüber aus, ob das System beeinträchtigt ist oder nicht.
 
Code:
top - 23:00:34 up 132 days,  5:04,  2 users,  load average: 7.49, 2.40, 1.49
Tasks: 380 total,   4 running, 376 sleeping,   0 stopped,   0 zombie
Cpu(s): 59.9%us, 20.7%sy,  0.0%ni,  8.1%id, 10.0%wa,  0.0%hi,  1.3%si,  0.0%st
Mem:   2034520k total,  2012212k used,    22308k free,     5032k buffers
Swap:   523260k total,   459964k used,    63296k free,   515092k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                              
11570 mysql     20   0  896m 136m 3472 S   52  6.9 449:46.81 mysqld                                                                                                                
 4608 www-data  20   0  327m  34m 4648 S   23  1.7   0:00.81 apache2

Komisch das es nicht bei jedem Backup passiert.
show processlist liefert nichts besonderes.
Halt teilweise die Prozess für das Backup der jeweiligen Tabelle und ein paar Sleep Prozesse (um die 10) ... mehr tut sich da nicht

Edit: Ich habe die Lösung, lag an einem anderen Backup was auch fast Zeitgleich ausgeführt wird.
So schaukelt sich mysql hoch. Es hat auch nichts mit mysqldump zu tun!

Danke für die Hilfe hier :)
 
Last edited by a moderator:
Back
Top