首页主机资讯Ubuntu PostgreSQL如何升级版本

Ubuntu PostgreSQL如何升级版本

时间2025-11-27 12:43:04发布访客分类主机资讯浏览655
导读:Ubuntu 上 PostgreSQL 升级指南 一 升级前准备 备份全部数据(强烈建议):使用物理备份或逻辑备份,例如对所有数据库执行逻辑导出:sudo -u postgres pg_dumpall > /path/to/back...

Ubuntu 上 PostgreSQL 升级指南

一 升级前准备

  • 备份全部数据(强烈建议):使用物理备份或逻辑备份,例如对所有数据库执行逻辑导出:sudo -u postgres pg_dumpall > /path/to/backup.sql。小版本升级通常可直接通过包管理器完成;大版本升级(如 14 → 15)需按兼容性说明执行升级流程。检查当前版本:sudo -u postgres psql -c "SELECT version(); "。准备维护窗口,避免业务写入。

二 小版本升级

  • 适用于同一主版本内的补丁升级(如 14.5 → 14.7)。步骤:
    1. 停止服务:sudo systemctl stop postgresql
    2. 更新软件包索引:sudo apt update
    3. 升级当前主版本包:sudo apt upgrade postgresql-14(将 14 替换为你的实际主版本)
    4. 启动服务:sudo systemctl start postgresql
    5. 验证:sudo -u postgres psql -c "SELECT version(); "

三 大版本升级

  • 适用于跨主版本(如 14.x → 15.x)。思路是安装新版本,再用工具迁移数据(推荐 pg_upgrade;兼容性要求高时可用逻辑转储)。示例以 14 → 15 为例,路径与版本号请按实际环境调整。

  • 安装新版本

    • 添加官方仓库并安装新版本(若尚未使用官方源):
      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
      
    • 安装完成后,系统会为新版本创建新的数据目录(如 /var/lib/postgresql/15/main),但默认不会自动启动或迁移数据。
  • 方式一 pg_upgrade(速度快,需二进制兼容)

    1. 停止旧版本:sudo systemctl stop postgresql
    2. 执行检查(不真正升级):
      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
      
    3. 执行升级(检查通过后):
      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'
      
    4. 启动新版本:sudo systemctl start postgresql@15-main
    5. 重建统计信息:sudo -u postgres /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages
    6. 升级完成后,按脚本提示运行 analyze_new_cluster.sh,确认无误后再运行 delete_old_cluster.sh 清理旧集群。
  • 方式二 逻辑转储(最稳妥,跨版本兼容性好)

    1. 导出旧库:sudo -u postgres pg_dumpall -f /path/to/backup.sql
    2. 初始化新集群(若尚未初始化):sudo /usr/lib/postgresql/15/bin/pg_ctl initdb -D /var/lib/postgresql/15/main/
    3. 启动新版本:sudo systemctl start postgresql@15-main
    4. 导入数据:sudo -u postgres psql -f /path/to/backup.sql postgres
    5. 重建统计信息:sudo -u postgres /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages

四 常见问题与排错

  • 客户端与服务端版本不匹配
    • 现象:pg_dump: 错误: 服务器版本: 15.5; pg_dump 版本: 13.14,说明本地 pg_dump 过旧。解决:安装与新服务器匹配的客户端工具(如安装 postgresql-15 附带的客户端),或用新版本服务器上的 pg_dump 远程导出。
  • 端口与集群管理
    • 若新版本安装后自动创建了新集群并启动,而你希望先迁移再切换,可先停止新版本服务(如 sudo systemctl stop postgresql@15-main),完成迁移后再启动;必要时调整 postgresql.conf 中的 port 避免端口冲突,升级验证无误后再恢复为 5432
  • 远程访问与认证
    • 如需远程连接,编辑新版本的 /etc/postgresql/15/main/pg_hba.confpostgresql.conf:将 listen_addresses 设为 '*',并在 pg_hba.conf 中对需要的来源配置 md5scram-sha-256 认证;修改后重启服务生效。
  • 清理旧版本
    • 确认新版本运行稳定、统计信息重建完成且业务验证通过后,再卸载旧版本软件包并删除旧集群目录(参考 delete_old_cluster.sh 的输出或手动清理),避免误删导致回滚困难。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu PostgreSQL如何升级版本
本文地址: https://pptw.com/jishu/757785.html
Ubuntu PostgreSQL如何备份数据 Ubuntu PostgreSQL如何恢复数据

游客 回复需填写必要信息