我正在向Percona发送syslog-ng。我有不同的日志源过滤到不同的MySQL表。我正在尝试确定每秒,分钟和小时的日志数量。
这就是表格的创建方式:
CREATE TABLE syslog.switchlogs (
host varchar(40) DEFAULT NULL,
facility varchar(10) DEFAULT NULL,
level varchar(10) DEFAULT NULL,
tag varchar(10) DEFAULT NULL,
program varchar(50) DEFAULT NULL,
msg text,
seq bigint(20) unsigned NOT NULL AUTO_INCREMENT,
timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (seq),
KEY host (host),
KEY timestamp (timestamp),
KEY host_timestamp (host,timestamp)
) ENGINE=InnoDB;
大多数表都得到了我期待的结果:
上一小时:
SELECT count(seq) as thecount FROM syslog.switchlogs WHERE timestamp>=DATE_SUB(NOW(),INTERVAL 1 HOUR);
最后一刻:
SELECT count(seq) as thecount FROM syslog.switchlogs WHERE timestamp>=DATE_SUB(NOW(),INTERVAL 1 MINUTE);
最后一秒:
SELECT count(seq) as thecount FROM syslog.switchlogs WHERE timestamp>=DATE_SUB(NOW(),INTERVAL 1 SECOND);
我得到的结果如下:
小时:804
分钟:16
第二:1
我的一张桌子有VMware日志,我从计数中得到奇怪的结果......
小时:30,180
分钟:24,278
第二:24,160左
这显然是错的。如果我查看表格中的最后50个日志,那么最后一秒中只有10个,最后一分钟中有39个。为什么上面的SQL没有按预期工作?