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?
17
Antworten:
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.
quelle
mysqlpump
Ist Closed-Source-Software (ungewisse Zukunft). Eine Open Source-Alternative zumysqlpump
ist github.com/maxbube/mydumpermydumper
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=
--tab
und 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-data
in dump ==--skip-dump-rows
in pumpe--no-set-names
in 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-tables
alle Tabellen durch Kommas getrennt angegeben werden können und Platzhalterzeichen (%
und_
) zulässig sind--tables
in dump ist größtenteils--include-tables=
in pump, außer dass--include-tables
alle Tabellen durch Kommas getrennt angegeben werden können und Platzhalterzeichen (%
und_
) zulässig sind . Auch--tables
überschreibt--databases
in dump , während--include-tables=
in pump nicht.--databases
Sowohl in dump als auch in pump ist meistens--include-databases=
in pump enthalten, außer dass--include-databases
alle Datenbanken durch Kommas getrennt angegeben werden können und Platzhalterzeichen (%
und_
) zulässig sind .quelle
Hier ist eine Zusammenfassung dessen, was ich zwischen den beiden Sicherungstools verstanden habe.
Die Definition für mysqldump in der Manualpage
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
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 .
quelle