
A contagem de arquivos Binlog do MySQL está aumentando dia a dia e seu tamanho está aumentando em gigabytes. Como posso impedir o aumento do tamanho dos arquivos binlog? Eles estão preenchendo o espaço do disco.
Responder1
Com o MySQL8, eles ativaram o log binário por padrão e a eliminação padrão (expiração/exclusão) dos logs binários é definida como 30 dias.
Quando estiver em seu SSH e no mysql, você pode usar os comandos abaixo
Para mostrar logs binários
mysql> SHOW BINARY LOGS;
Para limpar logs binários manualmente até algum ponto
mysql> PURGE BINARY LOGS TO 'binlog.000142';
Alterar a expiração da eliminação automática padrão de 30 dias (padrão) para 3 dias
mysql> SET GLOBAL binlog_expire_logs_seconds = 259200;
Query OK, 0 rows affected (0.00 sec)
mysql> SET PERSIST binlog_expire_logs_seconds = 259200;
Query OK, 0 rows affected (0.01 sec)
O valor acima está em segundos, ou seja, 3 dias em segundos = (60 segundos x 60 minutos x 24 horas x 3 dias) = 259200
Responder2
Se você não precisa manter esses logs binários, você pode “cortá-los” no MySQL assim:
mysql> PURGE BINARY LOGS BEFORE '2021-01-01 00:00:00';
Claro, você pode alterar a data para quando quiser. Se quiser cortar para um arquivo de log binário específico, você pode fazer assim:
mysql> PURGE BINARY LOGS TO 'mysql-bin.12345';
Certifique-se de especificar o arquivo real para o qual você está cortando.
IMPORTANTE:Não exclua simplesmente os arquivos do sistema de arquivos. O MySQL irá reclamar em algum momento no futuro de uma forma terrível. Evite o tempo de inatividade desnecessário usando PURGE BINARY LOGS
comando de dentro do MySQL.
Responder3
Binlogs são necessários para replicação e certas formas de backup. Parece que você também não está fazendo isso.
Para alterar as configurações, gosto de adicionar um novo arquivo, como (onde "rj" são minhas iniciais):
/etc/mysql/mysql.conf.d/rj.cnf
e colocar substituições, como abaixo. iniciar. Depois de fazer alterações,
sudo systemctl restart mysql
log_bin
controla a criação de binlogs.
Para mantê-los eliminados, adicione binlog_expire_logs_seconds = 86400
(ou algum outro número).
Outra configuração controla o tamanho máximo de cada arquivo binlog; isso não afetará o espaço total em disco usado, exceto que o último arquivo permanecerá até "expirar". Um novo binlog é iniciado após qualquer reinicialização (ou reinicialização do mysql), então você poderá ver muitos arquivos pequenos.
então, meu arquivo rj.cnf pode ter alguns destes:
# Added by Rick James
[mysqld]
log_bin = # turn off
binlog_expire_logs_seconds = 86400 # 1 day
max_binlog_size = 104857600 # 100M
Responder4
Você poderia usar o script disponível em https://github.com/Thibs/monitor_mysql_binary_logging/blob/main/monitor_mysql_binary_logging.sh
para gerenciar o tamanho/número de seus arquivos de log binários