温馨提示×

centos怎么恢postgresql库

小樊
46
2026-10-12 05:33:19
栏目: 云计算

在 CentOS 上“恢复 PostgreSQL 库”通常分几种情况,我按最常见场景给你说明,你可以对号入座。


一、从 SQL 备份文件恢复(最常用)

如果你之前用 pg_dump 导出的 .sql 文件:

1. 创建数据库(如果还没有)

su - postgres
createdb dbname

2. 恢复数据库

psql dbname < /path/to/backup.sql

如果是 自定义格式备份(*.dump):

pg_restore -d dbname /path/to/backup.dump

二、从物理备份恢复(如 PGDATA 目录)

如果你有 整个 PostgreSQL 数据目录备份(如 /var/lib/pgsql/12/data):

步骤:

  1. 停止 PostgreSQL
systemctl stop postgresql
  1. 备份并替换数据目录
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
  1. 启动 PostgreSQL
systemctl start postgresql

⚠️ 注意版本必须一致(如 12 → 12)


三、误删数据 / 表恢复

情况 A:刚删,还未 VACUUM

可尝试:

  • 从备份恢复
  • 使用 pg_resetwal(高风险,不推荐生产)

情况 B:有 WAL 归档 + 基础备份

使用 PITR(时间点恢复)


四、Docker 中的 PostgreSQL(CentOS)

docker exec -i pg_container psql -U postgres dbname < backup.sql

五、常见错误排查

问题 解决
role 不存在 先创建 role
编码错误 创建库时指定 encoding
权限不足 用 postgres 用户执行

如果你能告诉我:

  • PostgreSQL 版本
  • 备份类型(SQL / dump / 物理目录)
  • 是单库还是整实例

我可以直接给你精确命令。

0 踩