Arquivos MariaDB Docker lagre db/binlog.*. Sobrecarrega o disco até o ponto de falha

Arquivos MariaDB Docker lagre db/binlog.*. Sobrecarrega o disco até o ponto de falha

Como consertar?

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

-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 compõe yml DB PART

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 adição especial ./ em ./db para backup

Responder1

Os logs binários são usados ​​para recuperação de dados, replicação e monitoramento de banco de dados. E você pode limpar os antigos. e citando esta resposta deBD

Você precisa deixar o mysqld fazer isso por você. Aqui está como o mysqld gerencia isso:

O arquivo mysql-bin.[index] mantém uma lista de todos os logs binários que o mysqld gerou e girou automaticamente. Os mecanismos para limpar os binlogs em conjunto com mysql-bin.[index] são:

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

Responder2

OUsando e mantendo o log bináriopágina na base de conhecimento MariaDB contém informações sobre como limpar logs binários.

Para excluir todos os arquivos de log binários no servidor, execute oREINICIAR MESTREcomando. Para excluir todos os logs binários antes de uma determinada data e hora ou até um determinado número, usePURGAR REGISTROS BINÁRIOS.

A página também explica como lidar com a retenção do binlog automaticamente.

Os arquivos de log também podem ser removidos automaticamente com oexpire_logs_daysvariável do sistema. Isso é definido como 0 por padrão (sem remoção), mas pode ser definido como um tempo, em dias, após o qual um arquivo de log binário será removido automaticamente. Os arquivos de log só serão verificados por serem mais antigos que expire_logs_days na rotação do log, portanto, se o seu log binário for preenchido lentamente e não atingirmax_binlog_sizediariamente, você poderá ver arquivos de log mais antigos ainda sendo mantidos. Você também pode forçar a rotação do log e, portanto, exclusões de expiração, executandoLIBERAR LOGOS BINÁRIOSem uma base regular. Sempre defina expire_logs_days acima de qualquer possível atraso de réplica.

No seu caso, a redução max_binlog_sizedeve ajudar as rotações do log binário a acontecerem com mais frequência, o que, por sua vez, reduzirá a quantidade de dados que estão sendo mantidos. Se você adicionar --max_binlog_size=100Mao commandseu arquivo docker-compose.yml, o servidor MariaDB irá liberar os logs binários assim que eles excederem 100 MiB.

Conforme mencionado na documentação, você pode executar manualmente o FLUSH BINARY LOGScomando para forçar a rotação do log binário, o que, por sua vez, acionará a limpeza de arquivos antigos.

informação relacionada