添加pgaudit至shared_preload_libraries后PostgreSQL数据库无法启动求助
PostgreSQL重启后pgaudit加载失败问题排查
问题现象
安装pgaudit并将其添加至postgresql.conf配置文件后,重启PostgreSQL触发如下致命错误:
2024-01-22 10:00:21.293 PST [3212773] FATAL: 58P01: could not access file "pgaudit": No such file or directory
2024-01-22 10:00:21.293 PST [3212773] LOCATION: internal_load_library, dfmgr.c:210
环境信息
- pgaudit安装状态:
yum list pgaudit Last metadata expiration check: 0:29:17 ago on Mon 22 Jan 2024 09:50:21 AM PST. Installed Packages pgaudit.x86_64 1.7.0-1.module+el8.9.0+90110+d8a562d5 rpm -qa | grep pgaudit pgaudit-1.7.0-1.module+el8.9.0+90110+d8a562d5.x86_64 - 操作系统:Oracle Linux Server 8.6
- 内核:Linux 5.4.17-2136.310.7.el8uek.x86_64
- 架构:x86-64
- PostgreSQL版本:psql (15.3)
排查方向与解决步骤
1. 版本兼容性验证
pgaudit 1.7.0官方仅支持PostgreSQL 10~14版本,而你使用的是PG15.3,版本不匹配会导致库文件无法被识别。需安装适配PG15的pgaudit版本(1.8.0及以上)。
2. 检查插件文件路径
- 执行
pg_config --pkglibdir获取PostgreSQL的插件目录(通常为/usr/pgsql-15/lib) - 查看该目录下是否存在
pgaudit.so文件:ls -l $(pg_config --pkglibdir)/pgaudit.so - 若文件不存在,说明安装的pgaudit包未将库文件部署到PG15的插件目录,需重新安装对应版本的pgaudit包。
3. 确认配置正确性
- 检查
postgresql.conf中shared_preload_libraries配置是否正确添加了pgaudit(注意无.so后缀) - 重启前可执行
postgres -C shared_preload_libraries验证配置是否生效。
4. 权限检查
- 确认PostgreSQL运行用户(通常为
postgres)对pgaudit.so文件拥有读取权限 - 若权限不足,执行
chmod 755 $(pg_config --pkglibdir)/pgaudit.so调整权限。
内容的提问来源于stack exchange,提问作者Dave B
相关产品推荐
相关产品推荐

