备份数据库(纯文本 SQL 脚本):
sudo -u postgres pg_dumpall > all_databases_backup.sql
恢复 (Restore)数据库:
sudo -u postgres psql -f all_databases_backup.sql postgres
备份完成后开始升级:
在 Debian 系统上将 PostgreSQL 从版本 15 升级到 16,最简单的方法是 Debian 特有的 pg_upgradecluster 工具。
该工具可以自动处理配置迁移,并最大限度地减少手动操作。
1. 安装 PostgreSQL 16
sudo apt update
sudo apt install postgresql-16 postgresql-client-16
2. 检查当前集群状态
pg_lsclusters
15 main: 通常运行在默认端口 5432。
16 main: 新安装的版本会自动分配一个新端口(如 5433)。
3. 执行升级流程
升级前必须先停止自动创建的空白 PostgreSQL 16 集群,才可以将版本 15 的数据迁移过来:
停止PG16:
sudo pg_dropcluster 16 main --stop
运行升级命令:将版本 15 的数据和配置迁移到版本 16。
sudo pg_upgradecluster 15 main
4. 验证升级结果
升级完成后,再次检查集群状态:
pg_lsclusters
此时,16 main 应该已经运行在 5432 端口,而 15 main 处于关闭(down)状态并切换到了其他端口(如 5433)。
5. 清理旧版本(可选)
确认数据迁移无误且应用程序运行正常后,删除旧数据集群,卸载旧版软件包:
sudo pg_dropcluster 15 main
sudo apt purge postgresql-15 postgresql-client-15