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

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

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

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

Разбираться громко сказано. Я и раньше знал, что это бинарные логи базы. Для одной из баз на сервере была настроена репликация, для этого указан бинарный лог для конкретной базы. База маленькая, логи росли очень медленно. Проблема появилась только через 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 репликации, чтобы оперативно решать проблемы, которые возникают во время работы репликации. А они возникают и не так уж и редко.

Онлайн курс Infrastructure as a code

Если у вас есть желание научиться автоматизировать свою работу, избавить себя и команду от рутины, рекомендую пройти онлайн курс Infrastructure as a code. в OTUS. Обучение длится 4 месяца. Что даст вам этот курс:
  • Познакомитесь с Terraform.
  • Изучите систему управления конфигурацией Ansible.
  • Познакомитесь с другими системами управления конфигурацией - Chef, Puppet, SaltStack.
  • Узнаете, чем отличается изменяемая инфраструктура от неизменяемой, а также научитесь выбирать и управлять ей.
  • В заключительном модуле изучите инструменты CI/CD: это GitLab и Jenkins
Смотрите подробнее программу по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

2 комментария

  1. Андрей

    У меня при записи "expire_logs_days" выдавалась ошибка конфигурации при попытке перезапустить mysql. Сработала "binlog_expire_logs_seconds"

  2. Аноним

    Столкнулся с проблемой что не удаляются файлы binlog. Я уже делал настройку expire_logs_days на разных серверах и все было отлично – mysql чистил старые лог файлы, но она одном сервере это не работает. Никаких ошибок нигде нет, но старые binlog не удаляются хоть убейся. Конфиг /etc/mysql/mysql.cnf точно правильный, рестарт mysql разумеется делал – результата нет. Из консоли mysql команда ручной чистки работает PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 90 DAY) + INTERVAL 0 SECOND; Куда копать, ума не приложу(

Добавить комментарий

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.