Ubuntu 上升级 PostgreSQL 的完整流程
一 升级前准备
sudo -u postgres pg_dumpall > /path/to/backup.sql。sudo -u postgres psql -c "SELECT version();"。二 小版本升级 同主版本内(如 14.5 → 14.7)
sudo systemctl stop postgresql。sudo apt update && sudo apt upgrade postgresql-14(明确指定当前主版本)。sudo systemctl start postgresql。sudo -u postgres psql -c "SELECT version();"。三 大版本升级 跨主版本(如 14.x → 15.x)
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.listwget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -sudo apt updatesudo apt install postgresql-15。sudo systemctl stop postgresql(或 sudo systemctl stop postgresql@14-main)。sudo -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/main -o '-c config_file=/etc/postgresql/14/main/postgresql.conf' -O '-c config_file=/etc/postgresql/15/main/postgresql.conf'sudo -u postgres /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stagessudo -u postgres pg_dumpall -f /path/to/backup.sqlsudo -u postgres /usr/lib/postgresql/15/bin/initdb -D /var/lib/postgresql/15/mainsudo systemctl start postgresql@15-mainsudo -u postgres psql -f /path/to/backup.sql postgressudo cp /etc/postgresql/14/main/*.conf /etc/postgresql/15/main/(注意参数差异与新增项)。port = 5433,以及 listen_addresses = '*'(变更需重启)。local/host 的认证方式(如 md5 或 scram-sha-256)。sudo -u postgres psql -c "SELECT version();",检查应用连接、复制、扩展是否正常。sudo pg_dropcluster 14 main --stop。四 常见问题与排错
pg_dump(如安装对应版本的 postgresql-client 包)。port 并重启;应用需同步更新连接端口。listen_addresses 与防火墙放行。vacuumdb --all --analyze-in-stages 重建统计信息,必要时检查索引与扩展版本。五 建议的升级顺序清单
pg_dumpall)→ 2) 检查版本与兼容性 → 3) 安装新版本二进制 → 4) 选择升级方式(pg_upgrade 或逻辑转储)→ 5) 校验与统计信息更新 → 6) 调整配置与端口 → 7) 应用回归验证 → 8) 监控与清理旧集群。