Die Wiederherstellung meiner kleinen 5-GB-Datenbank dauert 9 Stunden und dauert 5 Minuten, um sie über mysqldump zu sichern. Zum Glück habe ich das während eines Testlaufs herausgefunden, keine tatsächliche Notsituation.
Was sind die besten Parameter zur Optimierung, um dies zu beschleunigen?
Ich habe die folgenden Einstellungen auf meinem Server mit 2 GB RAM versucht:
innodb_buffer_pool_size=512M
innodb_additional_mem_pool_size=50M
innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=0
innodb_log_file_size=1G
innodb_log_buffer_size=1G
Das Seltsame ist, dass auch mit diesen aggressiven Einstellungen, top
zeigt nur, dass mysqld kaum einen Bruchteil des zugewiesenen Speichers belegt:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4421 mysql 20 0 247m 76m 5992 S 91 3.7 4:09.33 mysqld
--opt
muss aus dem Quellcode kompiliert und die Option vergessen worden sein. Ich werde dieses Thema auf jeden Fall für zukünftige Begegnungen wie diese in meiner Hosentasche behalten. Danke dir.Ich sah mich einer ähnlichen Situation gegenüber, bei der eine Dump-Restaurierung zu lange dauerte. In meinem Fall konnte ich die Wiederherstellung 3- bis 10-mal beschleunigen, indem ich die Erstellung des MySQL-Index verschoben habe.
Kurz gesagt, der Index wird bei jeder Einfügung neu berechnet. Es ist also besser, den Index für die gesamte Tabelle auf einmal zu berechnen.
Hier ist ein Beispiel, wie MySQL Daten exportiert:
Wenn Sie Millionen von Zeilen in einer Tabelle mit Indizes haben, wird diese wesentlich länger wiederhergestellt, als wenn Indizes nach Einfügungen angewendet würden.
Sie erzielen eine höhere Importgeschwindigkeit, wenn Sie nur Indexerstellungsanweisungen nach Einfügungen verschieben:
Prüfen mein Repository für ein einfaches Python-Skript, das die obige Transformation ausführt.
quelle
Ihr Problem ist E / A, nicht Speicher. Wenn Sie eine Profilerstellung für die Festplatte durchführen, werden Sie feststellen, dass das Lesen und Schreiben der Festplatte unerträglich ist, insbesondere, wenn sie sich auf derselben Festplatte befindet wie das Backup.
Ich würde die Datei auf ein anderes physisches Laufwerk verschieben und sehen, ob das hilft.
quelle