PostgreSQL数据库备份的几种实现方法

 更新时间:2025年06月15日 11:13:35   作者:雪花凌落的盛夏  
本文主要介绍了PostgreSQL数据库备份的几种实现方法,包括pg_dump和pg_dumpall是PostgreSQL备份工具,前者备份单数据库,后者备份整个集群,感兴趣的可以了解一下

pg_dump 和 pg_dumpall

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

检查pg_dump 和 pg_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 <并行任务数>:并行备份(适用于大数据库)。

示例

备份整个数据库为 SQL 文件:

pg_dump -U postgres -h localhost -p 5432 -F p -f /path/to/backup.sql mydb
  • -F p 表示输出为普通 SQL 文件。
  • mydb 是要备份的数据库名。

备份整个数据库为自定义格式(支持压缩):

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

备份特定表:

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

仅备份表结构:

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

仅备份数据(不包含表结构):

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:启用详细模式(显示备份过程)。

示例

备份整个集群:

pg_dumpall -U postgres -h localhost -p 5432 -f /path/to/cluster_backup.sql
  • 生成的 SQL 文件包含所有数据库、角色和表空间。

仅备份全局对象(角色、表空间):

pg_dumpall -U postgres -h localhost -p 5432 -g -f /path/to/globals.sql

备份整个集群并包含清理命令:

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

权限要求:

  • pg_dump 需要对目标数据库有读取权限。
  • pg_dumpall 需要超级用户权限(以备份角色和表空间)。

备份格式选择:

  • 如果需要灵活的恢复选项(如选择性恢复表),建议使用自定义格式(-F c)。
  • 如果需要快速恢复,SQL 文件可能更直接。

并行备份:

  • 对大型数据库,使用 -j <并行任务数> 可加速备份(需 PostgreSQL 12+)

到此这篇关于PostgreSQL数据库备份的几种实现方法的文章就介绍到这了,更多相关PostgreSQL数据库备份内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • PostgreSQL中pageinspect 的扩展使用小结

    PostgreSQL中pageinspect 的扩展使用小结

    pageinspect是PostgreSQL的底层扩展,允许数据库管理员和开发者直接检查数据库页面的内部结构,需超级用户权限,适用于9.6+版本,感兴趣的可以了解一下
    2025-06-06
  • postgresql 实现将字段为空的值替换为指定值

    postgresql 实现将字段为空的值替换为指定值

    这篇文章主要介绍了postgresql 实现将字段为空的值替换为指定值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql表死锁问题的排查方式

    postgresql表死锁问题的排查方式

    这篇文章主要介绍了postgresql表死锁问题的排查方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL实现按年、月、日、周、时、分、秒的分组统计

    PostgreSQL实现按年、月、日、周、时、分、秒的分组统计

    这篇文章介绍了PostgreSQL实现按年、月、日、周、时、分、秒分组统计的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • PostgreSQL教程(六):函数和操作符详解(2)

    PostgreSQL教程(六):函数和操作符详解(2)

    这篇文章主要介绍了PostgreSQL教程(六):函数和操作符详解(2),本文讲解了模式匹配、数据类型格式化函数、时间/日期函数和操作符等内容,需要的朋友可以参考下
    2015-05-05
  • 实操解决Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错的问题

    实操解决Navicat连接postgresql时出现‘datlastsysoid does not&

    这篇文章主要介绍了实操解决Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错的问题,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-12-12
  • PostgreSQL使用COPY协议高效批量数据写入的实战指南

    PostgreSQL使用COPY协议高效批量数据写入的实战指南

    这篇文章主要介绍了PostgreSQL的COPY协议,这是一种高效批量数据导入导出的二进制协议,适用于需要高效写入大量数据的场景,COPY协议通过流式处理、事务安全和无参数限制等优势,显著提升了数据写入性能,并结合事务管理保证了数据一致性,需要的朋友可以参考下
    2025-11-11
  • PostgreSQL实时查看数据库实例正在执行的SQL语句实例详解

    PostgreSQL实时查看数据库实例正在执行的SQL语句实例详解

    在任何数据库中,分析和优化SQL的执行,最重要的工作就是执行计划的解读,而说到执行计划得先了解postgresql的查询执行过程,下面这篇文章主要给大家介绍了关于PostgreSQL实时查看数据库实例正在执行的SQL语句的相关资料,需要的朋友可以参考下
    2023-01-01
  • 在postgresql数据库中创建只读用户的操作

    在postgresql数据库中创建只读用户的操作

    这篇文章主要介绍了在postgresql数据库中创建只读用户的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 常用 PostgreSQL 数据恢复方案及使用示例

    常用 PostgreSQL 数据恢复方案及使用示例

    这篇文章主要介绍了常用 PostgreSQL 数据恢复方案概览,数据丢失通常是由 DDL 与 DML 两种操作引起,由于在操作系统中表文件已经不存在,所以只能采用恢复磁盘的方法进行数据恢复,需要的朋友可以参考下
    2022-01-01

最新评论