PostgreSQL在Ubuntu上的版本升级指南
导读:Ubuntu 上升级 PostgreSQL 的完整流程 一 升级前准备 备份全部数据(强烈建议):使用物理备份或逻辑备份。逻辑备份示例:sudo -u postgres pg_dumpall > /path/to/backup.sq...
Ubuntu 上升级 PostgreSQL 的完整流程
一 升级前准备
- 备份全部数据(强烈建议):使用物理备份或逻辑备份。逻辑备份示例:
sudo -u postgres pg_dumpall > /path/to/backup.sql。 - 检查当前版本:
sudo -u postgres psql -c "SELECT version(); "。 - 确认兼容性:大版本升级(如 14 → 15)需阅读官方兼容性说明,评估扩展、参数、依赖对象变化。
- 选择维护窗口:升级期间需停写,并预留回滚时间。
- 客户端一致性:执行备份/导出时尽量使用与目标库版本一致的客户端工具,避免出现“pg_dump 版本低于服务器版本”的错误。
二 小版本升级 同主版本内(如 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.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update - 安装新主版本:
sudo apt install postgresql-15。
- 添加官方仓库(若系统源版本较旧):
- 停止旧版本:
sudo systemctl stop postgresql(或sudo systemctl stop postgresql@14-main)。 - 选择升级方式
- 方式 A:使用 pg_upgrade(速度快,要求二进制兼容)
- 检查:
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 --check - 执行:
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 -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-stages
- 检查:
- 方式 B:使用逻辑转储(最稳妥,跨版本兼容性好)
- 导出:
sudo -u postgres pg_dumpall -f /path/to/backup.sql - 初始化新集群:
sudo -u postgres /usr/lib/postgresql/15/bin/initdb -D /var/lib/postgresql/15/main - 启动新实例:
sudo systemctl start postgresql@15-main - 导入:
sudo -u postgres psql -f /path/to/backup.sql postgres
- 导出:
- 方式 A:使用 pg_upgrade(速度快,要求二进制兼容)
- 配置与切换
- 复制并重用旧配置(按需合并):
sudo cp /etc/postgresql/14/main/*.conf /etc/postgresql/15/main/(注意参数差异与新增项)。 - 端口与监听:如需避免端口冲突,可在 /etc/postgresql/15/main/postgresql.conf 中设置
port = 5433,以及listen_addresses = '*'(变更需重启)。 - 认证:在 /etc/postgresql/15/main/pg_hba.conf 中按需配置
local/host的认证方式(如md5或scram-sha-256)。
- 复制并重用旧配置(按需合并):
- 验证与清理
- 验证:
sudo -u postgres psql -c "SELECT version(); ",检查应用连接、复制、扩展是否正常。 - 清理(确认无误后):
sudo pg_dropcluster 14 main --stop。
- 验证:
四 常见问题与排错
- 客户端版本过低导致备份失败:出现 “pg_dump 版本低于服务器版本” 时,升级本地客户端工具或直接使用目标库版本的
pg_dump(如安装对应版本的 postgresql-client 包)。 - 端口冲突:新版本默认 5432,若被占用,修改 postgresql.conf 的
port并重启;应用需同步更新连接端口。 - 权限与远程访问:确保 pg_hba.conf 允许所需来源与认证方式;远程访问需设置
listen_addresses与防火墙放行。 - 升级后性能波动:执行
vacuumdb --all --analyze-in-stages重建统计信息,必要时检查索引与扩展版本。
五 建议的升级顺序清单
- 备份(物理或
pg_dumpall)→ 2) 检查版本与兼容性 → 3) 安装新版本二进制 → 4) 选择升级方式(pg_upgrade 或逻辑转储)→ 5) 校验与统计信息更新 → 6) 调整配置与端口 → 7) 应用回归验证 → 8) 监控与清理旧集群。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PostgreSQL在Ubuntu上的版本升级指南
本文地址: https://pptw.com/jishu/762445.html
