Ограничение бинарных логов СУБД
Для чего это нужно
Бинарные логи сервера баз данных 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/
.