温馨提示×

PostgreSQL如何恢复CentOS

小樊
46
2026-07-21 10:28:33
栏目: 云计算

你说的“PostgreSQL 如何恢复 CentOS”一般有两种常见理解,我先分别说明,再给你可操作的恢复步骤。你可以对照自己的场景选择。


一、常见场景说明

✅ 场景 1:CentOS 系统坏了,但 PostgreSQL 数据还在(最常见)

系统重装或崩溃,需要 在新 CentOS 系统中恢复 PostgreSQL 数据

✅ 场景 2:PostgreSQL 数据库误删 / 损坏,需要恢复数据

OS 正常,但数据库需要恢复(逻辑恢复 or 物理恢复)

✅ 场景 3:从备份中恢复 PostgreSQL(推荐)

pg_dump 或物理备份


二、场景 1:CentOS 重装后恢复 PostgreSQL 数据(物理恢复)

这是最常用、也最容易出问题的情况。

前提条件

  • PostgreSQL 大版本一致(如 14 → 14)
  • 旧数据目录还在(如 /var/lib/pgsql/14/data

步骤 1:安装与原版本一致的 PostgreSQL

# 查看旧版本(如果能看到)
rpm -qa | grep postgresql

安装(以 PostgreSQL 14 为例):

dnf install -y postgresql14-server postgresql14-contrib

步骤 2:停止 PostgreSQL

systemctl stop postgresql-14

步骤 3:备份新数据目录(防止误操作)

mv /var/lib/pgsql/14/data /var/lib/pgsql/14/data.bak

步骤 4:拷贝旧数据目录

假设旧数据在 /old/var/lib/pgsql/14/data

cp -a /old/var/lib/pgsql/14/data /var/lib/pgsql/14/
chown -R postgres:postgres /var/lib/pgsql/14/data

⚠️ 权限非常重要,否则一定启动失败


步骤 5:启动 PostgreSQL

systemctl start postgresql-14
systemctl enable postgresql-14

步骤 6:验证

su - postgres
psql
\l

三、场景 2:从 pg_dump 备份恢复(逻辑恢复,最安全)

恢复整个数据库

psql -U postgres -d newdb < backup.sql

或:

pg_restore -U postgres -d newdb backup.dump

四、场景 3:使用 WAL / 物理备份恢复(高级)

如果你有:

  • pg_basebackup
  • WAL 归档

恢复流程:

  1. 恢复数据目录
  2. 配置 recovery.confpostgresql.auto.conf
  3. 启动自动恢复

⚠️ 这种情况建议单独说明你的备份方式。


五、常见错误 & 排查

❌ 启动失败

FATAL: data directory "/var/lib/pgsql/14/data" has wrong ownership

✅ 修复:

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

❌ 版本不一致

database files are incompatible with server

✅ 必须安装 相同主版本


六、我可以进一步帮你

你可以直接告诉我:

  1. ✅ PostgreSQL 版本(如 12 / 13 / 14 / 15)
  2. ✅ 是否有备份(pg_dump / 物理 / 无)
  3. ✅ CentOS 版本(7 / 8 / Stream)
  4. ✅ 报错信息(如果有)

我可以直接给你针对你环境的精确恢复命令

0