Серверы баз данных

/
/
Ограничение бинарных логов СУБД

Ограничение бинарных логов СУБД

Бинарные логи сервера баз данных MySQL или MariaDB могут занимать большую часть свободного дискового пространства с большой скоростью.

Причиной этого может быть большое количество запросов к базам данных, либо проблемы с сервером БД.

Перед выполнением действий, крайне рекомендуется сделать резервную копию всех баз данных или снимок состояния сервера перед выполнением действий ниже.

Для создания резервной копии всех баз данных выполните команду:

mysqldump -u root -p --all-databases > all_databases_dump.sql

Инструкции

Сначала необходимо удалить имеющиеся файлы бинарных логов.

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

  1. Для удаления бинарных логов, которые были созданы более Xдней назад: PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL X DAY) + INTERVAL 0 SECOND;  
  2. Для удаления всех файлов бинарных логов вплоть до файла с именем binlog.X, где X- это порядковый номер файла в директории /var/lib/mysql*или /var/lib/mariadb*: PURGE BINARY LOGS TO 'binlog.X';  
  3. Для удаления файлов, созданных до определенного времени: 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/.