当前位置: 首页 > news >正文

pg恢复

前置说明

  • 恢复前建议:① 确认目标数据库/表不存在(或已备份);② 确保 PostgreSQL 服务正常运行;③ 恢复用户有足够权限(推荐用 postgres 超级用户);
  • 替换命令中的 <> 部分为你的实际环境信息;
  • 若本地连接,可省略 -h 127.0.0.1

一、全库备份的恢复(对应 pg_dumpall 备份)

pg_dumpall 备份的是纯文本SQL文件,恢复需用 psql 命令(而非 pg_restore)。

1. 基础恢复命令

# 全库恢复(覆盖所有数据库、用户、权限)
psql -U <超级用户名> -h <数据库IP> -p <端口> -f <全库备份文件>.sql -v

2. 示例(对应上一轮全库备份示例)

# 恢复 full_backup_20260318.sql 到本地 PostgreSQL 实例
psql -U postgres -h 127.0.0.1 -p 5432 -f /backup/full_backup_20260318.sql -v

关键注意事项

  • ❗ 全库恢复会覆盖实例中所有数据库、用户、角色,务必确认目标环境是测试环境/空实例
  • 若需跳过报错继续恢复(如重复创建用户),加 -v ON_ERROR_CONTINUE=on
    psql -U postgres -h 127.0.0.1 -p 5432 -v ON_ERROR_CONTINUE=on -f /backup/full_backup_20260318.sql
    
  • 恢复时若提示“数据库已存在”:可先删除目标数据库(谨慎!),或用 --clean 参数(备份时加的话,恢复会自动删除旧库)。

二、单库备份的恢复(对应 pg_dump 单库备份)

单库备份分两种格式,恢复命令不同:

场景1:备份为「自定义压缩格式(.dump)」(推荐)

pg_restore 命令(PostgreSQL 专用,支持灵活恢复):

# 1. 先创建空的目标数据库(若备份中不含 CREATE DATABASE 语句)
createdb -U <用户名> -h <数据库IP> -p <端口> <目标数据库名># 2. 恢复自定义格式备份到目标数据库
pg_restore -U <用户名> -h <数据库IP> -p <端口> -d <目标数据库名> -v <单库备份文件>.dump

示例(对应上一轮单库自定义格式备份)

# 步骤1:创建空数据库 mydb(若已存在,先删除:dropdb -U postgres mydb)
createdb -U postgres -h 127.0.0.1 -p 5432 mydb# 步骤2:恢复备份到 mydb
pg_restore -U postgres -h 127.0.0.1 -p 5432 -d mydb -v /backup/mydb_backup_20260318.dump

场景2:备份为「纯文本SQL格式(.sql)」

psql 命令(和全库恢复逻辑一致):

# 恢复纯文本单库备份到目标数据库
psql -U <用户名> -h <数据库IP> -p <端口> -d <目标数据库名> -f <单库备份文件>.sql -v

示例(对应上一轮单库纯文本备份)

# 恢复 mydb_backup_20260318.sql 到 mydb 数据库
psql -U postgres -h 127.0.0.1 -p 5432 -d mydb -f /backup/mydb_backup_20260318.sql -v

单库恢复关键参数(可选)

  • 若备份时加了 -c(恢复前删除旧对象),恢复时会自动删除目标库中同名表/索引;
  • 并行恢复(提速):加 -j 4(仅兼容自定义格式):
    pg_restore -U postgres -h 127.0.0.1 -p 5432 -d mydb -j 4 -v /backup/mydb_backup.dump
    
  • 仅恢复结构/数据:加 -s(仅结构)/ -a(仅数据):
    # 仅恢复表结构
    pg_restore -U postgres -d mydb -s -v /backup/mydb_backup.dump
    

三、单表备份的恢复(对应 pg_dump 单表备份)

单表恢复同样分格式,核心是指定表名(避免恢复多余数据):

场景1:备份为「自定义压缩格式(.dump)」

# 恢复单表到目标数据库(需确保目标数据库已存在)
pg_restore -U <用户名> -h <数据库IP> -p <端口> -d <目标数据库名> -t <模式.表名> -v <单表备份文件>.dump

示例(对应上一轮单表自定义格式备份)

# 恢复 users 表到 mydb 数据库(public 为默认模式)
pg_restore -U postgres -h 127.0.0.1 -p 5432 -d mydb -t public.users -v /backup/mydb_users_backup.dump

场景2:备份为「纯文本SQL格式(.sql)」

# 恢复单表SQL备份到目标数据库
psql -U <用户名> -h <数据库IP> -p <端口> -d <目标数据库名> -f <单表备份文件>.sql -v

