Actuellement, nous avons une base de données MySQL robuste qui gère quelques sites Web à fort trafic basés sur Django ainsi que certains sites Web de commerce électronique de taille décente. En conséquence, nous avons une quantité considérable de grandes bases de données utilisant à la fois les tables InnoDB et MyISAM.
Malheureusement, nous avons récemment heurté un mur en raison de la quantité de trafic, j'ai donc configuré un autre serveur maître pour aider à alléger les lectures / sauvegardes.
Maintenant, pour le moment, j'utilise simplement mysqldump avec quelques arguments et cela s'est avéré être correct .. jusqu'à maintenant. Évidemment, mysqldump est une méthode rapide et lente, mais je pense que nous avons dépassé son utilisation. J'ai maintenant besoin d'une bonne alternative et j'ai cherché à utiliser l'utilitaire Maatkits mk-parallel-dump ou une solution d'instantané LVM.
Version courte succincte:
- J'ai une assez grande base de données MySQL que je dois sauvegarder
- La méthode actuelle utilisant mysqldump est inefficace et lente (causant des problèmes)
- Examen de quelque chose comme mk-parallel-dump ou des instantanés LVM
Toutes les recommandations ou idées seraient appréciées - puisque je dois refaire la façon dont nous faisons les choses, je préfère que ce soit fait correctement / le plus efficacement :).
la source
xtrabackup - au moins pour innodb.
la source
La façon la plus courante de résoudre ce problème consiste à configurer un autre serveur MySQL, qui peut même se trouver sur la même machine, et à exécuter la réplication maître / esclave. Vous pouvez ensuite effectuer la sauvegarde sur l'esclave, sans impact sur le maître.
la source
Sur EC2 EBS, j'utilise actuellement xfs_freeze. J'envisage de passer éventuellement à xtrabackup à un moment donné, mais quand je l'ai fait un premier test, c'était très, très gourmand en CPU.
la source
Si vous exécutez la réplication d'une base de données partagée entre plusieurs applications, il semble évident que vous pouvez améliorer les performances de nombreuses choses, y compris les sauvegardes, en dédiant les serveurs de base de données aux applications. Partagé est agréable, jusqu'à ce qu'il ne soit pas.
la source
Si vous conservez vos tables MyISAM uniquement pour des raisons héritées (vous n'avez pas pris la peine de les modifier), voici ce que j'utilise pour corriger facilement cela:
Vous pouvez exclure et inclure des bases de données avec l'expression rationnelle awk, comme uniquement dbs commençant par une lettre minuscule dans mon exemple ci-dessus. Cela verrouillera bien sûr les tables pendant la modification.
Utilisez ensuite xtrabackup pour copier l'intégralité de la base de données directement sur un autre serveur sans verrouiller aucune table ni utiliser trop d'E / S de disque (après avoir configuré les clés ssh rsa):
et ensuite vous pouvez faire l'étape d'application du journal complètement séparée et économiser de l'espace disque, des E / S et du processeur sur le serveur de production.
HowTo de Percona pour utiliser xtrabackup
la source