por que os logs bin do mysql não estão expirando mesmo que a expiração tenha sido definida

por que os logs bin do mysql não estão expirando mesmo que a expiração tenha sido definida

Estou usando o MySQL Community Server 5.7.37-log. meu mysqld.cnf está abaixo:

server_id = 11
log_bin = bin.log
log-bin-index = bin-log.index
binlog_format = row
max_binlog_size = 100M
socket = mysql.sock
expire_logs_days = 1

quando verifico meus registros, eles continuam crescendo, embora eu mencione que expirarão em 1 dia. usando expire_logs_days.

Com esta configuração acima, posso esperar que os logs sejam removidos automaticamente ou devo fazer isso manualmente novamente? Vejo alguns formulários dizendo PURGE BINARY LOGS BEFORE NOW() - INTERVAL 1 DAY; Mas não entendo o sentido de executar manualmente a instrução acima quando já definimos a configuração.

Por favor, ajude-me a entender o mecanismo de expiração dos logs bin. Como usei a expiração após 1 dia, o tamanho do bin.00001 e bin.0002 etc. será reduzido todos os dias? ou como posso identificar se os logs estão realmente expirando?

anexando captura de tela dos meus logs de bin gerados.

insira a descrição da imagem aqui

Responder1

Não há cronômetro que execute e exclua logs após um dia. A exclusão do log é acionada por eventos de liberação de log. Então é aí que um novo binlog é gerado. Se demorar muito em nosso banco de dados e os logs não forem liberados diariamente, você poderá definir max-binlog-size para um valor mais baixo. Outra boa opção seria sempre liberar os logs como parte de sua estratégia de backup.

informação relacionada