Большой размер директории с логами MySQL

Недавно я заметил, что свободное место на диске веб-сервера стало стремительно уменьшаться. Первым делом я проверил логи и вот что увидел:

# du -sh /var/log/* | sort -h | tail -n 5

13M /var/log/mail.log
21M /var/log/syslog
27M /var/log/icecast2
128M /var/log/nginx
10G /var/log/mysql

В папке /var/log/mysql оказалось множество log-файлов

# du -sh /var/log/mysql/* | sort -h
0 ./mysql-bin.000001
0 ./mysql-bin.log
4.0K ./mysql-bin.index
12K ./mysql-bin.000003
36K ./mysql-bin.000002
...
...
...
101M ./mysql-bin.000108
101M ./mysql-bin.000109
118M ./error.log

Все потому что у меня используется репликация Master-Slave для Mysql.

Как же безопасно исправить эту ситуацию? Заходим в консоль MysQL

# mysql -uroot -p

Вводим пароль

Enter password:

Теперь смотрим список bin-логов

mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000002 | 35754 |
| mysql-bin.000003 | 11966 |
...
...
...
| mysql-bin.000109 | 104860218 |
| mysql-bin.000110 | 97713113 |
+------------------+-----------+
109 rows in set (0.02 sec)

Нас интересует имя последнего файла mysql-bin.000110
Теперь вводим команду удаления логов

mysql> PURGE BINARY LOGS TO 'mysql-bin.000110';
Query OK, 0 rows affected (0.16 sec)

Проверяем

mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000110 | 97719619 |
+------------------+-----------+
1 row in set (0.00 sec)

В директории логов теперь тоже все в порядке

# du -sh /var/log/* | sort -h | tail -n 5
13M /var/log/mail.log
21M /var/log/syslog
27M /var/log/icecast2
128M /var/log/nginx
212M /var/log/mysql

UPD

А вот как одной командой в bash почистить эти же логи mysql

$ mysql -umyuser -pmypass -e "PURGE BINARY LOGS TO '$(mysql -umyuser -pmypass -e 'SHOW BINARY LOGS;' | tail -n1 | awk '{print $1}')';"

Где myuser – пользователь mysql с правами SHOW и PURGE, а mypass – его пароль. Таким образом можно поставить задание в cron, чтобы забыть об этом.


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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2023

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!