标签

PostgreSQL

把 PostgreSQL 日志串起来:用 log_line_prefix 和 log_timezone 找回上下文

来源: postgr.es 42
一条 PostgreSQL 日志通常由两部分组成:数据库决定的消息,以及消息前面那段由你设计的上下文。真正影响排障效率的,往往不是错误文本本身,而是你能不能把这条日志准确连接到某个会话、事务、客户端请求,以及其他系统在同一时刻产生的日志。 是这条连接的关键。 则决定日志时间戳使用哪个时区。两者配置得当,数据库日志才能和应用、代理、主机及集中式日志系统可...

把 Lua 接进 psql:用异步脚本改造 VACUUM 输出与进度监控

来源: postgr.es 36
将 Lua 集成到 客户端之后,数据库运维命令就不必局限于一条 SQL 或一段 shell 管道。Lua 可以调用 的连接、查询和异步执行接口,把多个 SQL 操作组合成一个更适合人工使用的命令。 这个示例围绕 展开:普通模式逐表执行清理,verbose 模式显示当前表名,并定期读取 ,把清理阶段和块处理进度打印到同一行。它展示的重点不是重新实现 ,而...

把 PostgreSQL 日志轮转参数放在一起看:log_rotation_age、log_rotation_size 与 log_truncate_on_rotation

来源: postgr.es 52
PostgreSQL 的日志轮转并不是由一个参数独立决定的。 控制按时间轮转, 控制按文件大小轮转,而 决定重新使用同名日志文件时是追加内容还是先截断文件。单独修改其中一个参数,很容易得到与预期不同的日志目录。 指定单个日志文件最多持续使用的时间。时间到达后,PostgreSQL 会尝试创建新的日志文件。将它设置为 可以关闭按时间轮转。 例如: 需要注...

生产环境 PostgreSQL 安全补丁到底要多快打上?用补丁延迟管理风险

来源: postgr.es 32
2026 年 8 月 13 日,PostgreSQL 一次性修复了 28 个 CVE,创下项目历史纪录。这个数字容易引发错误的判断:是不是 PostgreSQL 变得更不安全了?更值得关注的问题其实是,安全修复从“发布”到“真正运行在生产服务器上”,中间花了多长时间。 这段时间可以称为 补丁延迟(patch latency)。对于运行关键业务的 Pos...

从“Postgres 很糟”到 PostgreSQL 深处:一名 DBA 的二十年进化路径

来源: postgr.es 33
一个数据库人的技术路线,往往不是从“我喜欢这项技术”开始,而是从一次故障、一次磁盘告急,或一场无法解释的生产事故开始。Shaun Thomas 与 PostgreSQL 的关系就是如此:早期因为膨胀、清理和升级问题而嫌弃它,后来却在真实生产环境中不断修复、自动化和扩展,最终成为 PostgreSQL 社区的长期贡献者。 这段经历最有价值的地方,不是某个...

把 PostgreSQL 日志文件配置理顺:log_directory、log_filename 与 log_file_mode

来源: postgr.es 33
PostgreSQL 的 、 和 经常被当成三个独立的配置项,但它们其实共同描述了日志采集器写入文件时的三个问题:日志放在哪里、文件叫什么,以及哪些用户可以读取。还有一个容易被忽略的前提: 没有开启时,这三个参数都不会产生实际效果。 默认值在个人电脑上通常足够省心,但放到服务器上就未必合适。问题不只是“日志能不能写出来”,还涉及轮转、采集器发现路径、文...

pg_dump 的数据恢复为何会“自己弄坏自己”

来源: postgr.es 38
把 PostgreSQL 的 data-only dump 恢复到一个刚创建、完全空白的同结构数据库,看起来应该是最安全的场景:没有旧数据,不会发生主键冲突,外键也有机会按依赖顺序加载。然而,恢复仍可能在某张表的 中途失败。 一个容易被忽略的原因是: 会在数据真正开始加载前,把当前会话的 固定为空字符串。只要触发器函数内部使用了未限定的表名,触发器就可...

托管 PostgreSQL 还是自建:把数据库运维成本算清楚

来源: azure.microsoft.com 27
选择 PostgreSQL 的部署方式,通常不是“云服务更省事”或“自建更可控”这么简单。托管 PostgreSQL 与自建 PostgreSQL 的差别,会持续反映在成本结构、安全责任、故障恢复速度、扩缩容路径,以及团队真正投入在数据库运维上的时间里。 关键不在于哪一种方案绝对更好,而在于业务是否需要把数据库基础设施作为一项核心能力来经营。 托管 P...

别再盲设 70:用真实行大小计算 PostgreSQL 表的 Fillfactor

来源: postgr.es 33
PostgreSQL 的 是一个很小、却经常被忽略的设置。它决定数据首次写入时,每个表页要填多满,并为后续更新预留多少空间。对频繁更新的表来说,合适的预留空间可能提高 HOT update 的机会,减少索引改写、WAL 和 I/O;但把所有表统一设成 70 或 80,同样是一种猜测。 更稳妥的做法是:先用真实数据估算平均行大小,再结合更新频率和监控结果...

把 PostgreSQL 日志配置理顺:理解 log_destination 与 logging_collector

来源: postgr.es 29
PostgreSQL 的日志配置看起来只是几个 GUC 参数,实际却关系到日志是否丢失、不同进程的输出是否互相打乱,以及配置什么时候真正生效。 决定日志要写到哪里, 则负责启动一个基于管道的日志收集进程,把服务器进程产生的消息集中处理。 其中一个容易被忽略的操作边界是:打开 需要重启 PostgreSQL,而不是简单执行一次 reload。生产环境如果...