首页/数据/备份与容灾速查/PostgreSQL pg_dumpall 全局备份
数据库与云备份56 条

PostgreSQL pg_dumpall 全局备份

实例级导出工具:逐库导出并额外包含角色、表空间等全局对象;--globals-only 常用于单独备份角色与权限。

备份与容灾速查数据更新于 2026-10-13

PostgreSQL pg_dumpall 全局备份

实例级导出工具:依次连接每个库导出内容,并在导出流开头写入角色、表空间这类全局对象,因此单个库的 pg_dump 文件里没有的那部分信息由它补齐。实践中常见的组合是把全局对象与逐库导出分开做,恢复时先建角色与权限,再恢复各库数据,否则会出现对象属主不存在的报错。

基本信息

适用平台PostgreSQL(版本与客户端版本建议匹配)
权限要求需要能读取所有目标库的账号,通常是超级用户
产物形式纯 SQL 文本,可直接查看与编辑
效率特点串行逐库导出,大实例速度明显慢于并行方案

典型使用场景

  • 实例迁移:把整套库连同角色一起搬到新实例
  • 权限留档:单独导出角色与权限配置,作为配置备份
  • 小实例日常备份:库数量不多时最简单的一把梭方案
  • 验收核对的参照:用纯 SQL 产物人工检查对象定义
  • 跨版本升级的辅助手段:小库用逻辑导出与导入完成升级

用法

用法
# 仅导出全局对象(角色、表空间等),很轻量,建议每日执行
pg_dumpall -U postgres --globals-only > /backup/pg/globals-2026-10-12.sql
# 全实例导出(含所有库的数据与全局对象)
pg_dumpall -U postgres > /backup/pg/all-$(date +%F).sql
# 恢复:先建角色与权限,再恢复数据
psql -U postgres -f /backup/pg/globals-2026-10-12.sql
psql -U postgres -f /backup/pg/all-2026-10-12.sql
# 校验产物是否包含关键全局语句
grep -c 'CREATE ROLE' /backup/pg/globals-2026-10-12.sql

用法对比

方式覆盖范围适用场景
--globals-only角色、表空间等全局对象与逐库 pg_dump 组合使用
全实例导出所有库内容加全局对象小实例、整体迁移
pg_dump 单库单个库的对象与数据大实例并行备份的主力
pg_dump -Fc 自定义格式单库,压缩且可并行恢复需要灵活恢复单表时首选
恢复顺序是先全局对象后数据:globals 里包含角色与权限,缺少它会出现对象属主角色不存在的异常。产物里含角色口令哈希,文件权限与流转要按敏感文件管理。
大实例建议用 pg_dump --format=custom 配合 -j 并行恢复,或使用 PostgreSQL 17 起提供的并行导出能力,pg_dumpall 本身是串行的。

易错点

  • 只恢复单库 dump 而不恢复 globals:对象属主角色不存在,导入大量报错
  • 产物含角色口令哈希:文件权限与传输渠道未按敏感数据处理
  • 大实例用全实例导出:串行执行耗时过长,备份窗口不够
  • 版本不匹配:高版本客户端导出的产物在低版本服务端可能无法导入

数据来源与参考

  • PostgreSQL 文档(pg_dumpall)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