Автоматическое удаление бинарных логов MySQL

В процессе Master-Slave репликации баз MySQL между серверами используются бинарные логи sql транзакций. При большом числе транзакций в базе ее размер и число лог файлов увеличиваются, тем самым съедая дисковое пространство. Бинарные лог-файлы MySQL не подлежат ротации через logrotate, и возможна ситуация когда свободное дисковое пространство сервера будет исчерпано. Это, в свою очередь, может привести к повреждению баз данных.

В качестве решения проблемы предлагается установить параметр expire_logs_days в файле конфигурации сервера my.conf. По умолчанию данный параметр установлен в значение 0, что отключает автоматическое удаление старых логов. Пример:

[mysqld]
…
expire_logs_days  = 14
…

В данном случае, чистка будет производиться для логов старше 14 дней.

Ручная чистка логов может производиться с помощью команды PURGE BINARY LOGS Синтаксис команды подробно описан на сайте.

К примеру, если требуется более частая чистка логов, можно воспользоваться данной командой, добавив ее в крон:

sh> mysql -u root -p -e "PURGE BINARY LOGS BEFORE '`date -d 
"5 hours ago" +"%F %H:%M:%S"`';" 

- где, для указания даты и времени используется команда date с собственными параметрами. В данном случае будут удалены логи старше 5 часов.

Не стоит забывать, что бинарные логи Mysql используются для восстановления репликации между серверами, и чем чаще производится удаление логов, тем меньше времени на восстановление репликации.


Контакты
Найти