Ubuntu PostgreSQL版本升级指南
一、准备工作
- 备份数据:使用
pg_dumpall命令备份所有数据库,如sudo -u postgres pg_dumpall > /path/to/backup.sql。 - 检查当前版本:通过
sudo -u postgres psql -c "SELECT version();"查看当前版本。 - 确认兼容性:大版本升级需查阅官方文档,确保新版本与旧版本兼容。
二、小版本升级(如14.5→14.7)
- 更新软件包:
- 添加官方仓库(若未添加):
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /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-<小版本号>。
- 添加官方仓库(若未添加):
- 重启服务:
sudo systemctl restart postgresql。
三、大版本升级(如14.x→15.x)
- 安装新版本:
- 添加官方仓库(若未添加):
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /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 /usr/lib/postgresql/15/bin/pg_ctl initdb -D /var/lib/postgresql/15/main/。 - 迁移数据:
- 方法一:使用pg_upgrade(推荐,快速):
- 检查兼容性:
sudo -u postgres /usr/lib/postgresql/15/bin/pg_upgrade --old-bindir /usr/lib/postgresql/14/bin --new-bindir /usr/lib/postgresql/15/bin --old-datadir /var/lib/postgresql/14/main --new-datadir /var/lib/postgresql/15/main --check。 - 执行升级:
sudo -u postgres /usr/lib/postgresql/15/bin/pg_upgrade --old-bindir /usr/lib/postgresql/14/bin --new-bindir /usr/lib/postgresql/15/bin --old-datadir /var/lib/postgresql/14/main --new-datadir /var/lib/postgresql/15/main --link。 - 更新统计信息:
sudo -u postgres /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages。
- 检查兼容性:
- 方法二:逻辑转储(安全,跨版本兼容):
- 导出数据:
sudo -u postgres pg_dumpall -f /path/to/backup.sql。 - 创建新数据库集群并导入数据。
- 导出数据:
- 方法一:使用pg_upgrade(推荐,快速):
- 配置新版本:复制旧配置文件到新目录并修改(如端口等)。
- 启动新服务:
sudo systemctl start postgresql@15-main。 - 验证升级:
sudo -u postgres psql -p <新端口> -c "SELECT version();"。
四、注意事项
- 确保新数据目录权限正确。
- 升级后需重新安装扩展。
- 检查日志文件
/var/log/postgresql/postgresql-<版本>-main.log。