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, section mysqld, 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 :
Si expire_logs_days n'est pas défini, les logs binaires ne sont jamais purgés.
Pour purger les logs en ne conservant qu'à partir du 000025 :
Il est possible d'activer le general_log dans la section mysqld:
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. Elle se paramètre dans la section mysqld :
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, section mysqld, 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 = 90
Pour consulter les logs binaires, utiliser la commande mysqlbinlog :
Code BASH :
mysqlbinlog /var/lib/mysql/mariadb-bin.000086
Si expire_logs_days n'est pas défini, les logs binaires ne sont jamais purgés.
Code SQL :
SHOW BINARY LOGS;
Code TEXT :
+--------------------+------------+ | Log_name | File_size | +--------------------+------------+ | mariadb-bin.000001 | 10643992 | | mariadb-bin.000002 | 36140 | | mariadb-bin.000003 | 17629 | | mariadb-bin.000004 | 126218331 | | mariadb-bin.000005 | 753789 | | mariadb-bin.000006 | 29481961 | | mariadb-bin.000007 | 9256492 | | mariadb-bin.000008 | 448569232 | | mariadb-bin.000009 | 961149982 | | mariadb-bin.000010 | 875402039 | | mariadb-bin.000011 | 741324229 | | mariadb-bin.000012 | 1073742180 | | mariadb-bin.000013 | 500107756 | | mariadb-bin.000014 | 1073742213 | | mariadb-bin.000015 | 441741273 | | mariadb-bin.000016 | 1073741882 | | mariadb-bin.000017 | 134446271 | | mariadb-bin.000018 | 366962586 | | mariadb-bin.000019 | 1073742020 | | mariadb-bin.000020 | 676902164 | | mariadb-bin.000021 | 734088752 | | mariadb-bin.000022 | 1073742138 | | mariadb-bin.000023 | 126454365 | | mariadb-bin.000024 | 1073742223 | | mariadb-bin.000025 | 469721283 | | mariadb-bin.000026 | 432014422 | | mariadb-bin.000027 | 101013806 | | mariadb-bin.000028 | 247517203 | | mariadb-bin.000029 | 1073742036 | | mariadb-bin.000030 | 703952236 | | mariadb-bin.000031 | 1073746773 | | mariadb-bin.000032 | 1073742284 | | mariadb-bin.000033 | 42412962 | | mariadb-bin.000034 | 1073742052 | | mariadb-bin.000035 | 1073742012 | | mariadb-bin.000036 | 73467423 | | mariadb-bin.000037 | 19185720 | | mariadb-bin.000038 | 1073742113 | | mariadb-bin.000039 | 203775991 | | mariadb-bin.000040 | 894072028 | | mariadb-bin.000041 | 573622916 | +--------------------+------------+ 41 rows in set (0.000 sec)
Pour purger les logs en ne conservant qu'à partir du 000025 :
Code SQL :
PURGE BINARY LOGS TO 'mariadb-bin.000025';
General Logs
Il est possible d'activer le general_log dans la section mysqld:
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. Elle se paramètre dans la section mysqld :
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;