这是一个在Ubuntu服务器上将现有的PostgreSQL 14版本升级到PostgreSQL 16并且进行数据迁移的实际过程的指南,过程中没有数据丢失。
从全体数据备份、新版本安装、数据恢复到卸载旧版本,整个过程都进行了分步骤的安排。
1. 检查当前PostgreSQL版本和集群状态
psql --version
pg_lsclusters
请确认集群状态中14/main是否处于激活状态。
2. 全体数据备份
PostgreSQL可以通过pg_dumpall
命令进行包括完整数据库、用户及权限信息的备份。
sudo -u postgres pg_dumpall > ~/pg_backup_all.sql
备份验证示例(可选)
head ~/pg_backup_all.sql
tail ~/pg_backup_all.sql
检查文件存在性及大小
ls -lh ~/pg_backup_all.sql
3. 安装PostgreSQL 16
3-1. 注册官方库
sudo apt update
sudo apt install wget ca-certificates -y
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/pgdg.gpg
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
3-2. 安装PostgreSQL 16
sudo apt update
sudo apt install postgresql-16 -y
安装完成后,再次检查集群状态。
pg_lsclusters
4. 切换集群
停止旧版14,并启动16版本。
sudo systemctl stop postgresql@14-main
sudo systemctl start postgresql@16-main
5. 数据恢复(到PostgreSQL 16)
在恢复之前,请确认新安装的16版本能够正常连接。
(端口号可在pg_lsclusters
中查看)
sudo -u postgres psql -p 5433
如果连接正常,使用以下命令恢复备份的数据:
sudo -u postgres psql < ~/pg_backup_all.sql
可以通过
less ~/pg_backup_all.sql | grep ERROR
检查是否发生了错误。
6. 卸载PostgreSQL 14(可选)
如果升级及数据恢复完成且没有问题,可以选择卸载PostgreSQL 14:
sudo pg_dropcluster 14 main --stop
sudo apt remove postgresql-14 -y
总结
这一过程将对需要在Ubuntu服务器上将PostgreSQL从14升级到16的人非常有用。
数据备份 → 新版本安装 → 恢复 → 卸载旧版的顺序可以安全地进行版本切换。
服务器的用户名、端口号等请根据您自己的环境进行调整。
댓글이 없습니다.