在 CentOS 上恢复 PostgreSQL 备份,通常取决于你当初备份的方式。下面按常见场景说明。
pg_dump 生成的 SQL 备份恢复确保已安装 PostgreSQL 客户端:
yum install -y postgresql
切换到 postgres 用户(推荐):
su - postgres
createdb dbname
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(物理备份)恢复适用于 全库级恢复。
systemctl stop postgresql
rm -rf /var/lib/pgsql/12/data/*
(版本号按实际调整,如 13、14)
pg_basebackup -D /var/lib/pgsql/12/data -U postgres -h localhost
或从已有备份目录复制:
cp -r /backup/pgdata/* /var/lib/pgsql/12/data/
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:并行恢复(大库推荐)export LANG=en_US.UTF-8
确保:
postgres 用户PostgreSQL 不支持跨大版本恢复物理备份
(如 12 → 14 不行,需 dump/restore)
如果你能提供:
我可以给你更精确的恢复命令。