Ограничение бинарных логов СУБД
Для чего это нужно
Бинарные логи сервера баз данных MySQL или MariaDB могут занимать большую часть свободного дискового пространства с большой скоростью.
Причиной этого может быть большое количество запросов к базам данных, либо проблемы с сервером БД.
Перед выполнением действий, крайне рекомендуется сделать резервную копию всех баз данных или снимок состояния сервера перед выполнением действий ниже.
Для создания резервной копии всех баз данных выполните команду:
mysqldump -u root -p --all-databases > all_databases_dump.sql
Инструкции
Сначала необходимо удалить имеющиеся файлы бинарных логов.
Для этого необходимо подключиться к серверу баз данных и выполнить одну из следующих команд:
- Для удаления бинарных логов, которые были созданы более X дней назад:
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL X DAY) + INTERVAL 0 SECOND;
- Для удаления всех файлов бинарных логов вплоть до файла с именем
binlog.X
, гдеX
- это порядковый номер файла в директории/var/lib/mysql*
или/var/lib/mariadb*
:PURGE BINARY LOGS TO 'binlog.X';
- Для удаления файлов, созданных до определенного времени:
PURGE BINARY LOGS BEFORE 'год-месяц-день час:минута:секунда';
Ограничение логирования
Ограничить размер бинарных логов и частоту их удаления можно с помощью следующих параметров:
binlog_expire_logs_seconds
- время хранения файла лога в секундах;max_binlog_size
- максимальный размер файла лога, по умолчанию в байтах.
Например, чтобы бинарные логи имели максимальный размер в 300 МБайт и хранились 2 суток, необходимо указать следующие значения для этих параметров:
binlog_expire_logs_seconds = 172800
;max_binlog_size = 300М
.
В старых версиях СУБД для указания времени хранения используется параметр expire_logs_days
, значения для которого указывается в днях.
Количество файлов бинарных логов и пространство, занимаемое ими, заранее неизвестно и всегда зависит от интенсивности использования баз данных.
Значения параметров рассчитываются для каждого случая отдельно администратором сервера.
Отключение логирования
Для отключения ведения бинарных логов, добавьте секцию [mysqld]
и параметр skip-log-bin
в конец конфигурационного файла сервера баз данных по пути /etc/my.cnf
(Для Debian и Ubuntu это /etc/mysql/my.cnf
):
[mysqld]
skip-log-bin
Для применения изменений, необходимо перезагрузить службу СУБД:
- Для Debian, Ubuntu, RockyLinux 8 и AlmaLinux 9:
systemctl restart mysql
- Для Almalinux 8:
systemctl restart mysqld
- Для CentOS 7:
systemctl restart mariadb
Чтобы проверить, отключено ли ведение бинарных логов, запустите утилиту mysql и выполните следующий запрос:
SHOW VARIABLES LIKE 'log_bin';
Если журналирование отключено, в выводе команды значение параметра log_bin
будет равно «OFF»:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | OFF |
+---------------+-------+
Также признаком отключенного логирования будет отсутствие новых файлов формата binlog.000001
в директории /var/lib/mysql/
.