温馨提示×

centos怎样迁postgresql数据

小樊
45
2026-10-12 05:26:22
栏目: 云计算

在 CentOS 上迁移 PostgreSQL 数据,常见有几种方式,下面按最常用、最稳妥的顺序给你说明,并附带具体命令示例。


一、迁移前的准备工作(通用)

1. 查看 PostgreSQL 版本

psql --version

或

rpm -qa | grep postgresql

2. 停止 PostgreSQL 服务

systemctl stop postgresql

3. 确认数据目录

默认一般是:

/var/lib/pgsql/<版本>/data

例如:

/var/lib/pgsql/13/data

二、方式一:使用 pg_dump(✅ 最推荐,跨版本安全)

适合场景

  • 跨版本迁移(如 10 → 13)
  • 只迁移部分库
  • 不同机器之间

1. 导出数据(老服务器)

pg_dump -U postgres -h localhost 数据库名 > db.sql

导出所有库:

pg_dumpall -U postgres > all.sql

2. 拷贝文件到新服务器

scp db.sql root@新服务器IP:/root/

3. 在新服务器导入

psql -U postgres -f db.sql

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


三、方式二:直接拷贝 data 目录(⚠ 同版本才可用)

适合场景

  • 同版本 PostgreSQL
  • 整机或目录迁移

1. 旧服务器

systemctl stop postgresql
cp -a /var/lib/pgsql/13/data /data/pgdata_backup

2. 新服务器

systemctl stop postgresql
rm -rf /var/lib/pgsql/13/data
cp -a /data/pgdata_backup /var/lib/pgsql/13/data
chown -R postgres:postgres /var/lib/pgsql/13/data

3. 启动

systemctl start postgresql

⚠ 注意

  • 版本必须一致
  • selinux 可能干扰(可临时 setenforce 0 测试)

四、方式三:使用 pg_basebackup(✅ 主从/整机迁移)

适合场景

  • 整机迁移
  • 搭建从库
pg_basebackup -h 老IP -U repl -D /var/lib/pgsql/13/data -P -X stream

五、常见坑位提醒

1. 权限问题

PostgreSQL 数据目录必须属于 postgres

chown -R postgres:postgres /var/lib/pgsql

2. SELinux

getenforce

如为 Enforcing,可:

setenforce 0

或修改:

semanage fcontext -a -e /var/lib/pgsql /new/path
restorecon -Rv /new/path

3. 配置文件

迁移后检查:

postgresql.conf
pg_hba.conf

六、快速选择建议

场景 推荐方式
跨版本 pg_dump
同版本整机 拷贝 data
主从/备份 pg_basebackup

如果你能告诉我:

  • PostgreSQL 版本
  • 是否同机 / 跨机
  • 数据量大小

我可以给你更精确的迁移方案。

0 踩