Frage

  

Mögliche Duplizieren:
   MySQL-Dumps und Importe beschleunigen

mysqldump ist ziemlich schnell, aber Deponien einer mittleren Datenbank (20-30 MB) mehrere Minuten dauern mit mysql my_database < my_dump_file.sql laden

Gibt es einige mysql Einstellungen ich tune kann die Last zu beschleunigen? Gibt es eine bessere Art und Weise gespeicherten Daten zu laden?

Ich habe mit dem mysqlimport Dienstprogramm experimentiert mit CSV-basierten Deponien. Diese Last leicht - aber nicht nennenswert - schneller. Ich bin versucht zu nur rohen Datenbankdateien um zu kopieren, aber das scheint wie eine schlechte Idee.

War es hilfreich?

Andere Tipps

Unter der Annahme, dass Sie verwenden InnoDB ...

Ich war in der Lage einen Stapel von bestehenden mysqldump Ausgabedateien zu haben, die ich in einer angemessenen Zeit importieren wollte. Die Tabellen (eine pro Datei) waren etwa 500 MB und enthielt etwa 5.000.000 Zeilen von Daten jeder. Mit den folgenden Parametern konnte ich die Erstellungszeit von 32 Minuten auf weniger als 3 Minuten reduzieren.

  

innodb_flush_log_at_trx_commit = 2
  innodb_log_file_size = 256M
  innodb_flush_method = O_DIRECT

Sie finden auch eine ziemlich große innodb_buffer_pool_size Einstellung haben müssen.

Weil meine Einsätze eine einmalige waren ich danach die Einstellungen zurückgesetzt. Wenn Sie vorhaben, sie langfristig zu halten, stellen Sie sicher, dass Sie wissen, was sie tun.

fand ich den Vorschlag, diese Einstellungen auf Cedric Nilly Blog zu nutzen und die detaillierte Erklärung für die einzelnen Einstellungen finden Sie in der MySQL-Dokumentation zu finden .

Stellen Sie sicher, dass Sie die --opt Option verwenden, um mysqldump wenn Dumping. Dies wird von Bulk-Syntax verwenden, verzögern Schlüssel-Updates, etc ...


Wenn Sie nur MyISAM-Tabellen verwenden , können Sie sie sicher kopieren, indem Sie den Server stoppen, sie zu einem gestoppten Server zu kopieren, und startet das.

Wenn Sie nicht den Ursprungsserver stoppen wollen, können Sie dies wie folgt vor:

  1. Hier finden Sie eine Lesesperre auf alle Tabellen
  2. Flush alle Tabellen
  3. Kopieren Sie die Dateien
  4. Schalte die Tabellen

Aber ich bin ziemlich sicher, dass Ihre Kopie-to-Server gestoppt werden muss, wenn man sich in Stelle zu setzen.

Sind Sie sicher, dass die Daten vernünftig sind, und es gibt kein Dateisystem oder System Performance-Probleme? Einige Minuten für eine 20-30 meg Datenbank ist eine lange Zeit. Ich bin auf einem MacBook mit 2 GB RAM, eine 320GB HD und dem Standard 2,1 GHz Prozessor. Ich schnappte mir eine meiner Datenbanken für eine schnelle Benchmark:

gavinlaking$ du -sm 2009-07-12.glis
74  2009-07-12.glis
gavinlaking$ mysql -pxxx -e "drop database glis"
gavinlaking$ mysql -pxxx -e "create database glis"
gavinlaking$ time mysql -pxxx glis < 2009-07-12.glis 

real    0m17.009s
user    0m2.021s
sys 0m0.301s

17 Sekunden für eine 74-Megabyte-Datei. Das scheint mir ziemlich bissig. Auch wenn es 4 mal größer war (es nur schüchtern von 300 Megabyte zu machen), endet es in knapp 70 Sekunden.

Versuchen Sie https://launchpad.net/mydumper - Multi-Threaded-mysql Backup / Restore was ist 3x zu 10x mal schneller als mysqldump http://vbtechsupport.com/1695/

Es ist ein Verfahren für LVM-Snapshots für Backup verwenden und wiederherstellen das könnte für Sie eine interessante Option sein.

Statt einen mysqldump zu tun, sollten Sie mit LVM-Snapshots Ihrer MySQL-Datenverzeichnisse zu nehmen. Mit LVM-Snapshots ermöglichen es Ihnen, nahezu in Echtzeit-Backup-Fähigkeit, die Unterstützung für alle Speicher-Engines zu haben, und unglaublich schnelle Genesung. Ein Zitat aus dem Link unten,

„Die Erholungszeit ist so schnell, wie Daten setzen zurück und Standard-MySQL-Crash Recovery, und es kann noch weiter reduziert werden.“

http: //www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top