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

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

Для чего это нужно

Бинарные логи сервера баз данных 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" (значение в секундах) или параметр "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