)
文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载本篇指南围绕 TIL 仓库中的 PostgreSQL 运维实践讲解如何通过postgresql.conf中的logging_collector选项为 PostgreSQL 服务器开启数据库活动日志涵盖配置文件定位、参数修改、服务器重启与日志查看的完整流程。读完本文你将掌握一套从零启用 PostgreSQL 日志、并以会话级参数细粒度调整日志行为如记录全部 SQL的可落地方法。为什么需要显式开启数据库日志PostgreSQL 默认情况下并不会把数据库活动写入持久化的日志文件。要让服务器产生可供排查的日志必须先确认并开启logging_collector这一核心开关——它是所有日志落盘行为的前提。从仓库中的另一篇相关笔记 include-all-queries-in-the-log-file 也可以看到任何更细粒度的日志参数如log_statement生效的前提都是确保已通过logging_collector开启了日志收集。logging_collector默认处于off状态且它是一个需要重启服务器才能生效change requires restart的服务器级参数因此不能在psql会话中动态修改必须走改配置 → 重启 → 验证的流程。第一步在 psql 会话中定位配置文件配置文件的位置因安装方式而异如 Homebrew、asdf、官方安装包。最稳妥的做法是直接询问 PostgreSQL 本身在psql会话中执行show config_file;即可获得当前实例实际加载的postgresql.conf绝对路径 show config_file; config_file --------------------------------------------------------------------- /Users/jbranchaud/.asdf/installs/postgres/12.3/data/postgresql.conf (1 row)仓库中的 find-the-location-of-postgres-config-files 记录了一个关键细节postgresql.conf所在目录通常还存放着pg_hba.conf等其他配置文件的集合因此定位到该目录后后续所有服务器配置文件的查找都能顺藤摸瓜完成。如果需要更进一步了解数据存放位置可以在同一个 psql 会话中执行show data_directory;查看集群数据目录的绝对路径见 find-the-data-directory该目录与配置文件目录通常是一致的。第二步修改 postgresql.conf 开启 logging_collector用编辑器打开上一步得到的postgresql.conf搜索logging_collector相关行。该行默认被注释掉且值为off需要取消注释并把值改为on# This is used when logging to stderr: logging_collector on # Enable capturing of stderr and csvlog # into log files. Required to be on for # csvlogs. # (change requires restart)结合配置注释可以提炼出以下关键事实作用开启后服务器会把原本输出到stderr的日志消息捕获并写入日志文件csvlog 依赖若后续想使用csvlog格式结构化日志便于导入分析工具该选项必须为on注释中明确标注了Required to be on for csvlogs生效方式属于(change requires restart)类型的参数修改后必须重启服务器才能加载。第三步使用 pg_ctl 重启服务器由于该参数需要重启才能生效可以使用pg_ctl配合-D指定数据目录即上一步中配置文件所在目录完成重启$ ~/.asdf/installs/postgres/12.3/bin/pg_ctl -D ~/.asdf/installs/postgres/12.3/data restart waiting for server to shut down.... done server stopped waiting for server to start... done server started输出中的server stopped与server started分别对应优雅停机和成功启动说明重启流程已完整走通。补充说明pg_ctl的-D数据目录参数在 PostgreSQL 运维中是通用入口。仓库中的 create-a-cluster-in-a-specific-data-directory 展示了如何用initdb -D 目录初始化一个自定义数据目录的集群随后同样通过pg_ctl -D 目录 start启动而 check-if-the-local-server-is-running 则记录了用pg_isready判断服务器是否就绪返回accepting connections即正常、并用pg_ctl ... start启动未运行的服务器的做法可作为重启前后的可用性验证手段。第四步按需调整日志参数并查看日志重启完成后日志收集已经处于开启状态。接下来即可在服务器级或会话级两个维度调整进一步的日志参数服务器级再次编辑postgresql.conf调整相关log_*参数仍需重启或 reload生效会话级在当前psql会话中执行SET语句即时调整不影响其他连接。仓库中的 include-all-queries-in-the-log-file 就是一个典型的会话级应用log_statement的默认级别是none合法取值还包括ddl、mod和all。如果想观察某个数据库收到的全部 SQL可以在当前会话中执行 set log_statement all;由于all级别非常嘈杂作者建议在明确需要看到所有查询的场景下按会话临时开启而非全局常驻。设置完成后即可通过tail跟踪日志文件观察实时写入的查询记录。类似的会话级参数还包括statement_timeout语句执行超时默认0表示不限制详见仓库笔记 limit-execution-time-of-statements可见会话内 SET 即时生效、show 可验证是 PostgreSQL 运维中调整运行时行为的一致模式。小结开启 PostgreSQL 数据库活动日志的完整链路可概括为三步用show config_file;定位postgresql.conf确认logging_collector on它是 stderr 与 csvlog 日志落盘的必要开关默认关闭由于该参数标注为change requires restart用pg_ctl -D 数据目录 restart重启服务器使配置生效结合服务器级与会话级log_*参数如log_statement定制日志粒度并用tail跟踪日志文件验证输出。这套流程同样适用于排查慢查询、审计数据库访问等日常场景仓库中的相关笔记enable-logging-of-database-activity、include-all-queries-in-the-log-file、find-the-location-of-postgres-config-files可以相互对照阅读形成完整的 PostgreSQL 日志运维知识闭环。赞分享文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载相关推荐Laradock PostgreSQL PostGIS 服务完全指南启动、配置、备份与地理空间数据库实战Laradock PostgreSQL PostGIS 服务完全指南启动、配置、备份与地理空间数据库实战 本文以 Laradock 仓库中的 postgr后端开发工具DevOpsPortbase 服务基础设施实战指南极速日志、多阶段模块启动、动态配置与可同步数据库解析Portbase 服务基础设施实战指南极速日志、多阶段模块启动、动态配置与可同步数据库解析 Portbase 是 Portmaster 与 Gate17 两个网络安全使用 pg_isready 检查本地 PostgreSQL 服务器是否运行til 仓库实战指南使用 pg_isready 检查本地 PostgreSQL 服务器是否运行til 仓库实战指南 导读 PostgreSQL 安装包自带一组实用的命令行工具文档教程知识库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考