在 Debian 上迁移 PostgreSQL 数据,常见有 几种场景,下面按“最常用 → 进阶”给你说明,你可以对号入座。
适合:服务器重装系统、换磁盘、换目录
sudo systemctl stop postgresql
假设原目录:
/var/lib/postgresql/15/main
复制到新位置:
sudo mv /var/lib/postgresql/15/main /data/pgdata
编辑:
sudo nano /etc/postgresql/15/main/postgresql.conf
修改:
data_directory = '/data/pgdata'
sudo chown -R postgres:postgres /data/pgdata
sudo chmod 700 /data/pgdata
sudo systemctl start postgresql
适合:服务器迁移、版本升级
pg_dumpall -U postgres > pg_all.sql
或只导一个库:
pg_dump -U postgres dbname > db.sql
scp pg_all.sql user@newserver:/tmp/
sudo -u postgres psql < /tmp/pg_all.sql
✅ 优点:安全、兼容性好
❌ 缺点:大数据量较慢
适合:TB 级数据、主从迁移
pg_basebackup -h old_host -U replica -D /var/lib/postgresql/15/main -P -X stream
然后:
systemctl start postgresql
⚠️ 要求 PostgreSQL 版本一致
sudo apt install postgresql-15
sudo pg_upgradecluster 13 main
或:
pg_dumpall | psql
docker exec pgContainer pg_dumpall -U postgres > dump.sql
docker exec -i pgContainer psql -U postgres < dump.sql
| 场景 | 推荐方式 |
|---|---|
| 换磁盘 / 目录 | 移 data_directory |
| 换服务器 | pg_dump |
| 大数据量 | pg_basebackup |
| 版本升级 | pg_upgradecluster |
如果你愿意,可以告诉我:
我可以直接给你一步步命令。