在 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 的用戶會很有幫助。
數據備份 → 新安裝 → 恢復 → 移除舊版本,按照順序安全地進行版本切換。
伺服器的用戶名、端口號等可以根據您的環境進行調整。
目前沒有評論。