MySQL Binary Logs belegen viel Speicherplatz

Auf einem Einplatinencomputer wie dem Raspberry Pi lassen sich prima diverse Anwendungen betreiben. Für kleine Benutzergruppen ist es zum Beispiel recht einfach möglich, eine Private Cloud einzurichten, um Daten zu synchronisieren oder um Kalender und Kontakte mit unterschiedlichen Geräten abzugleichen. Damit solche Anwendungen auch funktionieren wird in den meisten Fällen eine Datenbank vorausgesetzt. Als Datenbanksystem kann auf aktuellen Generationen der Einplatinencomputer “MySQL” bzw. dessen Fork “MariaDB“ zum Einsatz kommen. Die Leistung der Geräte ist zwischenzeitlich so gut, dass dies problemlos funktioniert. MySQL bzw. MariaDB sollten vor dem ersten Einsatz zwingend abgesichert werden, damit zumindest die wichtigsten Grundkonfigurationen abgeschlossen sind.


Denn sollte der Raspberry Pi später über das Internet erreichbar sein, sollten alle Angriffsflächen so gut wie möglich minimiert werden. Die Absicherung ist ziemlich simpel und wird hier beschrieben: Klick Im späteren Betrieb von MySQL/MariaDB werden standardmäßig Logs im Binärformat erstellt. Diese enthalten sämtliche Transaktionen und werden für eine Wiederherstellung bzw. für Replikationszwecke benötigt. Sollte also das Datenbanksystem abstürzen, können alle Daten über die Binärlogs wiederhergestellt werden. Mit der Zeit werden immer mehr Binär Logs angelegt, die auch in der Standardeinstellung nicht mehr gelöscht werden. Somit kann es passieren, dass die Festplatte voll läuft und keine Schreibaktionen mehr durchgeführt werden können. Gleichzeitig geht das Erstellen der Binär Logs auch ein wenig auf die Performance des Gesamtsystems. Die Logs werden standardmäßig ins Verzeichnis „/var/lib/mysql/“ geschrieben und folgen dem Namensschema „mysql-bin.000xxx“. Sollte ein regelmäßig durchgeführtes Backup vorhanden und keine sekundengenaue Wiederherstellung bzw. Replikation erforderlich sein, lassen sich die Binär Logs auch deaktivieren. Alternativ kann auch ein Parameter in der MySQL Konfiguration hinzugefügt werden, welcher die Logs automatisch nach einer bestimmten Zeit löscht. Somit wäre das Volllaufen der Festplatte auch ausgeschlossen.

Um die bestehenden Binär Logs zu löschen, muss eine Verbindung zum MySQL Server hergestellt werden.

mysql -u root -p

Mit folgendem Befehl werden die vorhandenen Logs gelöscht. Vorsicht, falls die Dateien noch für andere Zwecke benötigt werden. Es wird keine Sicherheitsabfrage erfolgen!

RESET MASTER;

Nun kann das automatische Backup deaktiviert werden, bzw. eine Gültigkeitsdauer für die erstellten Logs definiert werden.

sudo nano /etc/mysql/my.cnf

Um das Logging komplett zu deaktivieren, wird der Parameter “log-bin” einfach auskommentiert.

#log-bin=mysql-bin

MySQL Binär Logs MariaDB Raspberry Pi

Sollen die Logs weiterhin erstellt, jedoch nicht bis in alle Ewigkeit aufgehoben werden, kann eine Gültigkeitsdauer definiert werden. Dazu muss ein neuer Parameter hinzugefügt werden.

expire_logs_days = 10

In diesem Fall werden die Logs nach 10 Tagen automatisch gelöscht. Damit die durchgeführten Änderungen aktiv werden, muss der MySQL/MariaDB Server einmal durchgestartet werden.

sudo systemctl restart mysql.service

Ab jetzt sollte die Festplatte des Raspberry Pi nicht mehr volllaufen bzw. sogar die Performance ein klein wenig besser sein, falls das Logging komplett deaktiviert wurde. Dann ist es jedoch wichtig, sich selbst um ein regelmäßiges Backup zu kümmern.