MariaDB Docker lagre db/binlog.* Dateien. Überläuft die Festplatte bis zum Ausfall

MariaDB Docker lagre db/binlog.* Dateien. Überläuft die Festplatte bis zum Ausfall

Wie repariert man?

ls -lh /root/docker/yml/nextcloud/db/binlog.*

-rw-rw---- 1 999 999 960M Aug 25 22:55 /root/docker/yml/nextcloud/db/binlog.000043
-rw-rw---- 1 999 999 5.5M Aug 25 23:52 /root/docker/yml/nextcloud/db/binlog.000044
-rw-rw---- 1 999 999 156M Aug 26 23:40 /root/docker/yml/nextcloud/db/binlog.000045
-rw-rw---- 1 999 999 260M Aug 28 15:10 /root/docker/yml/nextcloud/db/binlog.000046
-rw-rw---- 1 999 999 548M Sep  1 00:03 /root/docker/yml/nextcloud/db/binlog.000047
-rw-rw---- 1 999 999 593M Sep  4 11:28 /root/docker/yml/nextcloud/db/binlog.000048
-rw-rw---- 1 999 999  13M Sep  4 13:21 /root/docker/yml/nextcloud/db/binlog.000049
-rw-rw---- 1 999 999 529M Sep  9 22:20 /root/docker/yml/nextcloud/db/binlog.000050
-rw-rw---- 1 999 999  128 Sep  4 13:26 /root/docker/yml/nextcloud/db/binlog.index

Docker komponieren YML DB TEIL

services:
  db:
    image: mariadb:10.6
    container_name: nextcloudDB
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW --expire_logs_days=2
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=d`X'1B7Ss/=E;JxROOT
      - MYSQL_PASSWORD=d`X'3B7SD/dE;Jx
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    logging:
            driver: "json-file"
            options:
                max-size: "50m"
                max-file: "10"

- ./db:/var/lib/mysql spezielles Add-on ./ in ./db für Backup

Antwort1

Binärprotokolle werden zur Datenwiederherstellung, Replikation und Datenbanküberwachung verwendet. Und Sie können alte löschen. und zitiert diese Antwort ausDB

Das müssen Sie mysqld für Sie erledigen lassen. So geht mysqld vor:

Die Datei mysql-bin.[index] enthält eine Liste aller Binärprotokolle, die mysqld generiert und automatisch rotiert hat. Die Mechanismen zum Bereinigen der Binärprotokolle in Verbindung mit mysql-bin.[index] sind:

PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';

Antwort2

DerVerwenden und Verwalten des BinärprotokollsDie Seite in der MariaDB-Wissensdatenbank enthält Informationen zum Löschen von Binärprotokollen.

Um alle binären Logdateien auf dem Server zu löschen, führen Sie denMASTER ZURÜCKSETZENBefehl. Um alle Binärprotokolle vor einem bestimmten Datum oder einer bestimmten Anzahl zu löschen, verwenden SieBINÄRPROTOKOLLE LÖSCHEN.

Auf der Seite wird auch erklärt, wie mit der Binlog-Aufbewahrung automatisch umgegangen wird.

Logdateien können auch automatisch gelöscht werden mit demProtokolltage ablaufen lassenSystemvariable. Dies ist standardmäßig auf 0 eingestellt (keine Entfernung), kann aber auf eine Zeit in Tagen eingestellt werden, nach deren Ablauf eine binäre Protokolldatei automatisch entfernt wird. Protokolldateien werden bei der Protokollrotation nur auf ihr Alter als expire_logs_days überprüft. Wenn sich Ihr binäres Protokoll also nur langsam füllt und nicht erreichtmax_binlog_sizetäglich werden möglicherweise ältere Protokolldateien aufbewahrt. Sie können auch die Protokollrotation und damit das Löschen nach Ablauf erzwingen, indem Sie Folgendes ausführen:BINÄRE LOGS LEERENregelmäßig. Setzen Sie expire_logs_days immer höher als eine mögliche Replikationsverzögerung.

In Ihrem Fall max_binlog_sizesollte das Verringern dazu beitragen, dass die Binärprotokollrotationen häufiger erfolgen, was wiederum die Menge der gespeicherten Daten verringert. Wenn Sie in Ihrem hinzufügen --max_binlog_size=100M, commandlöscht docker-compose.ymlder MariaDB-Server die Binärprotokolle, sobald sie 100 MiB überschritten haben.

Wie in der Dokumentation erwähnt, können Sie den FLUSH BINARY LOGSBefehl manuell ausführen, um eine Binlog-Rotation zu erzwingen, die wiederum das Löschen alter Dateien auslöst.

verwandte Informationen