You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Debian 11上使用pg_upgrade升级PostgreSQL 11至15失败求助

解决Debian 11环境下PostgreSQL 11升级至15的pg_upgrade依赖问题

环境:Bitnami Helm Chart,Debian 11(bullseye),需从PostgreSQL 11升级至15
错误:执行pg_upgrade时旧PG11二进制文件缺失libicui18n.so.63依赖,该库仅存在于Debian 10(buster)中,Debian 11默认不提供

方案一:手动安装Debian 10的libicu63包

  1. 下载对应架构的libicu63包(以amd64为例):
    wget http://deb.debian.org/debian/pool/main/i/icu/libicu63_63.1-6+deb10u3_amd64.deb
    
  2. 安装包,若出现依赖问题,临时添加Debian 10源补全依赖:
    • 编辑/etc/apt/sources.list,添加一行:
      deb http://deb.debian.org/debian buster main
      
    • 更新源并修复依赖:
      apt update && apt install -f
      
    • 安装libicu63:
      dpkg -i libicu63_63.1-6+deb10u3_amd64.deb
      
    • 安装完成后,注释掉刚添加的buster源,再次执行apt update避免后续源冲突
  3. 重新执行原pg_upgrade命令:
    gosu postgres pg_upgrade -c -b /bitnami/postgresql/oldbin -B /opt/bitnami/postgresql/bin -d /bitnami/postgresql/olddata -D /bitnami/postgresql/data
    

方案二:临时指定LD_LIBRARY_PATH加载旧依赖库

如果Bitnami的旧PostgreSQL 11安装目录自带了依赖库(部分打包会包含):

  1. 查找旧libicu63的位置:
    find /bitnami/postgresql/ -name "libicui18n.so.63"
    
  2. 找到路径后,临时设置环境变量执行pg_upgrade(替换/path/to/old/lib为实际路径):
    LD_LIBRARY_PATH=/path/to/old/lib gosu postgres pg_upgrade -c -b /bitnami/postgresql/oldbin -B /opt/bitnami/postgresql/bin -d /bitnami/postgresql/olddata -D /bitnami/postgresql/data
    

方案三:用Debian 10容器执行pg_upgrade

利用容器隔离环境,在Debian 10环境中运行升级命令:

  1. 启动Debian 10容器,挂载PostgreSQL的旧bin、新bin、旧数据、新数据目录:
    docker run -it --rm \
      -v /bitnami/postgresql/oldbin:/oldbin \
      -v /opt/bitnami/postgresql/bin:/newbin \
      -v /bitnami/postgresql/olddata:/olddata \
      -v /bitnami/postgresql/data:/newdata \
      debian:buster
    
  2. 在容器内安装PostgreSQL 11依赖:
    apt update && apt install postgresql-11
    
  3. 切换到postgres用户执行升级:
    su postgres
    pg_upgrade -c -b /oldbin -B /newbin -d /olddata -D /newdata
    
  4. 升级完成后退出容器,回到主机检查新数据目录权限,启动PostgreSQL 15服务

方案四:使用Bitnami PostgreSQL 11镜像执行升级

针对Bitnami环境,直接用官方PG11镜像运行升级:

  1. 启动Bitnami PG11容器,挂载相关目录:
    docker run -it --rm \
      -v /bitnami/postgresql/oldbin:/bitnami/postgresql/oldbin \
      -v /opt/bitnami/postgresql/bin:/opt/bitnami/postgresql/bin \
      -v /bitnami/postgresql/olddata:/bitnami/postgresql/olddata \
      -v /bitnami/postgresql/data:/bitnami/postgresql/data \
      bitnami/postgresql:11
    
  2. 在容器内执行原升级命令:
    gosu postgres pg_upgrade -c -b /bitnami/postgresql/oldbin -B /opt/bitnami/postgresql/bin -d /bitnami/postgresql/olddata -D /bitnami/postgresql/data
    
  3. 完成后退出容器,后续检查权限并启动新PG服务

内容的提问来源于stack exchange,提问作者beatrice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:19:55