在 Debian 系统中更新 PostgreSQL 的步骤如下,分为小版本升级(如 13.x → 13.y)和大版本升级(如 12.x → 13.x)两种情况:
一、小版本升级(安全维护更新)
适用于同一主版本内的更新(如 14.7
→ 14.8
),通常通过包管理器直接完成:
# 1. 更新软件包列表
sudo apt update
# 2. 升级所有已安装软件包(包括 PostgreSQL)
sudo apt upgrade
# 或仅升级 PostgreSQL
sudo apt install --only-upgrade postgresql-14 # 根据实际版本替换数字
# 3. 重启 PostgreSQL 服务
sudo systemctl restart postgresql
二、大版本升级(如 13.x → 14.x)
需手动操作,步骤如下:
1. 备份数据
sudo -u postgres pg_dumpall > /path/to/backup.sql
2. 添加官方仓库(可选)
如果 Debian 官方源未提供版,可添加 PostgreSQL 官方仓库:
# 安装依赖
sudo apt install curl ca-certificates gnupg
# 添加仓库(以 PostgreSQL 16 为例)
echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# 更新软件包列表
sudo apt update
3. 安装新版本
# 安装新版本(例如 PostgreSQL 16)
sudo apt install postgresql-16
# 旧版本(如 15)仍会保留,需手动迁移
4. 迁移数据
使用 pg_upgrade
工具(需停服):
# 停止 PostgreSQL
sudo systemctl stop postgresql
# 执行升级(以 15 → 16 为例)
sudo -u postgres pg_upgrade \
-b /usr/lib/postgresql/15/bin \ # 旧版本二进制路径
-B /usr/lib/postgresql/16/bin \ # 新版本二进制路径
-d /var/lib/postgresql/15/main \ # 旧数据目录
-D /var/lib/postgresql/16/main # 新数据目录
# 若提示需初始化,先运行:
sudo -u postgres /usr/lib/postgresql/16/bin/initdb -D /var/lib/postgresql/16/main
5. 启动新版本并清理
# 启动新版本
sudo systemctl start postgresql@16-main
# 验证数据
psql -U postgres -c "SELECT version();"
# 确认无误后卸载旧版本(谨慎操作!)
sudo apt remove postgresql-15
sudo apt autoremove
注意事项
- 兼容性:大版本升级前检查官方文档的兼容性说明。
- 依赖冲突:若使用扩展(如 PostGIS),需同步升级扩展版本。
- 回滚:如果失败,可从备份恢复数据并重新启动旧版本服务。
建议在测试环境先演练升级流程!
(本文来源:nzw6.com)