南大通用GBase 8a集群审计日志(audit log)和常规日志(general log)的区别

GBase 8a集群审计日志(audit log)和常规日志(general log)的区别

先说最主要区别:

记录时间不同

audit_log是sql执行完成后,记录的。 而general_log是集群一拿到SQL就开始记录的。

如果sql执行过程中,被强行kill掉(比如kill -9 进程),或者宕机等, audit_log是无法记录这个日志的。

如果SQL语法错误,general_log是不记录的,因为数据库根本没执行,而audit_log是记录的。

用途不同

audit_log虽然记录了所有发过来的命令,所以从表面看确实符合【审计】的用途。但从其功能看,更倾向于排查数据库性能,因为其记录了数据执行耗时等信息。一般都用于后续的调优等操作。更像是慢日志的功能。

而且,审计日志通过审计策略,可以只记录感兴趣的操作,包括执行时间,用户,SQL类型等等。

general_log是更多的用于记录接收到的命令。从某个角度看,这个更像审计日志,虽然他只记录【合法】的SQL。其实非法的,无法执行的SQL,比如语法错误的,不会对数据库有任何影响,记录了也没啥意思。

如果用于上报审计,建议只使用File格式的general_log。