Procédure pour désactiver les journaux binaires dans les bases de données MariaDB et MySQL.

Il y a quelques jours, Geekflare était indisponible, et la raison en était simple : il n’y avait plus d’espace disponible sur le périphérique. J’ai reçu des centaines d’alertes et de courriels de la part du public concernant l’indisponibilité du site web, mais j’étais en déplacement et je n’ai pas pu agir à temps.

L’incident a été consigné dans les journaux de Google Cloud.

Feb 13 15:58:35 geekflare snapd<x>[1308]</x>: daemon.go:379 : a démarré snapd/2.37.1 (series 16 ; classic) ubuntu/18.04 (amd64) linux/4.15.0-1027-gcp.
Feb 13 15:58:35 geekflare snapd<x>[1308]</x>: main.go:123 : system does not fully support snapd : mkdir /tmp/sanity-mountpoint-464926152 : no space left on device
Feb 13 15:58:35 geekflare systemd[1]: A démarré le démon Snappy.

Cela m’a surpris car Geekflare n’est qu’un simple blog et ne stocke ni ne traite de grandes quantités de données. J’ai donc commencé à enquêter et j’ai découvert que /var/log/mysql prenait ~50% du stockage total.

root@geekflare:/var/log# du -sh mysql
9.4G mysql
root@geekflare:/var/log#

Et, après avoir listé les fichiers.

-rw-rw---- 1 mysql adm 104860436 Feb 10 19:05 mariadb-bin.000105
-rw-rw---- 1 mysql adm 104869270 Feb 10 22:12 mariadb-bin.000106
-rw-rw---- 1 mysql adm 104868195 Feb 11 01:41 mariadb-bin.000107
-rw-rw---- 1 mysql adm 104859088 Feb 11 04:44 mariadb-bin.000108
-rw-rw---- 1 mysql adm 104862187 Feb 11 07:22 mariadb-bin.000109
-rw-rw---- 1 mysql adm 104860386 Feb 11 09:25 mariadb-bin.000110
-rw-rw---- 1 mysql adm 104867622 Feb 11 11:22 mariadb-bin.000111
-rw-rw---- 1 mysql adm 104871043 Feb 11 13:18 mariadb-bin.000112
-rw-rw---- 1 mysql adm 104873816 Feb 11 15:07 mariadb-bin.000113
-rw-rw---- 1 mysql adm 104858814 Feb 11 17:09 mariadb-bin.000114
-rw-rw---- 1 mysql adm 104858302 Feb 11 19:18 mariadb-bin.000115
-rw-rw---- 1 mysql adm 104859019 Feb 11 21:33 mariadb-bin.000116
-rw-rw---- 1 mysql adm 104860830 Feb 12 00:05 mariadb-bin.000117
-rw-rw---- 1 mysql adm 3298 Feb 12 02:58 mariadb-bin.index
-rw-rw---- 1 mysql adm 104873697 Feb 12 02:58 mariadb-bin.000118
-rw-rw---- 1 mysql adm 104259584 Feb 13 15:24 mariadb-bin.000119
-rw-rw---- 1 mysql adm 0 Feb 13 15:25 mariadb-bin.state
root@geekflare:/var/log/mysql#

Il s’agit de journaux binaires.

Vous pouvez penser à les supprimer pour récupérer le système, mais gardez à l’esprit qu’ils se rempliront à nouveau. La meilleure façon d’éviter cela est donc de demander à MariaDB de ne pas enregistrer les logs. Je n’ai pas d’implémentation de réplique, il est donc possible de désactiver la journalisation binaire.

Il s’agit d’une simple configuration en une ligne.

Si vous utilisez MariaDB

  • Connectez-vous au serveur sur lequel tourne MariaDB
  • Allez dans /etc/mysql/conf.d
  • Faites une sauvegarde de mariadb.cnf
  • Ajoutez ce qui suit sous [mysqld] directive
skip-log-bin
  • Enregistrez le fichier de configuration

À ce stade, vous pouvez supprimer ces fichiers journaux binaires et redémarrer la base de données.

Si vous utilisez MySQL

  • Connectez-vous au serveur MySQL
  • Allez dans le fichier /etc/my.cnf.d/
  • Ajoutez les éléments suivants dans le fichier mysql-server.cnf <x>[mysqld]</x> dans la directive [mysqld
skip-log-bin
  • Sauvegardez le fichier et redémarrez le serveur MySQL
service mysqld stop
service mysqld start

Maintenant, vous pouvez supprimer ces fichiers binaires sous /var/lib/mysql. J’espère que cela vous aidera.

Si vous utilisez une application critique, vous pouvez également envisager d’opter pour un hébergement MySQL géré qui s’occupe de l’optimisation des performances.