我已经设置 rsyslog 将 syslog 数据转储到 mysql,以便 LogAnalyzer 可以轻松访问并与其交互。
我如何自动执行一项作业来删除 mysql 数据库中一定年限的系统日志数据,以便它不会占满我的硬盘?
答案1
让 cronjob 每天执行一次如下查询:
delete from syslogtable where timestampfield < subdate(curdate(), 31);
这里,syslogtable
是所讨论的表,timestampfield
是包含日志条目日期的 DATE/TIME 字段,将删除超过 31 天的日志条目。请适应您的本地情况(数据库、表和字段名称以及保留日志条目所需的时间)。
答案2
@Sven 所说的正确语法:
mysql -u database-userid -pdatabase-password -e “DELETE FROM SystemEvents WHERE ReceivedAt < date_add(current_date, interval -1 day)” database-name
这个命令会删除一天前的数据。您可以根据自己的喜好与 crontab 一起使用。