示例(对应上一轮单表纯文本数据备份)

# 恢复 orders 表的数据到 mydb 数据库
psql -U postgres -h 127.0.0.1 -p 5432 -d mydb -f /backup/mydb_orders_data.sql -v

单表恢复关键注意事项

  • 若恢复时提示“表已存在”:
    1. 先删除旧表(谨慎!):psql -U postgres -d mydb -c "DROP TABLE public.users;"
    2. 或备份时加 -c,恢复时自动删除旧表;
  • 若仅恢复表数据(不含结构):确保目标表结构已存在,且字段/类型完全一致;
  • 表名含特殊字符/大写:-t 参数需用双引号包裹(转义),如 -t "\"UserInfo\""

补充:不同格式恢复命令对比

备份格式 备份命令 恢复命令 核心特点
纯文本SQL pg_dump -F p / pg_dumpall psql -f 备份文件.sql 通用、可编辑,恢复速度较慢
自定义压缩格式 pg_dump -F c pg_restore -d 库名 备份文件.dump 压缩率高、恢复快、支持并行/精准恢复
目录格式 pg_dump -F d pg_restore -d 库名 备份目录 支持并行备份/恢复,适合大库

总结

  1. 全库恢复:用 psql -f 备份文件.sql,需超级用户,谨慎覆盖现有数据;
  2. 单库恢复:自定义格式用 pg_restore -d 库名 备份文件.dump(推荐),纯文本用 psql -d 库名 -f 备份文件.sql
  3. 单表恢复:自定义格式加 -t 模式.表名 精准恢复,纯文本直接用 psql 执行SQL文件。

恢复后建议验证:① 查看数据库/表是否存在;② 抽查数据条数(如 SELECT COUNT(*) FROM users;),确保恢复完整。

http://www.jsqmd.com/news/495536/

相关文章:

  • 虚幻引擎5编辑器界面全解析:从菜单栏到细节面板的保姆级指南
  • 用pyGAM搞定乳腺癌分类:从数据加载到模型调优全流程
  • 如何让技术图表绘制效率提升10倍?智能绘图工具赋能开发者与架构师
  • 2026年 温州宣传片拍摄制作推荐榜单:专业脚本策划、创意剪辑与视觉呈现一站式服务优选 - 品牌企业推荐师(官方)
  • Quartus开发中的关键文件格式解析与应用指南
  • NB-IoT物联网卡完整使用指南:从选卡到MQTT云端通信(2023最新版)
  • 实战指南:基于快马AI生成动态绑定文章数据的jiathis分享页
  • vue for cesium-初学记录-修改工具栏中鼠标放置文字提示
  • 【粉丝福利社】扣子(Coze) Skills+OpenClaw 实战:零基础玩转AI智能体
  • git复制指定提交到其他分支
  • 华为“导师”到地平线“HSD缔造者”:苏箐和他无处安放的清醒
  • 伏羲天气预报GPU算力适配:A10/A100显存占用与batch size最优配置表
  • 加油卡线上回收全流程解析:一分钟学会回收技巧 - 团团收购物卡回收
  • Nano-Banana与LaTeX集成:学术论文图表自动生成方案
  • PHP代码调试(vscode+xdebug+phpstudy)
  • 花生壳内网穿透实战:6元体验版搭建可外网访问的网站服务器
  • 计算机毕业设计springboot学校实验设备管理系统 基于SpringBoot的校园实验仪器全生命周期管理系统 基于SpringBoot的智慧实验室设备运维服务平台
  • SQL 基础面试题(第三天)
  • Jetson Orin Nano(5): 升级系统
  • 霜儿-汉服-造相Z-Turbo代码实例:Python调用Xinference API生成江南庭院古风写真
  • 【IEEE出版、EI稳定检索】2026年第三届先进机器人,自动化工程与机器学习国际会议(ARAEML 2026)
  • Spring Cloud Java后端面试题精选 - Day 9
  • Qwen3-TTS-Tokenizer-12Hz实战分享:如何将音频高效压缩为离散tokens
  • StructBERT文本相似度WebUI:零基础3分钟上手,轻松判断句子相似度
  • GPEN在AI内容生产中的应用:Stable Diffusion出图后人脸精修流程
  • Deliberate模型全解析:从价值定位到效能突破的实践指南
  • 三轴CNC自动编程入门实用指南:附靠谱厂家工具推荐
  • MiniCPM-o-4.5-nvidia-FlagOS生产环境:GPU资源隔离与多租户图文服务调度方案
  • Phi-3-Mini-128K多轮对话效果深度评测:上下文保持与逻辑一致性
  • 算法专题笔记------一篇讲明白 LeetCode三数之和与四数之和