Решение проблемы

Файл mysql-bin огромного размера. Как почистить, отключить или удалить бинарные логи


В один прекрасный момент мониторинг zabbix прислал оповещение о том, что на одном из серверов заканчивается место на диске. Просмотр занятого места быстро выявил виновника события — бинарные логи mysql-bin.00000, mysql-bin.00001 и так далее в папке /var/lib/mysql. Стал разбираться, что это за файлы и зачем они нужны.

Разбираться громко сказано. Я и раньше знал, что это бинарные логи базы. Для одной из баз на сервере была настроена репликация, для этого указан бинарный лог для конкретной базы. База маленькая, логи росли очень медленно. Проблема появилась только через 1.5 года. Я не стал сильно заморачиваться с этой темой, а просто решил ограничить максимальный размер файла бинарного лога (500мб) и время его хранения (3 дня). Для этого добавляем в файл конфигурации mysql /etc/my.cnf следующие параметры:

max_binlog_size= 500M

expire_logs_days = 3

Добавляются в секцию [mysqld]. После этого mysql, или в моем случае mariadb надо перезапустить:

# systemctl restart mariadb

После перезапуска база сама почистит лог и уменьшит размер файлов mysql-bin, лишние при этом будут просто удалены. Если у вас нет репликации, то создание бинарных логов можно отключить, удалив все параметры, которые за них отвечают. У меня, к примеру, это:

log-bin = /var/lib/mysql/mysql-bin

binlog-do-db = database

После этого перезапускаем базу. При ограничении размера и времени хранения бинарного лога, рекомендую настроить мониторинг mysql репликации, чтобы оперативно решать проблемы, которые возникают во время работы репликации. А они возникают и не так уж и редко.


СМОТРИ ТАКЖЕ