18.0 -> 18.3 小版本升级
这条路可以原地换二进制,不用 pg_upgrade。下面我按宝塔论坛里常见运行目录 /www/server/pgsql 写;如果你机器实际是 /usr/local/pgsql,把路径整体替换掉。
</div>
<div data-theme="light">
# 1) 先确认当前版本和编译参数
/www/server/pgsql/bin/psql -V
/www/server/pgsql/bin/pg_config –configure
# 2) 先做备份
mkdir -p /www/backup/database/pgsql
su – postgres -c "/www/server/pgsql/bin/pg_dumpall -f /www/backup/database/pgsql/all_$(date +%F_%H%M%S).sql"
cp -a /www/server/pgsql/data /www/backup/database/pgsql/data_$(date +%F_%H%M%S)
# 3) 下载并编译 18.3
cd /usr/local/src
wget https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.gz
tar xf postgresql-18.3.tar.gz
cd postgresql-18.3
# 关键:尽量沿用旧版本的 configure 参数,至少 prefix 要保持宝塔目录
# 先看旧参数,再按原样补到下面这条 configure
/www/server/pgsql/bin/pg_config –configure
./configure –prefix=/www/server/pgsql
make -j"$(nproc)"
# 4) 停服务,再覆盖安装
systemctl stop pgsql 2>/dev/null || /etc/init.d/pgsql stop || su – postgres -c "/www/server/pgsql/bin/pg_ctl -D /www/server/pgsql/data -m fast stop"
make install
# 5) 启动并验证
systemctl start pgsql 2>/dev/null || /etc/init.d/pgsql start || su – postgres -c "/www/server/pgsql/bin/pg_ctl -D /www/server/pgsql/data -l /www/server/pgsql/logs/pgsql.log start"
/www/server/pgsql/bin/psql -V
su – postgres -c "/www/server/pgsql/bin/psql -d postgres -c 'select version();'"
</div>
<div data-theme="light">
6/17 -> 18.3 大版本升级
这就不能直接 make install 覆盖老版本了。官方要求用 pg_upgrade 或先 pg_dumpall 再导回;否则有很大概率把旧 data 目录搞坏。最稳的是“新目录安装 18.3 + pg_upgrade –check + 正式升级”。
还有一个现实问题:就算你命令行已经升好了,宝塔插件里的“版本管理”显示也可能不同步。这个时候以命令行的 psql -V 和 SELECT version(); 为准,不要以面板标签为准。





