PostgreSQL 14 的最后一个版本定在 11 月 12 日,之后不再有任何修复,包括安全漏洞。同月 19 日 PostgreSQL 19 正式发布。手上还有 14 的团队,这两周是最后的窗口。
一个真实的迁移实验
有人拿自己项目的真实 schema 做了对照:11 个库、129 个迁移脚本、58 张表、触发器、函数、72 条 RLS 策略,分别恢复到 18 和 19 RC1。
结果很有代表性:数据完整过来了,但角色没带过来,应用的权限全部消失,而 psql 依然报告成功。另外,当源库把 standard_conforming_strings 设为 off 时,19 上出现了一张空表。
三条经验
第一,dump 要带角色与权限。pg_dump 默认不导全局对象,角色、表空间这些要单独处理,权限丢了不会报错,只会在应用连上来时炸。
第二,验证要看三样:数据行数、权限、报错。只看 psql 返回 0 是被骗过的第一步。
第三,用目标版本的 pg_dump 导,别用 14 的 pg_dump 往 19 恢复。
标准动作
先在一套隔离环境里恢复一遍,跑应用的冒烟测试,再比对关键表的行数与校验和。生产切换前,把回滚路径写清楚:跨大版本不能靠物理备份回退,只能靠逻辑备份加旧实例保留。
顺带提醒
跨大版本升级必须用 pg_upgrade 或逻辑复制或 dump 恢复,物理备份恢复回来还是 14。这一条每年都有人踩。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。