温馨提示×

centos怎么迁数据postgresql

小樊
42
2026-09-21 15:59:57
栏目: 云计算

在 CentOS 上迁移 PostgreSQL 数据,常见有几种方式,下面按最常用 → 进阶给你讲清楚,你可以按场景选。


一、同版本 / 同机或跨机(最推荐):pg_dump + pg_restore

1️⃣ 原服务器导出数据

# 导出单个数据库
pg_dump -U username dbname > dbname.sql

# 或导出整个集群(含角色、表空间)
pg_dumpall -U postgres > all.sql

如果数据大,推荐压缩:

pg_dump -U username dbname | gzip > dbname.sql.gz

2️⃣ 拷贝到目标服务器

scp dbname.sql.gz user@new_server:/data/

3️⃣ 目标服务器导入

# 解压
gunzip dbname.sql.gz

# 创建数据库(如不存在)
createdb -U postgres dbname

# 导入
psql -U postgres dbname < dbname.sql

✅ 优点:安全、兼容性好
✅ 适合:版本相同或升级迁移


二、物理迁移(停库拷贝数据目录,速度快)

⚠️ 必须 PostgreSQL 大版本一致

1️⃣ 停止数据库

systemctl stop postgresql

2️⃣ 拷贝数据目录

默认路径一般是:

/var/lib/pgsql/13/data
rsync -avz /var/lib/pgsql/13/data/ root@new_server:/var/lib/pgsql/13/data/

3️⃣ 目标机修改权限

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

4️⃣ 启动

systemctl start postgresql

✅ 优点:快
❌ 缺点:不能跨大版本


三、使用 pg_basebackup(主从 / 迁移都行)

pg_basebackup -h old_host -U repl -D /var/lib/pgsql/13/data -P -X stream

适合:

  • 大库
  • 做迁移 + 容灾

四、跨大版本升级迁移(重要)

❌ 不能直接拷数据目录
✅ 正确方式:

pg_dump(旧) → pg_restore(新)

或官方工具:

pg_upgrade

五、常见坑(CentOS)

  1. SELinux
setenforce 0
# 或
restorecon -Rv /var/lib/pgsql
  1. 防火墙
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
  1. postgres 用户不能密码登录
su - postgres
psql

六、你可以告诉我

我可以给你精确命令,只要你说明:

  • PostgreSQL 版本(如 12 / 13 / 15)
  • 是否跨服务器
  • 数据量大小
  • 是否允许停机

我可以直接给你一套可复制执行方案。

0 踩