在kingbaseV8数据库中,搭建repmgr主备环境后,主备都开启审计sysaudit.enable以及sysaudit.userevent 开关。
使用repmgr默认的esrep数据库和超级用户esrep建立连接,没有看到审计信息。其他组合的登录退出都可以看到审计信息,仅esrep库+esrep用户无审计信息,具体是为什么呢?
============================================================================================
最新发现:
不搭建主备环境,单实例手动创建esrep库和esrep用户,开启审计功能sysaudit.enable及sysaudit.userevent 用户登录登出审计开关。
使用esrep库+esrep用户登录登出,也未产生审计信息。
其他组合(如esrep库+system用户或security库+esrep用户)会正常审计。
在Kingbase V8数据库中,ESREP是一个管理主备复制的应用程序。虽然ESREP在主备同步中起着重要的作用,但是作为应用程序,它并不会执行数据库层面的操作,因此不会产生一些数据库的审计信息。
审计信息是通过事件监视器进行获取的,而ESREP连接数据库时并不是通过数据库用户连接的。ESREP使用的是数据库配置文件中的连接信息,因此不会生成审核日志,也就是为什么无法看到审计信息的原因。如果您想要监控主备同步的操作,建议使用 Kingbase V8 数据库的相关工具或进行自定义编程来完成审计操作。
这个问题可能需要进行更加详细的调查才能确定具体的原因。不过,从一般的经验来看,这可能有以下几种情况:
esrep用户没有足够的权限来触发审计事件:在KingbaseV8数据库中,审计事件是由特定的用户或角色触发的。如果esrep用户没有足够的权限来执行某些操作,那么这些操作就不会被审计。您可以检查一下esrep用户的权限和角色,确保他们具有足够的权限来触发审计事件。
esrep数据库没有正确设置审计参数:KingbaseV8数据库中的审计功能是通过系统参数进行配置的。如果esrep数据库没有正确设置审计参数,那么它就无法记录审计事件。您可以检查一下esrep数据库的审计参数,确保它们被正确设置。
审计日志被删除或清空:如果审计日志被删除或清空,那么您就无法查看之前的审计事件。您可以检查一下审计日志的存储位置和相关设置,确保审计日志没有被删除或清空。
esrep用户连接到的是非主库:如果esrep用户连接到的是备库,那么它执行的操作就不会被记录到审计日志中。您可以检查一下esrep用户连接的数据库实例,确保它连接的是主库而不是备库。
总之,在排查这个问题时,可以结合KingbaseV8数据库的相关文档,仔细检查每一个可能影响审计事件记录的因素,找到具体的原因,并采取相应的措施来解决问题。