diff --git a/HowtoMySQL.md b/HowtoMySQL.md index 1e06a456..a36a67fd 100644 --- a/HowtoMySQL.md +++ b/HowtoMySQL.md @@ -499,6 +499,42 @@ ou mysql> SET @@max_connect_errors=50; ~~~ +### Log des requêtes lentes + +Pour débugger les applications lentes, c'est une fonctionnalité intéressante de trouver quelle requête est longue. +Pour cela on peut spécifier quand une requête est considérée comme longue, le chemin où stocker les requêtes, et l'activation des logs. + +~~~{.ini} +[mysqld] +long_query_time = 5 +slow_query_log = 1 +slow_query_log_file = /var/log/mysql/slow.log +~~~ + +Ou à chaud : + +~~~ +SET GLOBAL slow_query_log=ON; +SET GLOBAL long_query_time=5; +SET GLOBAL slow_query_log_file= "/var/log/mysql/slow.log"; +~~~ + +### Log des dead lock + +> *Note* : Seulement possible depuis MySQL 5.6 ou MariaDB 10. + +~~~{.ini} +[mysqld] +innodb_print_all_deadlocks = on +~~~ + +À chaud : + +~~~ +SET GLOBAL innodb_print_all_deadlocks=on; +~~~ + + ## Sauvegarde Pour sauvegarder une base de données dans un seul fichier (sans et avec compression) : @@ -747,7 +783,7 @@ log2mail. *Note* : il faut ajouter l'utilisateur `log2mail` dans le groupe `adm`. -## Gestion des binlogs +## binlogs Par défaut, MySQL stocke chaque requête en écriture dans des fichiers appelés *binlogs*. @@ -837,40 +873,15 @@ On pourra ainsi injecter le contenu d'un binlog dans une base… tout simplement # cat mysql-bin.001789.txt | mysql -P3307 ~~~ -### Log des requêtes lentes +### SET sql_log_bin = 0 -Pour débugger les applications lentes, c'est une fonctionnalité intéressante de trouver quelle requête est longue. -Pour cela on peut spécifier quand une requête est considérée comme longue, le chemin où stocker les requêtes, et l'activation des logs. - -~~~{.ini} -[mysqld] -long_query_time = 5 -slow_query_log = 1 -slow_query_log_file = /var/log/mysql/slow.log -~~~ - -Ou à chaud : +On peut effectuer des requêtes SQL qui ne seront pas écrites dans le binlog. Pour cela on positionne la variable _sql_log_bin_ à 0 et les requêtes interactives suivantes ne seront pas prises en compte dans le binlog (bien sûr, si l'on quitte le CLI MySQL, cela ne sera plus valable) : ~~~ -SET GLOBAL slow_query_log=ON; -SET GLOBAL long_query_time=5; -SET GLOBAL slow_query_log_file= "/var/log/mysql/slow.log"; +mysql> SET sql_log_bin = 0; ~~~ -### Log des dead lock - -> **Note** : Seulement possible depuis MySQL 5.6 ou MariaDB 10. - -~~~{.ini} -[mysqld] -innodb_print_all_deadlocks = on -~~~ - -À chaud : - -~~~ -SET GLOBAL innodb_print_all_deadlocks=on; -~~~ +> *Note* : cela nécessite le droit MySQL _SUPER_ ## Multiples instances MySQL