温馨提示×

PostgreSQL如何迁移到CentOS

小樊
39
2026-08-20 03:56:28
栏目: 云计算

把 PostgreSQL 从其他环境迁移到 CentOS,常见有几种场景。下面我按最常用、最稳妥的方式给你一个完整说明,你可以对照自己的情况选择。


一、常见迁移场景

  1. 同版本 PostgreSQL 迁移(最常见)
    • 例如:从旧 CentOS / Ubuntu / Docker → 新 CentOS
  2. 跨版本升级迁移
    • 例如:PostgreSQL 12 → 15
  3. 物理迁移(数据目录直接拷贝)
  4. 逻辑迁移(推荐,最安全)

强烈推荐:逻辑迁移(pg_dump / pg_restore)


二、迁移前准备(CentOS 目标机)

1️⃣ 安装 PostgreSQL(以 PostgreSQL 15 为例)

# 安装官方仓库
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装 PostgreSQL
sudo yum install -y postgresql15-server postgresql15-contrib

# 初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

# 启动并设置开机自启
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

CentOS 8 / Rocky / Alma 类似,只是 yum → dnf


三、逻辑迁移(✅ 最推荐)

1️⃣ 在源数据库执行导出

pg_dump -h 源IP -p 5432 -U 用户名 -d 数据库名 -Fc > db.dump

示例:

pg_dump -h 192.168.1.10 -p 5432 -U postgres -d mydb -Fc > mydb.dump

2️⃣ 将 dump 文件拷贝到 CentOS

scp mydb.dump user@centos_ip:/tmp/

3️⃣ 在 CentOS 上创建数据库

sudo -u postgres psql
CREATE DATABASE mydb;
\q

4️⃣ 导入数据

pg_restore -U postgres -d mydb /tmp/mydb.dump

✅ 优点:

  • 不依赖系统架构
  • 可跨版本
  • 最安全、最通用

四、物理迁移(不推荐新手)

适用条件

  • PostgreSQL 版本完全一致
  • 操作系统架构一致

步骤简述

  1. 停止源和目标 PostgreSQL
  2. 拷贝数据目录:
    /var/lib/pgsql/15/data
    
  3. 拷贝 postgresql.conf / pg_hba.conf
  4. 修改目录权限
  5. 启动 PostgreSQL

⚠️ 风险:容易因版本/系统差异导致无法启动


五、Docker → CentOS 迁移

导出

docker exec -t pg_container pg_dump -U postgres mydb > mydb.sql

导入到 CentOS PostgreSQL

psql -U postgres -d mydb < mydb.sql

六、迁移后常见问题

1️⃣ 无法远程连接

编辑:

/var/lib/pgsql/15/data/pg_hba.conf

添加:

host  all  all  0.0.0.0/0  md5

修改:

listen_addresses = '*'

重启:

systemctl restart postgresql-15

2️⃣ 用户/密码问题

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'newpassword';

七、迁移方案选择建议

场景 推荐方式
跨版本 pg_dump
不同系统 pg_dump
同版本、同系统 物理迁移
Docker → CentOS pg_dump

八、我可以继续帮你

你可以直接告诉我:

  • ✅ 源 PostgreSQL 版本
  • ✅ 目标 CentOS 版本
  • ✅ 是否跨版本
  • ✅ 数据量大小

我可以给你精确到命令级别的迁移方案。

0