web-dev-qa-db-fra.com

Comment puis-je ralentir un vidage MySQL pour ne pas affecter la charge actuelle sur le serveur?

Alors que faire un vidage MySQL est assez facile, j'ai un serveur MySQL dédié en direct sur lequel je veux configurer la réplication. Pour ce faire, j'ai besoin de vidages des bases de données à importer sur mon esclave de réplication.

Le problème vient quand je fais les vidages, MySQL y met tout en œuvre et lie les ressources aux sites qui s'y connectent. Je me demande s'il existe un moyen de limiter les requêtes de vidage à un état de faible priorité auquel la préférence est donnée aux connexions en direct? L'idée étant que la charge des sites externes ne soit pas affectée par l'effort de MySQL pour faire un vidage complet ...

55
z33k3r

J'ai de très grandes bases de données avec des dizaines de milliers de tables dont certaines ont jusqu'à 5 Go de données dans 10 millions de entrées. (J'exécute un service populaire) ... J'ai toujours eu des maux de tête lors de la sauvegarde de ces bases de données. En utilisant mysqldump par défaut, il spirale rapidement la charge du serveur et contrôle tout ... affectant mes utilisateurs. Essayer d'arrêter le processus peut entraîner des plantages de tables et de nombreux temps d'arrêt lors de la récupération de ces tables.

J'utilise maintenant ...

mysqldump -u USER -p --single-transaction --quick --lock-tables=false DATABASE | gzip > OUTPUT.gz

Le référence mysqldump sur dev.mysql.com dit même ...

Pour vider de grandes tables, vous devez combiner l'option --single-transaction avec --quick.

Rien ne dit que cela dépend de la base de données InnoDB, les miennes sont myISAM et cela a très bien fonctionné pour moi. La charge du serveur n'a pratiquement pas été affectée et mon service a fonctionné comme une Rolex pendant tout le processus. Si vous avez de grandes bases de données et que leur sauvegarde affecte votre utilisateur final ... ceci IS la solution.;)

134
CA3LE

Si vous utilisez des tables InnoDB, utilisez les options --single-transaction et --quick pour mysqldump

39
Drew Clayton