Ubuntu 下 PostgreSQL 版本升级策略
一 升级总览与原则
pg_dumpall)、检查当前版本、评估扩展与应用的兼容性。二 小版本升级策略(同主版本)
sudo -u postgres pg_dumpall > backup.sqlsudo -u postgres psql -c "SELECT version();"sudo apt update && sudo apt upgrade postgresql-<主版本号>(如 postgresql-14)sudo systemctl restart postgresqlsudo -u postgres psql -c "SELECT version();"pg_upgrade;若使用包管理器安装,通常只替换可执行文件与库,数据目录保持不变。三 大版本升级策略(跨主版本)
--check 预检;可用 --link 硬链接减少拷贝与磁盘占用,但要求新旧数据目录在同一文件系统,且启动新集群后旧集群不可再用。pg_dumpall 导出 → 初始化新集群 → 导入;停机时间相对更长,但兼容性最好。sudo apt install postgresql-15sudo systemctl stop postgresqlsudo /usr/lib/postgresql/15/bin/pg_ctl initdb -D /var/lib/postgresql/15/mainsudo -u postgres /usr/lib/postgresql/15/bin/pg_upgrade -b /usr/lib/postgresql/14/bin -B /usr/lib/postgresql/15/bin -d /var/lib/postgresql/14/main -D /var/lib/postgresql/15/main --checksudo -u postgres /usr/lib/postgresql/15/bin/pg_upgrade -b /usr/lib/postgresql/14/bin -B /usr/lib/postgresql/15/bin -d /var/lib/postgresql/14/main -D /var/lib/postgresql/15/mainsudo -u postgres /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stagespostgresql.conf、pg_hba.conf,必要时将新实例端口改为 5433 以便与旧实例并存验证;sudo systemctl start postgresql@15-mainsudo -u postgres psql -p 5433 -c "SELECT version();"apt remove postgresql-14,谨慎操作)。sudo -u postgres pg_dumpall -f backup.sqlsudo systemctl start postgresql@15-mainsudo -u postgres psql -f backup.sql postgres--link 可显著节省时间与空间,但会共享数据文件,启动新集群后旧集群即不可用;务必先做好备份与预检。四 复制与生产实践要点
pg_upgrade 时,建议先在备库完成升级与验证,再对主库执行;升级窗口内控制写入,避免复制中断。pg_hba.conf 与 postgresql.conf 按需从旧实例迁移并调整(如 listen_addresses、port)。