mysqldump vs mysqlpump


17

Ich habe gerade von mysqlpump gehört - es sieht so aus, als wäre es mit MySQL 5.7 veröffentlicht worden, aber MySQL 5.7 enthält immer noch mysqldump . Sie sind beide Sicherungsprogramme, aber kann jemand die Hauptunterschiede zusammenfassen? Gibt es Szenarien, in denen eine davon besser funktionieren könnte? Wird mysqldump für mysqlpump auslaufen?


Das heißt nur, zwei ähnliche Werkzeuge fast identisch zu nennen.
Erik

@Erik scheint , wie es ein „ist p arallel d ump “ und es kann die Pumpe die Daten schneller .. aber ansonsten stimme ich zu .
Jkavalik

1
Sie könnten auch an MyDumper interessiert sein . Es scheint, dass mysqlpump ein paar Ideen daraus übernommen hat - keine schlechte Sache, da das Projekt nicht länger als ein Jahr zurückliegt :-(
Vérace

Ich würde mich über Leistungstests freuen!
Ryan Foley

XtradbBackup ist ein weiterer ernstzunehmender Anwärter.
Rick James

Antworten:


16

Da ich dies selbst recherchiert habe, folgt eine Zusammenfassung dessen, was ich gefunden habe.

Laut einem Blog-Beitrag des MySQL- Entwicklerteams aus dem Jahr 2015 liegen die Hauptvorteile von mysqlpump darin, dass mehrere Threads gleichzeitig verwendet werden können, um das Dumping zu beschleunigen, und dass die Abwärtskompatibilitätsanforderungen von mysqldump nicht erfüllt werden, was die Tür für weitere Schritte öffnen dürfte Verbesserungen.

Der Beitrag warnt jedoch davor, dass mysqlpump "derzeit als Ersatz für ein allgemeines Backup unsicher ist", da einzelne Threads ihre Abschnitte des Dumps möglicherweise aus verschiedenen Zuständen der Datenbank generieren. Es werden keine Pläne erwähnt, mysqldump abzulehnen.

Giuseppe Maxia hat 2015 mit mysqlpump rumgespielt und festgestellt, dass die Dumping-Geschwindigkeit relativ gering ist. Er schätzte die neue Möglichkeit, die zu sichernden Objekte genau auszuwählen, stellte jedoch fest, dass das Zurückladen des Speicherauszugs nur in einem Thread erfolgen kann und dass (im Gegensatz zu mysqldump) Speicherauszüge nur in Datenbanken mit demselben Namen zurückgeladen werden können.


2
Warnung: mysqlpumpIst Closed-Source-Software (ungewisse Zukunft). Eine Open Source-Alternative zu mysqlpumpist github.com/maxbube/mydumper mydumper
Ivanov

12

Ich habe mich auch mit den Unterschieden zwischen diesen beiden Dienstprogrammen befasst, und zusätzlich zu den in der Antwort von @ Neil genannten Optionen scheint mysqlpump auch weniger Optionen als mysqldump zu haben , so dass beispielsweise Folgendes nicht berücksichtigt wird :

  • --compatible=
  • --tabund die damit verbundenen Optionen von:
    • --fields-terminated-by=
    • --fields-enclosed-by=
    • --fields-optionally-enclosed-by=
    • --fields-escaped-by=
    • --lines-terminated-by=
  • --quote-names
  • --add-drop-trigger
  • --allow-keywords
  • --apply-slave-statements
  • --comments
  • --compact
  • --compatible
  • --create-options
  • --delete-master-logs
  • --disable-keys
  • --dump-date
  • --dump-slave
  • --enable-cleartext-plugin
  • --flush-logs
  • --flush-privileges
  • --force
  • --ignore-error
  • --include-master-host-port
  • --lock-all-tables
  • --lock-tables
  • --master-data
  • --no-autocommit
  • --no-tablespaces
  • --opt
  • --order-by-primary
  • --pipe
  • --quick
  • --quote-names
  • --set-gtid-purged
  • --shared-memory-base-name
  • --skip-add-drop-table
  • --skip-add-locks
  • --skip-comments
  • --skip-compact
  • --skip-disable-keys
  • --skip-extended-insert
  • --skip-opt
  • --skip-quick
  • --skip-quote-names
  • --skip-triggers
  • --skip-tz-utc
  • --verbose
  • --where
  • --xml

Auf der anderen Seite bietet mysqlpump die folgenden Optionen, die in mysqldump nicht verfügbar sind

  • --compress-output
  • --default-parallelism
  • --defer-table-indexes
  • --exclude-databases=
  • --exclude-events=
  • --exclude-routines=
  • --exclude-triggers=
  • --exclude-users=
  • --include-events=
  • --include-routines=
  • --include-triggers=
  • --include-users=
  • --parallel-schemas=
  • --skip-definer
  • --users
  • --watch-progress

Umbenannt oder ähnlich:

  • --no-datain dump == --skip-dump-rowsin pumpe
  • --no-set-namesin dump existiert nicht in pump , aber sein Synonym - --skip-set-charset- existiert in beiden
  • --ignore-table=in dump ist größtenteils --exclude-tables=in pump, außer dass --exclude-tablesalle Tabellen durch Kommas getrennt angegeben werden können und Platzhalterzeichen ( %und _) zulässig sind
  • --tablesin dump ist größtenteils --include-tables=in pump, außer dass --include-tablesalle Tabellen durch Kommas getrennt angegeben werden können und Platzhalterzeichen ( %und _) zulässig sind . Auch --tablesüberschreibt --databasesin dump , während --include-tables=in pump nicht.
  • --databasesSowohl in dump als auch in pump ist meistens --include-databases=in pump enthalten, außer dass --include-databasesalle Datenbanken durch Kommas getrennt angegeben werden können und Platzhalterzeichen ( %und _) zulässig sind .

3

Hier ist eine Zusammenfassung dessen, was ich zwischen den beiden Sicherungstools verstanden habe.

Die Definition für mysqldump in der Manualpage

Das Dienstprogramm mysqldump client führt logische Sicherungen durch und erstellt eine Reihe von SQL-Anweisungen, die ausgeführt werden können, um die ursprünglichen Datenbankobjektdefinitionen und Tabellendaten zu reproduzieren. Es speichert eine oder mehrere MySQL-Datenbanken zum Sichern oder Übertragen auf einen anderen SQL-Server. Der Befehl mysqldump kann auch eine Ausgabe im CSV-, anderen Text- oder XML-Format generieren.

Mysqldump ist sehr einfach zu bedienen und die Syntax ist auch sehr einfach. Wenn wir dies ausführen, konvertiert es alle Zeilen in SQL-Abfragen und gibt diese in der Standardausgabe aus. Wir können diese Ausgabe in ein Outfile (>) umleiten oder eine option - result-file verwenden.

Standardmäßig gibt mysqldump keine information_schema-Tabellen aus und es wird nie performance_schema verwendet. Der Hauptnachteil von mysqldump ist, dass nur ein Thread für die Sicherung und Wiederherstellung verwendet wird.

Mysqlpump ist ein weiteres Dienstprogramm, das in MySQL 5.7 eingeführt wurde und im Vergleich zu mysqldump einige Features mehr bietet

Die Definition für mysqlpump in der Manualpage

Das mysqlpump-Client-Dienstprogramm führt logische Sicherungen durch und erstellt eine Reihe von SQL-Anweisungen, die ausgeführt werden können, um die ursprünglichen Datenbankobjektdefinitionen und Tabellendaten zu reproduzieren. Es speichert eine oder mehrere MySQL-Datenbanken zum Sichern oder Übertragen auf einen anderen SQL-Server.

Die Hauptmerkmale sind

  • Parallelverarbeitung (Multi-Threading) zur Beschleunigung des Backups

  • Fortschrittsanzeige

  • Dumping von Benutzerkonten als (erstellen, Anweisungen nicht als Einfügungen für MySQL-Systemdatenbank gewähren)

Standardmäßig nimmt mysqlpump keine Sicherung von Systemdatenbanken wie Informationsschema, Leistungsschema und einigen MySQL-Systemtabellen vor, es sei denn, dies wird ausdrücklich erwähnt.

Es gibt auch die Optionen –include-database, –exclude-database, –include-table, –exclude-table mit Pattern Matching (%).

Diese Optionen sind praktischer für Benutzer, die nur wenige Objekte aus einem gesamten Datensatz sichern möchten.

Im Allgemeinen unterteilt mysqlpump seine Arbeit in Blöcke und jeder dieser Blöcke ist einer Multithread-Warteschlange zugeordnet.

  • Diese Multithread-Warteschlange wird von N Threads verarbeitet (standardmäßig werden 2 Threads verwendet).

  • Mit dieser Option können wir eine Reihe von Threads definieren: Standardparallelität und Parallelitätsschemata.

  • Während der Wiederherstellung wird ein einzelner Thread verwendet, der mit mysqldump identisch ist. Es fehlt die parallele Wiederherstellung.

Als Add-On haben wir ein weiteres Tool, das sowohl Backup als auch Restore parallelisiert (wobei mysqlpump und mysqldump fehlen) und als mydumper und myloader bezeichnet wird . Dies wird beim Wiederherstellen großer Datasets stark genutzt.

Weitere Details und nützliche Optionen dieses Tools finden Sie in diesem Blog mysqldump vs mysqlpump vs mydumper .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.