在 CentOS 上“恢复 PostgreSQL 库”通常分几种情况,我按最常见场景给你说明,你可以对号入座。
如果你之前用 pg_dump 导出的 .sql 文件:
su - postgres
createdb dbname
psql dbname < /path/to/backup.sql
如果是 自定义格式备份(*.dump):
pg_restore -d dbname /path/to/backup.dump
如果你有 整个 PostgreSQL 数据目录备份(如 /var/lib/pgsql/12/data):
systemctl stop postgresql
mv /var/lib/pgsql/12/data /var/lib/pgsql/12/data_bak
cp -r /your/backup/data /var/lib/pgsql/12/data
chown -R postgres:postgres /var/lib/pgsql/12/data
systemctl start postgresql
⚠️ 注意版本必须一致(如 12 → 12)
可尝试:
pg_resetwal(高风险,不推荐生产)使用 PITR(时间点恢复)
docker exec -i pg_container psql -U postgres dbname < backup.sql
| 问题 | 解决 |
|---|---|
| role 不存在 | 先创建 role |
| 编码错误 | 创建库时指定 encoding |
| 权限不足 | 用 postgres 用户执行 |
如果你能告诉我:
我可以直接给你精确命令。