PostgreSQL 大版本升级工具
pg_upgrade 在停机窗口内把旧版本数据目录升级到新版本,避免逻辑导出导入。它只支持大版本升级,且新旧集群的架构、locale 等必须兼容。
pg_upgrade \
--old-bindir=/usr/lib/postgresql/15/bin \
--new-bindir=/usr/lib/postgresql/16/bin \
--old-datadir=/var/lib/pgsql/15/data \
--new-datadir=/var/lib/pgsql/16/data \
--check
pg_upgrade --old-bindir=... --new-bindir=... \
--old-datadir=... --new-datadir=... --link --jobs=4
# 升级后更新统计信息
vacuumdb --all --analyze-in-stages
--check,它会检查扩展、路径、权限和版本兼容性。--link 通过硬链接复用文件,速度快但不可回退;需要保留旧集群时用 --copy。--check 会报缺失。ANALYZE。pg_dump / pg_restore — 逻辑迁移pg_ctl — 启停集群vacuumdb — 更新统计信息