Quel est le moyen le plus rapide pour faire un dump & charger une base de données MySQL InnoDB base de données à l'aide de la commande mysqldump?
Je voudrais créer une copie d'une base de données avec environ 40 tables InnoDB et autour de 1.5 GO de données avec la commande mysqldump et MySQL 5.1.
Quels sont les meilleurs paramètres (c'est à dire: --single-transaction) qui va entraîner le moyen le plus rapide de vidage et de chargement des données?
Ainsi, lors du chargement des données dans la deuxième DB, est-il plus rapide:
1) tuyau directement les résultats de la deuxième instance de serveur MySQL et utiliser l'option --option de compression
ou
2) de la charge à partir d'un fichier texte (ex: mysql < my_sql_dump.sql)
OriginalL'auteur Josh Schwartzman | 2008-09-25
Vous devez vous connecter pour publier un commentaire.
Tuyau directement à un autre exemple, pour éviter la surcharge de disque. Ne vous embêtez pas avec
--compress
, sauf si vous êtes en cours d'exécution sur un réseau lent, puisque sur un réseau local rapide ou de bouclage de la surcharge du réseau n'a pas d'importance.OriginalL'auteur John Millikin
RAPIDEMENT le dumping d'une suspension de la base de données:
À l'aide de l'option "-T " option avec la commande mysqldump résultats dans beaucoup de .sql et .les fichiers txt dans le répertoire spécifié. C'est ~50% plus rapide pour le dumping des grandes tables qu'un seul .fichier sql avec INSERT (prend 1/3 de moins horloge murale).
En outre, il y a un énorme avantage lors de la restauration si vous pouvez charger plusieurs tables en parallèle, et saturer de plusieurs cœurs. Sur un 8-core zone, ce pourrait être comme beaucoup comme un 8X différence dans l'horloge murale de la restauration de la sauvegarde, sur le haut de l'efficacité des améliorations apportées par "-T". Parce que "-T" provoque chaque table pour être stocké dans un fichier séparé, le chargement en parallèle est plus facile que l'éclatement d'un massif .fichier sql.
Prenant les stratégies ci-dessus à son extrême logique, on pourrait créer un script pour faire un dump d'une base de données largement en parallèle. Eh bien, c'est exactement ce que le Maakit mk-parallèle-dump (voir http://www.maatkit.org/doc/mk-parallel-dump.html) et mk-parallèle-restauration sont les outils; les scripts perl qui font de multiples appels à la sous-jacentes mysqldump programme. Cependant, quand j'ai essayé de les utiliser, j'ai eu de la difficulté à obtenir la restauration complète sans double de la clé des erreurs qui n'a pas eu lieu à la vanille, avec des décharges, donc gardez à l'esprit que votre kilométrage peut varier.
Dumping des données à partir d'une base de données interactive (w/o interruption de service):
L' --single-transaction switch est très utile pour la prise d'un dump d'une base de données sans avoir à suspendre ou de prendre un dump d'une base de données esclave sans avoir à arrêter d'asservissement.
Malheureusement, l'-T n'est pas compatible avec --single-transaction, de sorte que vous obtenez seulement un.
Normalement, l'image est beaucoup plus rapide que de le restaurer. Il y a encore de la place pour un outil qui prennent en entrant monolithique fichier de vidage et le brise en plusieurs morceaux pour être chargé en parallèle. À ma connaissance, un tel outil n'existe pas encore.
Le transfert de la décharge sur le Réseau est généralement une victoire
Pour écouter l'arrivée d'un dump sur un hôte exécuter:
Ensuite sur votre base de données de l'hôte, exécutez
Cela réduit les conflits pour les piles de disques sur le maître de l'écriture du dump sur le disque légèrement la vitesse de votre dump (en supposant que le réseau est assez rapide pour suivre, une supposition assez fiable pour deux hôtes dans le même centre de données). De Plus, si vous êtes la construction d'un nouvel esclave, ce qui économise de l'étape d'avoir à transférer le fichier de vidage après c'est fini.
Mises en garde - évidemment, vous devez avoir suffisamment de bande passante du réseau pour ne pas ralentir les choses insupportable, et si la session TCP pauses, vous devez tout recommencer, mais pour la plupart des dumps ce n'est pas une préoccupation majeure.
Enfin, je tiens à éclaircir un point de communes de la confusion.
Malgré la fréquence de ces indicateurs dans le dump des exemples et des tutoriels, ils sont superflus, car ils sont activés par défaut:
--opt
--add-drop-table
--add-locks
--create-options
--disable-keys
--extended-insert
--lock-tables
--quick
--set-charset
.De http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html:
De ces comportements, "--quick" est l'un des plus importants (saute de la mise en cache l'ensemble de l'ensemble de résultats de mysqld, avant de transmettre la première ligne), et peut être avec "mysql" (qui ne tourne-rapide sur par défaut) pour accélérer les requêtes qui retournent des résultats de recherche importants (par exemple le dumping toutes les lignes d'une grande table).
OriginalL'auteur Dave Dopson
je pense que ce sera beaucoup plus rapide et économiser de l'espace disque si vous avez essayé réplication de base de données par opposition à l'aide de la commande mysqldump. personnellement, j'utilise contrairement à l'entreprise pour ma vraiment soulever des poids lourds, mais il y a aussi un certain nombre de d'autres outils que peuvent fournir les mêmes services. sauf bien sûr si vous ne souhaitez utiliser que la commande mysqldump.
OriginalL'auteur jake
Pour innodb, --ordre-par-primaire --extended-insert est généralement le meilleur combo. Si votre après chaque bit de la performance et de la zone cible a beaucoup de cœurs du PROCESSEUR, vous pouvez partagea le fichier de vidage et de faire en parallèle insère dans de nombreux filets, jusqu'à innodb_thread_concurrency/2.
Aussi, ajuster la innodb_buffer_pool_size sur la cible, le maximum que vous pouvez vous permettre, et d'augmenter innodb_log_file_size à 128 ou 256 MO (attention à tout cela, vous avez besoin pour supprimer les anciens fichiers de log avant de redémarrer le démon mysql, sinon ça ne redémarre pas)
OriginalL'auteur ggiroux
Utilisation mk-parallèle-outil de vidage de Maatkit.
Au moins ce serait sans doute plus rapide. J'avais confiance mysqldump plus.
À quelle fréquence faites-vous cela? Est-il vraiment une demande de problèmes de performance? Peut-être que vous devez concevoir une façon de faire ce qui n'a pas besoin de dump l'ensemble des données (réplication?)
D'autre part, de 1,5 G est une petite base de données de sorte qu'il ne sera probablement pas beaucoup d'un problème.
OriginalL'auteur MarkR