Vous est-il déjà arrivé de voir un de vos serveurs de base de données MySQL mis à genoux par la faute de développeurs incompétents qui effectuent des requêtes sur des tables sans index composées de dizaines de millions de tuples ?
Si la réponse est oui, voici ma solution « one line » pour les calmer un peu !
Logiciels utilisés :
- GNU Awk 3.1.5
- MySQL Client 5.0.51a
root@gnusquad:~# mysql -e 'SHOW PROCESSLIST' | awk 'BEGIN { MAX_TIME = 60 ; USERS = "boulet1|boulet2" } $6 > MAX_TIME && $5 == "Query" && $2 ~ USERS {print "KILL " $1 ";"}' | mysql
Petites explications sur le code « awk » :
- $1 contient l’ID de la requête SQL
- $2 contient le nom de l’utilisateur
- $5 contient le type de commande (Query, Sleep, …)
- $6 contient le temps d’exécution de la requête SQL en secondes
- MAX_TIME contient le temps en secondes à partir duquel une requête doit être tuée
- USERS contient une expression rationnelle indiquant les utilisateurs concernés par cette sanction
Il ne vous reste plus qu’à mettre ce script dans le « crontab » en pensant à vous connecter avec un utilisateur MySQL ayant le droit « SUPER » pour pouvoir tuer les connexions si besoin est.
À lire :
Dans un précédent billet, nous apprenions qu’il y allait avoir du changement au niveau de la distribution de MySQL sans savoir si cela allait être en faveur ou en défaveur du libre.
MySQL, sous la pression de Sun, a tranché et Kaj Arnö, vice président en charge de la communauté open source, nous informe que MySQL Server est, et restera complètement fonctionnel et open source ainsi que ses différents connecteurs et moteurs de tables. À cela s’ajoute quelques nouveautés très intéressantes axées sur les sauvegardes qui seront également placées en open source :
- les fonctionnalités de pending backup
- le driver MyISAM natif permettant de mixer des backups logiques et physiques
- les fonctionnalités de chiffrement et de compression lors des backups
Nous voilà donc rassurés !
À lire :
Mårten Mickos, vice président de la branche base de données chez Sun Microsystems vient d’annoncer à l’assemblée des partenaires de MySQL, que certaines parties du code source seront fermées pour ne les proposer qu’avec MySQL Enterprise, version payante du logiciel éponyme. Cette décision a apparemment été prise il y a plusieurs mois, avant que MySQL AB ne se fasse racheter par Sun en janvier 2008. Toutefois, cette décision pourrait être annulée par la nouvelle société mère qui, au contraire, voudrait libérer du code source, notamment celui lié aux solutions de sauvegardes.
À lire :