MariaDB : Fichier de configuration my.cnf
Table des matières
Dans cet article, je détaille quelques options du fichier de config de MariaDB (my.cnf)
Sous Gentoo, vous retrouvez plusieurs emplacements :
Fichier de config pour la commande cliente mysql (et outils tels mysqldump) : /etc/mysql/mariadb.d/50-distro-client.cnf
Fichier de config pour le serveur MariaDB) : /etc/mysql/mariadb.d/50-distro-server.cnf
Dans les options serveur, vous pouvez activer les logs binaires. Ils contiennent toutes les requêtes qui modifient les données (INSERT, UPDATE ou DELETE). Ainsi en repartant d'un dump on peut rejouer les requêtes restantes :
Par défaut ces logs ne s'épurent pas, vous pouvez les épurer tous les 90 jours par exemple avec :
Pour consulter les logs binaires, utiliser la commande mysqlbinlog :
Il est possible d'activer le general_log :
Ce log collecte TOUT ce qui se passe sur le serveur, il est donc très verbeux ! A activer pour du diagnostic !
Voici un exemple lorsque j'affiche la page d'accueil de mon programme marjo21 :
Comme son nom l'indique, cette option va permettre de logguer les requêtes longue à s’exécuter :
long_query_time est défini en secondes.
Voici un résultat produit avec une simple jointure et un long_query_time à 1 seconde sur ma base Zabbix :
Introduction
Dans cet article, je détaille quelques options du fichier de config de MariaDB (my.cnf)
Les fichiers
Sous Gentoo, vous retrouvez plusieurs emplacements :
Fichier de config pour la commande cliente mysql (et outils tels mysqldump) : /etc/mysql/mariadb.d/50-distro-client.cnf
Fichier de config pour le serveur MariaDB) : /etc/mysql/mariadb.d/50-distro-server.cnf
Config Serveur
Logs Binaires
Dans les options serveur, vous pouvez activer les logs binaires. Ils contiennent toutes les requêtes qui modifient les données (INSERT, UPDATE ou DELETE). Ainsi en repartant d'un dump on peut rejouer les requêtes restantes :
Code TEXT :
log-bin
Par défaut ces logs ne s'épurent pas, vous pouvez les épurer tous les 90 jours par exemple avec :
Code TEXT :
expire_logs_days = 60
Pour consulter les logs binaires, utiliser la commande mysqlbinlog :
Code BASH :
mysqlbinlog /var/lib/mysql/mariadb-bin.000086
General Logs
Il est possible d'activer le general_log :
Code TEXT :
general_log = 1 general_log_file=/var/log/mysql/mysql-general-log.log
Ce log collecte TOUT ce qui se passe sur le serveur, il est donc très verbeux ! A activer pour du diagnostic !
Voici un exemple lorsque j'affiche la page d'accueil de mon programme marjo21 :
Code TEXT :
220712 18:26:55 73 Connect marjo21@localhost on marjo21 using Socket 73 Query SET CHARACTER SET utf8 73 Query SELECT id FROM links 73 Query SELECT * FROM links ORDER BY dateandtime DESC LIMIT 0, 20 73 Quit
Slow Query Logs
Comme son nom l'indique, cette option va permettre de logguer les requêtes longue à s’exécuter :
Code TEXT :
slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 5
long_query_time est défini en secondes.
Voici un résultat produit avec une simple jointure et un long_query_time à 1 seconde sur ma base Zabbix :
Code TEXT :
# Time: 220712 18:37:34 # User@Host: root[root] @ localhost [] # Thread_id: 164 Schema: zabbix QC_hit: No # Query_time: 1.555015 Lock_time: 0.000149 Rows_sent: 1023021 Rows_examined: 1026876 # Rows_affected: 0 Bytes_sent: 93865171 use zabbix; SET timestamp=1657643854; select * from history_str h left join history_str h1 on h.itemid=h1.itemid;