下面按常见场景给你讲 PostgreSQL 升级版本的几种方法,从简单到专业。
pg_dumpall > all.sql
# 或
pg_basebackup -D /backup/pgdata
psql --version
psql -c "SELECT version();"
https://www.postgresql.org/docs/
pg_upgrade(原地处理,快)# CentOS / Rocky
dnf install postgresql16-server
# Ubuntu
apt install postgresql-16
/usr/pgsql-16/bin/initdb -D /var/lib/pgsql/16/data
systemctl stop postgresql-13
/usr/pgsql-16/bin/pg_upgrade \
--old-datadir=/var/lib/pgsql/13/data \
--new-datadir=/var/lib/pgsql/16/data \
--old-bindir=/usr/pgsql-13/bin \
--new-bindir=/usr/pgsql-16/bin \
--check
pg_upgrade ...(同上,去掉 --check)
systemctl start postgresql-16
pg_dump + 恢复# 旧库导出
pg_dumpall > all.sql
# 新库导入
psql -f all.sql
✅ 最安全
❌ 慢
pglogical(在线升级)步骤简述:
# 导出
docker exec pg pg_dumpall -U postgres > all.sql
# 启新容器
docker run -e POSTGRES_PASSWORD=xxx -v pgdata16:/var/lib/postgresql/data postgres:16
# 导入
docker exec -i pg psql -U postgres < all.sql
❗ 扩展(postgis、pg_stat_statements)需重新安装
❗ 配置文件需手动合并
❗ 大版本不能跨太远(建议一步步升)
10 → 13 → 16
不要:
10 → 16(风险高)
如果你告诉我:
我可以给你精确命令。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。