温馨提示×

debian postgresql怎样迁数据

小樊
43
2026-10-17 03:19:09
栏目: 云计算

在 Debian 上迁移 PostgreSQL 数据,常见有 几种场景,下面按“最常用 → 进阶”给你说明,你可以对号入座。


一、同机 / 同版本:直接迁移数据目录(物理迁移)

适合:服务器重装系统、换磁盘、换目录

1. 停止 PostgreSQL

sudo systemctl stop postgresql

2. 移动数据目录

假设原目录:

/var/lib/postgresql/15/main

复制到新位置:

sudo mv /var/lib/postgresql/15/main /data/pgdata

3. 修改配置

编辑:

sudo nano /etc/postgresql/15/main/postgresql.conf

修改:

data_directory = '/data/pgdata'

4. 修复权限

sudo chown -R postgres:postgres /data/pgdata
sudo chmod 700 /data/pgdata

5. 启动

sudo systemctl start postgresql

二、跨机 / 跨版本:使用 pg_dump(推荐)

适合:服务器迁移、版本升级

在【旧服务器】导出

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

✅ 优点:安全、兼容性好
❌ 缺点:大数据量较慢


三、大库迁移:pg_basebackup(物理备份)

适合:TB 级数据、主从迁移

新服务器执行

pg_basebackup -h old_host -U replica -D /var/lib/postgresql/15/main -P -X stream

然后:

systemctl start postgresql

⚠️ 要求 PostgreSQL 版本一致


四、Debian 升级 PostgreSQL 版本(如 13 → 15)

使用官方工具

sudo apt install postgresql-15
sudo pg_upgradecluster 13 main

或:

pg_dumpall | psql

五、Docker PostgreSQL 迁移(补充)

导出

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

如果你愿意,可以告诉我:

  • Debian 版本
  • PostgreSQL 版本
  • 是否跨服务器 / 跨版本

我可以直接给你一步步命令。

0 踩