СУБД MySQL или MariaDB ведёт специальное логирование всех запросов к базам данных, которое пишется в файлы приведённые на скриншоте ниже.
Как можно заметить их число и размер может отжирать приличное пространство на вашем диске, в моём случае это примерно 20Гб! Это случилось потому, что в MySQL 8 срок действия этого журнала изменений в базе по умолчанию составляет 30 дней.
Эти файлы играют важную роль и необходимы для правильной работы репликации данных или восстановления информации.
Если у вас не настроено никакой репликации ии никакое сторонне приложение не читает эти логи, не отслеживает их, то в принципе не вижу смысла отдавать дисковое пространство для этих файлов.
В моём случае моя СУБД используется просто для хранения данных разных сайтов — то есть ничего хитрого, поэтому я и задался вопросом удаления этих файлов.
Очистка логов самостоятельно (ручной вариант)
Первым делом нам нужно зайти в оболочку нашей СУБД, например, сделать это можно так:
mysql -u root -p
Если вы всё сделали правило, то непременно должны увидеть в консоли следующее:
Теперь введите в консоли следующую команду для просмотра бинарных логов:
SHOW BINARY LOGS;
Также можно воспользоваться командой-синонимом SHOW MASTER LOGS
.
Я отключил ведение логов, поэтому в моём случае вывод такой:
Вероятно, что в вашем случае будет отображаться тот самый список файлов из /var/lib/mysql
Пример вывода:
mysql> SHOW BINARY LOGS;
+---------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000015 | 724935 | Yes |
| binlog.000016 | 733481 | Yes |
+---------------+-----------+-----------+
Как очистить двоичные файлы до определённого?
Обратите внимание на их нумерацию, для того чтобы удалить файлы до определённого можно воспользоваться командой:
PURGE BINARY LOGS TO 'binlog.000015';
Изменить срок автоматической очистки с 30 дней (по умолчанию) на 3 дня.
Изменения можно внести через консоль. Мы будем менять binlog_expire_logs_seconds
— отвечает за установку срока действия двоичного журнала в секундах. По истечении срока файлы логов будут автоматически удалены.
Срок действия двоичного журнала по умолчанию составляет 2592000 секунд = 30 дней. Соответственно, мы можем это изменить:
SET GLOBAL binlog_expire_logs_seconds = (60*60*24*3);
SET PERSIST binlog_expire_logs_seconds = (60*60*24*3);
Как проверить изменения?
Сделайте в консоли запрос:
SHOW VARIABLES LIKE '%expire_logs%';
Вы должны увидеть значение системной переменной binlog_expire_logs_seconds.
mysql> SHOW VARIABLES LIKE '%expire_logs%';
+-------------------------------+--------+
| Variable_name | Value |
+-------------------------------+--------+
| binlog_expire_logs_auto_purge | ON |
| binlog_expire_logs_seconds | 259200 |
| expire_logs_days | 0 |
+-------------------------------+--------+
3 rows in set (0.01 sec)
Можно установить новое значение сразу в секундах (выше мы делали это путём умножения сек*мин*часы*дни),а могли бы указать сразу числом.
Как совсем отключить логирование (binlog)?
Откройте в редакторе файл /etc/mysql/my.cnf
sudo nano /etc/mysql/my.cnf
и добавьте пару строчек:
[mysqld]
skip-log-bin
Чтобы изменения вступили в силу перезапустите MySQL сервер:
sudo service mysql restart
так же через этот файл можно ограничить размер файлов логов и задать автоматическую очистку (ограничение)
[mysqld]
binlog_expire_logs_seconds = 86400 # 1 day
max_binlog_size = 104857600 # 100M
P.S. не забывайте перезагружать сервер вашей СУБД
systemctl restart mysql или systemctl restart mariadb