Je viens d'entendre parler de mysqlpump - il semble qu'il ait été publié avec MySQL 5.7, mais MySQL 5.7 inclut toujours mysqldump . Ce sont deux programmes de sauvegarde, mais quelqu'un pourrait-il résumer les principales différences? Existe-t-il des scénarios où l'un d'entre eux pourrait fonctionner mieux? Mysqldump va-t-il être supprimé pour mysqlpump?
17
Réponses:
Depuis que je fais des recherches sur ce sujet moi-même, voici un résumé de ce que j'ai trouvé.
Selon un article de blog de 2015 de l'équipe de développement MySQL , les principaux avantages de mysqlpump sont qu'il peut utiliser plusieurs threads en parallèle pour accélérer le vidage et qu'il ne partage pas les exigences de compatibilité descendante de mysqldump, ce qui devrait ouvrir la porte pour plus de détails. améliorations.
Cependant, le message prévient que mysqlpump est "actuellement dangereux en tant que remplacement de sauvegarde à usage général" car des threads individuels peuvent générer leurs sections du vidage à partir de différents états de la base de données. Il ne mentionne aucun projet de dépréciation de mysqldump.
Giuseppe Maxia a joué avec mysqlpump en 2015 et a trouvé l'accélération du dumping assez faible. Il a apprécié la nouvelle possibilité de sélectionner précisément les objets à sauvegarder, mais a noté que le chargement de la sauvegarde ne peut être effectué que sur un seul thread et que (contrairement à mysqldump) les sauvegardes ne peuvent être rechargées que dans des bases de données portant le même nom.
la source
mysqlpump
logiciel fermé (avenir incertain). Une alternative Open Source àmysqlpump
est github.com/maxbube/mydumpermydumper
J'ai également examiné les différences entre ces deux utilitaires, et en plus de ce qui est mentionné dans la réponse de @ Neil , il semble que mysqlpump ait également moins d'options que mysqldump , comme ne pas autoriser les éléments suivants:
--compatible=
--tab
et ses options connexes de:--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
D'un autre côté, mysqlpump a les options suivantes qui ne sont pas disponibles dans mysqldump
--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
Renommé ou similaire:
--no-data
en décharge ==--skip-dump-rows
en pompe--no-set-names
dans le vidage n'existe pas dans la pompe , mais son synonyme ---skip-set-charset
- existe dans les deux--ignore-table=
in dump est principalement--exclude-tables=
dans pump, sauf qu'il--exclude-tables
peut spécifier toutes les tables, séparées par des virgules, et autorise les caractères génériques (%
et_
)--tables
in dump est principalement--include-tables=
dans pump, sauf qu'il--include-tables
peut spécifier toutes les tables, séparées par des virgules, et autorise les caractères génériques (%
et_
). En--tables
outre , les remplacements--databases
dans le vidage , contrairement--include-tables=
à la pompe .--databases
à la fois dans le vidage et la pompe se trouve principalement--include-databases=
dans la pompe, sauf qu'il--include-databases
peut spécifier toutes les bases de données, séparées par des virgules, et autorise les caractères génériques (%
et_
).la source
Voici le résumé de ce que j'ai compris entre les deux outils de sauvegarde.
La définition de mysqldump donnée dans la page de manuel
Mysqldump est très facile à utiliser et la syntaxe est également très simple. Lorsque nous l'exécutons, il convertit toutes les lignes en requêtes SQL et les affiche en sortie standard. Nous pouvons rediriger cette sortie vers un outfile (>) ou en utilisant une option - result-file.
Par défaut, mysqldump ne vide pas les tables information_schema et il ne prend jamais performance_schema. L'inconvénient majeur de mysqldump est qu'il n'utilise qu'un seul thread lors de la sauvegarde et de la restauration.
Mysqlpump est un autre utilitaire qui a été introduit dans MySQL 5.7 avec quelques fonctionnalités supplémentaires par rapport à mysqldump
La définition de mysqlpump donnée dans la page de manuel
Les principales caractéristiques sont
Traitement parallèle (multi thread) pour accélérer la sauvegarde
Indicateur de progrès
Vidage des comptes utilisateurs en tant que (créer, accorder des relevés non en tant qu'inserts pour la base de données système MySQL)
Par défaut, mysqlpump ne prend pas de sauvegarde des bases de données système telles que le schéma d'informations, le schéma de performances et certaines tables système MySQL, sauf indication contraire explicite.
Il a également des options –include-database, –exclude-database, –include-table, –exclude-table avec correspondance de modèle (%).
Ces options sont plus pratiques pour les utilisateurs qui souhaitent sauvegarder uniquement quelques objets d'un ensemble de données entier.
En général, mysqlpump divise son travail en morceaux et chacun est affecté à une file d'attente multithread.
Cette file d'attente multithread est traitée par N threads (par défaut, elle utilise 2 threads).
Nous pouvons définir un certain nombre de threads en utilisant cette option –default-parallelism et –parallel-schemas.
pendant la restauration, il utilise un seul thread qui est le même que mysqldump, il manque une restauration parallèle.
En tant que module complémentaire, nous avons un autre outil qui effectue la parallélisation à la fois dans la sauvegarde et la restauration (où manquent mysqlpump et mysqldump) qui est appelé mydumper et myloader . Cela sera grandement utilisé lors de la restauration d'énormes ensembles de données.
Vous pouvez trouver plus de détails et ses options utiles de ces outils dans ce blog mysqldump vs mysqlpump vs mydumper .
la source