在 Debian 系统上迁移 PostgreSQL 数据,常见场景包括:同版本迁移、跨版本升级、迁移到新服务器。下面按最常用、最安全的方式说明。
psql --version
pg_lsclusters
sudo systemctl stop postgresql
或只停对应集群:
sudo pg_ctlcluster <版本> <集群名> stop
pg_dump + psql(最安全)sudo -u postgres pg_dumpall > pg_backup.sql
scp pg_backup.sql user@new-server:/tmp/
sudo -u postgres psql -f /tmp/pg_backup.sql
✅ 适合:跨服务器、不同目录、云迁移
sudo systemctl stop postgresql
sudo mv /var/lib/postgresql/15/main /new/path/
编辑:
sudo nano /etc/postgresql/15/main/postgresql.conf
修改:
data_directory = '/new/path/main'
sudo systemctl start postgresql
⚠️ 权限必须正确:
sudo chown -R postgres:postgres /new/path
pg_upgradecluster(最推荐)pg_upgradecluster 15 main
完成后:
pg_dropcluster 15 main
pg_dump + 新版本导入(更安全)sudo -u postgres pg_dumpall > all.sql
sudo apt install postgresql-16
sudo -u postgres psql -f all.sql
源服务器:
sudo -u postgres pg_dumpall > all.sql
scp all.sql root@new:/root/
目标服务器:
apt install postgresql
sudo -u postgres psql -f /root/all.sql
pg_dumpall 迁移data 目录跨版本--jobs 加速:pg_dump -j 4 dbname > db.sql
如果你能告诉我:
我可以给你精确命令。