在 CentOS 上“恢复 PostgreSQL”通常指从备份恢复数据,也可能是误删/损坏后重新安装。下面按最常见场景给你一套完整、可操作的恢复方案。
# 查看 PostgreSQL 是否安装
rpm -qa | grep postgresql
# 查看服务状态
systemctl status postgresql
常见版本路径:
/var/lib/pgsql/data
/var/lib/pgsql/<版本>/data
pg_dump 备份恢复(逻辑恢复)su - postgres
psql -d 数据库名 -f /备份路径/backup.sql
或新建数据库再恢复:
createdb testdb
psql testdb < backup.sql
pg_basebackup 恢复(物理恢复,推荐生产环境)systemctl stop postgresql
mv /var/lib/pgsql/data /var/lib/pgsql/data.bak
cp -r /备份目录/basebackup /var/lib/pgsql/data
chown -R postgres:postgres /var/lib/pgsql/data
vi /var/lib/pgsql/data/postgresql.conf
restore_command = 'cp /wal归档路径/%f %p'
recovery_target_time = '2025-01-01 10:00:00'
touch /var/lib/pgsql/data/recovery.signal
systemctl start postgresql
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install -y postgresql12-server postgresql12-contrib
/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12
systemctl start postgresql-12
systemctl stop postgresql
cp -r /旧data目录 /var/lib/pgsql/12/data
chown -R postgres:postgres /var/lib/pgsql/12/data
systemctl start postgresql
data directory "/var/lib/pgsql/data" has group or world access
✅ 解决:
chmod 700 /var/lib/pgsql/data
chown postgres:postgres /var/lib/pgsql/data
database files are incompatible with server
✅ 解决:
| 情况 | 推荐方式 |
|---|---|
有 .sql 文件 |
psql 恢复 |
| 有 basebackup | 物理恢复 |
| 整个数据库被删 | 重装 + 恢复 |
| 单表误删 | pg_dump 单表恢复 |
你可以直接告诉我:
我可以给你一步一步精确到命令的恢复方案。