温馨提示×

centos如何恢复postgresql备份

小樊
49
2026-10-03 10:46:40
栏目: 云计算

在 CentOS 上恢复 PostgreSQL 备份,通常取决于你当初备份的方式。下面按常见场景说明。


一、使用 pg_dump 生成的 SQL 备份恢复

1. 准备环境

确保已安装 PostgreSQL 客户端:

yum install -y postgresql

切换到 postgres 用户(推荐):

su - postgres

2. 创建数据库(如果不存在)

createdb dbname

3. 恢复 SQL 备份

psql dbname < /path/to/backup.sql

如果是 .tar 格式(由 pg_dump -F t 生成):

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

二、使用 pg_dump 自定义格式(.dump)

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

如需要重建数据库:

pg_restore -C -U postgres -d postgres /path/to/backup.dump

三、使用 pg_basebackup(物理备份)恢复

适用于 全库级恢复。

1. 停止 PostgreSQL

systemctl stop postgresql

2. 清空数据目录

rm -rf /var/lib/pgsql/12/data/*

(版本号按实际调整,如 13、14)

3. 恢复备份

pg_basebackup -D /var/lib/pgsql/12/data -U postgres -h localhost

或从已有备份目录复制:

cp -r /backup/pgdata/* /var/lib/pgsql/12/data/

4. 修复权限并启动

chown -R postgres:postgres /var/lib/pgsql/12/data
systemctl start postgresql

四、使用 pg_restore 常用参数

pg_restore -U postgres -d dbname --clean --if-exists backup.dump
  • --clean:先删除已存在对象
  • --if-exists:避免报错
  • -j 4:并行恢复(大库推荐)

五、常见问题

1. 编码错误

export LANG=en_US.UTF-8

2. 权限不足

确保:

  • 使用 postgres 用户
  • 备份文件对 postgres 可读

3. 版本不一致

PostgreSQL 不支持跨大版本恢复物理备份
(如 12 → 14 不行,需 dump/restore)


如果你能提供:

  • PostgreSQL 版本
  • 备份方式(SQL / dump / basebackup)
  • 报错信息

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

0 踩