Я настроил rsyslog для сброса данных системного журнала в mysql, чтобы LogAnalyzer мог легко получить к нему доступ и взаимодействовать с ним.
Как мне автоматизировать работу по удалению данных системного журнала определенного возраста для базы данных mysql, чтобы они не заполняли мой жесткий диск?
Пусть cronjob выполняет следующий запрос один раз в день:
delete from syslogtable where timestampfield < subdate(curdate(), 31);
Вот, syslogtable
это таблица, о которой идет речь, timestampfield
- это поле ДАТА / ВРЕМЯ, содержащее дату записи в журнале, и будут удалены записи журнала старше 31 дня. Адаптируйтесь к вашей местной ситуации (имена базы данных, таблиц и полей и желаемое время для хранения записей журнала).
Правильный синтаксис того, что сказал @Sven:
mysql -u database-userid -pdatabase-password -e “DELETE FROM SystemEvents WHERE ReceivedAt < date_add(current_date, interval -1 day)” database-name
Это удалит данные старше одного дня. Используйте crontab по своему вкусу.