温馨提示×

centos如何恢复postgresql

小樊
57
2026-09-18 12:44:40
栏目: 云计算

在 CentOS 上“恢复 PostgreSQL”通常有几种含义,下面按常见场景给你说明,你可以对号入座。


一、PostgreSQL 服务无法启动(恢复运行)

1. 查看服务状态

systemctl status postgresql

2. 启动 / 重启服务

systemctl start postgresql
systemctl enable postgresql   # 开机自启

3. 查看错误日志

journalctl -u postgresql
# 或
cat /var/lib/pgsql/data/log/*.log

常见问题:

  • 数据目录权限不对(属主必须是 postgres)
  • 端口被占用
  • 配置文件错误(postgresql.conf)

二、从备份恢复数据库(数据恢复)

1. 使用 pg_dump 备份恢复

如果你有 .sql 备份:

su - postgres
psql dbname < backup.sql

或新建数据库再恢复:

createdb newdb
psql newdb < backup.sql

2. 使用 pg_dump 的自定义格式恢复

pg_restore -d dbname backup.dump

三、恢复整个数据目录(物理恢复)

适用于:

  • 磁盘损坏
  • 误删数据目录
  • 从另一台服务器迁移

步骤:

  1. 停止 PostgreSQL
systemctl stop postgresql
  1. 恢复数据目录
rm -rf /var/lib/pgsql/data
cp -r /backup/pgdata /var/lib/pgsql/data
chown -R postgres:postgres /var/lib/pgsql/data
  1. 启动服务
systemctl start postgresql

⚠️ 物理恢复必须 PostgreSQL 大版本一致


四、误删表 / 数据(无备份)

基本无法恢复,除非:

  • 有 WAL 归档
  • 使用了 PITR(时间点恢复)

如果有 WAL:

restore_command = 'cp /archive/%f %p'
recovery_target_time = '2025-01-01 10:00:00'

五、重装 PostgreSQL(最后手段)

yum remove postgresql*
yum install postgresql-server postgresql-contrib
postgresql-setup initdb
systemctl start postgresql

你可以告诉我:

  • PostgreSQL 版本(如 12 / 13 / 15)
  • CentOS 版本(7 / 8 / Stream)
  • 是 服务起不来 还是 数据丢了

我可以给你更精确的命令。

0 踩