Удаление устаревших бинарных логов MySQL
- Подробности
- Просмотров: 8771
Тем, кто хоть раз имел дело с репликацией данных с одного MySQL сервера на другой по любом известно понятие бинарныз логов. Именно они передаются на SLAVE сервера для синхронизации данных. Но нужны они не только для этого. Они очень помогают при сбое сервера и внезапной его перезагрузке, тогда по бинарных логах MySQL может восстановить те данные, которые не успели попасть в харнилище. Не странно, что они включены по умолчанию везде, абсолютно везде. Но зачастую функция их автоматического удаления не настроена вообще. В результате при интенсивном юзании MySQL сервера вы можете столкунться с проблемой нехватки места на диске.
Логично, что очень древнющуе логи смыла хранить нет, так как по статистике они уже давно занесены в хранилище и переданы на SLAVE сервера для репликции. Поэтому есть смысл сказать MySQL серверу, что старые логи всё-таки надо пилить. З это отвечает конфигурационный параметр expire_logs_days в серкции [mysqld] конфигурационного файла my.cnf.
expire_logs_days = 14
Теперь после перезапуска MySQL сервер уже будет знать какой древности логи уже стоить удалять (в приведённом примере период древности составляет 14 дней). Чтобы не ожидать когда он перезапустится можно просто подать запрос к серверу послредством phpMyAdmin или консольной программы mysql.
SET GLOBAL expire_logs_days=14;
На данные настройки MySQL может отреагировать не сразу. Поэтому если Вы куда-то спешите, можно произвести ручную зачистку логов до определённого времени используя такой запрос:
PURGE BINARY LOGS BEFORE '2013-01-13 00:00:00';
В запросе указывается дата-врема (в формате datetime) до которого логи нужно выпилить. Если логов накопилось много, то и места можно освободить много (я себе освободил около 3 ГБ, что для раздела в 10 ГБ весьма существенно).
В завершение скажу, что не стоит увлекаться этим на production сервере, а то мало-ли. И вообще нужно ежедневно бэкапы делать :).