В один прекрасный момент мониторинг 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 репликации, чтобы оперативно решать проблемы, которые возникают во время работы репликации. А они возникают и не так уж и редко.
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом "Administrator Linux. Professional" в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Столкнулся с проблемой что не удаляются файлы binlog. Я уже делал настройку expire_logs_days на разных серверах и все было отлично – mysql чистил старые лог файлы, но она одном сервере это не работает. Никаких ошибок нигде нет, но старые binlog не удаляются хоть убейся. Конфиг /etc/mysql/mysql.cnf точно правильный, рестарт mysql разумеется делал – результата нет. Из консоли mysql команда ручной чистки работает PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 90 DAY) + INTERVAL 0 SECOND; Куда копать, ума не приложу(