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

PostgreSQL数据库备份

文章目录

  • pg_dump 和 pg_dumpall
    • 使用 `pg_dump` 备份单个数据库
        • 示例
    • 使用 `pg_dumpall` 备份整个数据库集群
        • 基本用法
    • 恢复备份
        • 恢复 `pg_dump` 备份
        • 恢复 `pg_dumpall` 备份
  • Tips

pg_dump 和 pg_dumpall

在 PostgreSQL 中,pg_dump 和 pg_dumpall 是两个常用的备份工具,分别用于逻辑备份单个数据库和整个数据库集群。

检查pg_dumppg_dumpall命令是否可用

su - postgres
pg_dump --version
pg_dumpall --version

在这里插入图片描述


使用 pg_dump 备份单个数据库

pg_dump -U <用户名> -h <主机名> -p <端口号> -F <格式> -f <输出文件路径> <数据库名>

参数:

  • -U:指定数据库用户名。
  • -h:指定数据库主机地址(默认 localhost)。
  • -p:指定数据库端口(默认 5432)。
  • -F:指定备份格式:
    • plain(默认):生成 SQL 脚本文件。
    • c:自定义格式(支持压缩,需用 pg_restore 恢复)。
    • d:目录格式(支持并行备份)。
    • t:tar 格式。
  • -f:指定输出文件路径。
  • --schema-only:仅备份表结构(不包含数据)。
  • --data-only:仅备份数据(不包含表结构)。
  • -t <表名>:备份特定表。
  • -j <并行任务数>:并行备份(适用于大数据库)。
示例
  1. 备份整个数据库为 SQL 文件:

    pg_dump -U postgres -h localhost -p 5432 -F p -f /path/to/backup.sql mydb
    
    • -F p 表示输出为普通 SQL 文件。
    • mydb 是要备份的数据库名。
  2. 备份整个数据库为自定义格式(支持压缩):

    pg_dump -U postgres -h localhost -p 5432 -F c -f /path/to/backup.custom mydb
    
    • -F c 表示输出为自定义格式(需用 pg_restore 恢复)。
  3. 备份特定表:

    pg_dump -U postgres -h localhost -p 5432 -F p -t users -f /path/to/users_backup.sql mydb
    
    • -t users 表示仅备份 users 表。
  4. 仅备份表结构:

    pg_dump -U postgres -h localhost -p 5432 --schema-only -f /path/to/schema.sql mydb
    
  5. 仅备份数据(不包含表结构):

    pg_dump -U postgres -h localhost -p 5432 --data-only -f /path/to/data.sql mydb
    

使用 pg_dumpall 备份整个数据库集群

基本用法

pg_dumpall 用于备份整个 PostgreSQL 集群,包括所有数据库、角色(用户)、表空间等全局对象。

命令格式:

pg_dumpall -U <用户名> -h <主机名> -p <端口号> -f <输出文件路径> [选项]

参数:

  • -g:仅备份全局对象(角色、表空间等)。
  • -c:在备份中包含删除数据库的命令(用于恢复时清理旧数据)。
  • -v:启用详细模式(显示备份过程)。

示例

  1. 备份整个集群:

    pg_dumpall -U postgres -h localhost -p 5432 -f /path/to/cluster_backup.sql
    
    • 生成的 SQL 文件包含所有数据库、角色和表空间。
  2. 仅备份全局对象(角色、表空间):

    pg_dumpall -U postgres -h localhost -p 5432 -g -f /path/to/globals.sql
    
  3. 备份整个集群并包含清理命令:

    pg_dumpall -U postgres -h localhost -p 5432 -c -f /path/to/cluster_backup.sql
    

恢复备份

恢复 pg_dump 备份
  • SQL 文件恢复:

    psql -U <用户名> -h <主机名> -d <目标数据库> -f <备份文件路径>
    

    示例:

    psql -U postgres -h localhost -d mydb -f /path/to/backup.sql
    
  • 自定义格式恢复:

    pg_restore -U <用户名> -h <主机名> -d <目标数据库> <备份文件路径>
    

    示例:

    pg_restore -U postgres -h localhost -d mydb /path/to/backup.custom
    
恢复 pg_dumpall 备份
  • 恢复整个集群备份:

    psql -U postgres -h localhost -d postgres -f /path/to/cluster_backup.sql
    
    • 需以 postgres 用户连接到默认数据库(如 postgres),因为恢复过程中会创建其他数据库。
  • 恢复全局对象备份:

    psql -U postgres -h localhost -d postgres -f /path/to/globals.sql
    

Tips

  1. 权限要求:
    • pg_dump 需要对目标数据库有读取权限。
    • pg_dumpall 需要超级用户权限(以备份角色和表空间)。
  2. 备份格式选择:
    • 如果需要灵活的恢复选项(如选择性恢复表),建议使用自定义格式(-F c)。
    • 如果需要快速恢复,SQL 文件可能更直接。
  3. 并行备份:
    • 对大型数据库,使用 -j <并行任务数> 可加速备份(需 PostgreSQL 12+)。
http://www.xdnf.cn/news/10662.html

相关文章:

  • 【Oracle】视图
  • 3. 简述node.js特性与底层原理
  • 基于Halcon深度学习之分类
  • SpringBoot系列之RabbitMQ 实现订单超时未支付自动关闭功能
  • AI+3D 视觉重塑塑料袋拆垛新范式:迁移科技解锁工业自动化新高度
  • Neo4j 数据导入:原理、技术、技巧与最佳实践
  • 深入理解Android进程间通信机制
  • uniapp 开发企业微信小程序,如何区别生产环境和测试环境?来处理不同的服务请求
  • SOC-ESP32S3部分:28-BLE低功耗蓝牙
  • Rust 学习笔记:使用自定义命令扩展 Cargo
  • 8.RV1126-OPENCV 视频中添加LOGO
  • 鸿蒙生态再添翼:身份证银行卡识别引领智能识别技术新篇章
  • Python数据可视化科技图表绘制系列教程(一)
  • 20250603在荣品的PRO-RK3566开发板的Android13下的命令行查看RK3566的温度
  • MS1023/MS1224——10MHz 到 80MHz、10:1 LVDS 并串转换器(串化器)/串并转换器(解串器)
  • 深度解析 Qt 最顶层类 QObject:继承关系与内存生命周期管理
  • ERP、OA、CRM三个企业管理软件的区别与联系
  • # [特殊字符] Unity UI 性能优化终极指南 — LayoutGroup篇
  • 微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频
  • 03.搭建K8S集群
  • 【计算机网络 第8版】谢希仁编著 第六章应用层 题型总结1 编码
  • 使用glide 同步获取图片
  • 5.Nginx+Tomcat负载均衡群集
  • SQL思路解析:窗口滑动的应用
  • 结合 AI 生成 mermaid、plantuml 等图表
  • 【开源工具】超全Emoji工具箱开发实战:Python+PyQt5打造跨平台表情管理神器
  • Hadoop复习(九)
  • 让AI弹琴作曲不再是梦:Python+深度学习玩转自动化音乐创作
  • HA: Wordy靶场
  • Apache Doris 在数据仓库中的作用与应用实践