Что делать если логи binlog в MySQL стали весить слишком много

15 сентября, 2022
1 минута чтения

В один момент заметил, что сервер перестал отвечать на мои попытки зайти на него. В консоли красовалось недостаточно места на диске.

В первую очередь следует найти директорию где места меньше всего. Зайдите на сервер по SSH и выполните команду, показывающую на каком диске меньше всего места:

df -h

Скорее всего диск будет именоваться как-то так /dev/sda1

Зайдите на диск, узнайте какие директории самые нагруженные командой du, перечисляя директории, в которых вы сомневаетесь:

du -chs /var /home /usr

Если вы уже в директории, то можете воспользоваться следующей командой:

du -hs .

В моем случае директория /var/lib/mysql весила крайне много. Я зашел в нее командой:

cd /var/lib/mysql

Чтобы понять какие конкретно файлы много весят, можно воспользоваться командой:

ls -lh

Я увидел, что имеется огромное количество файлов логов MySQL. Чтобы их очистить следует ввести:

rm binlog.*

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

# Зайдите в mysql
mysql
# Выполните команду
show variables like 'binlog_expire_logs_seconds';
# Чтобы добавить время жизни логов, используйте следующую команд:
set global binlog_expire_logs_seconds=2592000;
# После чего выйдите из mysql
exit

Бывает так же, что время логов будет закоментировано в самом конфиге, тогда нужно зайти в этот конфиг и поправить вручную:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Зайти в секцию [mysqld]:

binlog_expire_logs_seconds      = 2592000
max_binlog_size   = 200M

Или в этом же файле можно отключить binlog вовсе:

disable_log_bin 

Если вы все сделали, то не забудьте перезагрузить движок MySQL:

systemctl restart mysql

Денис Сергеевич Басковский

Философ, изобретатель и поэт.

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

Retool
Предыдущая статья

Никаких своих админок, встречайте Retool

sptag
Следующая статья

Библиотеки для векторного поиска текста

Exit mobile version