温馨提示×

如何迁移debian postgresql数据

小樊
41
2026-10-02 11:58:52
栏目: 云计算

在 Debian 系统上迁移 PostgreSQL 数据,常见场景包括:同版本迁移、跨版本升级、迁移到新服务器。下面按最常用、最安全的方式说明。


一、迁移前准备

1. 查看当前版本

psql --version
pg_lsclusters

2. 停止写入(重要)

sudo systemctl stop postgresql

或只停对应集群:

sudo pg_ctlcluster <版本> <集群名> stop

二、同版本数据迁移(推荐:SQL 导出导入)

方法 1:pg_dump + psql(最安全)

1. 导出全部数据库

sudo -u postgres pg_dumpall > pg_backup.sql

2. 拷贝到目标机器

scp pg_backup.sql user@new-server:/tmp/

3. 在目标机导入

sudo -u postgres psql -f /tmp/pg_backup.sql

✅ 适合:跨服务器、不同目录、云迁移


三、同服务器更换数据目录(物理迁移)

1. 停止 PostgreSQL

sudo systemctl stop postgresql

2. 移动数据目录

sudo mv /var/lib/postgresql/15/main /new/path/

3. 修改配置

编辑:

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

修改:

data_directory = '/new/path/main'

4. 重启

sudo systemctl start postgresql

⚠️ 权限必须正确:

sudo chown -R postgres:postgres /new/path

四、跨大版本升级(Debian 推荐方式)

方法 1:pg_upgradecluster(最推荐)

pg_upgradecluster 15 main

完成后:

pg_dropcluster 15 main

方法 2:pg_dump + 新版本导入(更安全)

sudo -u postgres pg_dumpall > all.sql
sudo apt install postgresql-16
sudo -u postgres psql -f all.sql

五、迁移到另一台 Debian 服务器(完整流程)

源服务器:

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

如果你能告诉我:

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

我可以给你精确命令。

0 踩