我有一些归档日志文件,我想将它们导入 MySQL 数据库,用于归档和查询功能。
这些日志文件中的每一行都代表一种特定类型的事件。为了说明这一点,这里有一个示例,每一行都是不同的事件类型:
2013-01-15 03:30:08 - Failed login attempt for user 'helloworld' by 1.2.3.4
2013-01-15 03:30:08 - User 'helloworld' successfully logged in from 1.2.3.4
2013-01-15 03:30:08 - User 'helloworld' issued command 'randomcommand'
请注意时间戳,因为这与问题相关。
我最初的想法是为每个事件创建一个表 - failed_logins
、successful_logins
、commands
等。
这种方法的问题是,当多个事件在同一秒内发生时(时间戳只有秒级精度),因为它们位于不同的表中,我无法知道它们发生的实际顺序。
我的下一个想法是使用一个表,主键保留顺序,但这很快就会与所有事件类型失控。(还有更多。)
CREATE TABLE log_lines (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
type INT, // 1 = failed_login, 2 = command, ...
failed_logins_user VARCHAR(32),
failed_logins_ip VARCHAR(15),
commands_user VARCHAR(32),
commands_command VARCHAR(128)
);
我觉得有更好的方法来实现这一点。
总而言之,我的目标是让数据可查询,同时保留每个事件在日志文件中发生的顺序。我该怎么办?