Serveurs Base de données

MariaDB : Fichier de configuration my.cnf

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

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;