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

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

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

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

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

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

Автор Zerox

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

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

  1. после последнего обновления сервера и в частности пакета mysql бинарные логи стали разрастаться, до этого был один файл за 1.5 дня теперь 5-6 за один. понятное дело что можно как предложено в статье уменьшить время хранения логов но хотелось бы разобраться в причинах такого поведения.

    • Аноним

      Объем файлов напрямую зависит от интенсивности использования (изменений) в базе

  2. Андрей

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

  3. Аноним

    Столкнулся с проблемой что не удаляются файлы 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 не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar