PostgreSQL pg_dumpall

1 pg_dumpall 命令语法

pg_dumpall --help

pg_dumpall可以将一个PostgreSQL数据库集群中的所有数据都提取到一个SQL脚本文件中。 用
法:
pg_dumpall [选项]...

通用选项:
-f, --file=FILENAME                输出文件名
-v, --verbose                      详细模式
-V, --version                      输出版本信息,然后退出
--lock-wait-timeout=TIMEOUT        等待表锁超时后操作失败
-?, --help                         显示此帮助信息并退出

控制输出内容的选项:
-a, --data-only                    仅转储数据,而不转储schema
-c, --clean                        重新创建数据库之前清除(删除)数据库
-g, --globals-only                 仅转储全局对象,而不转储数据库
-o, --oids                         在转储中包含OID
-O, --no-owner                     以纯文本格式跳过对象所有权的恢复
-r, --roles-only                   仅转储角色,而不转储数据库和表空间
-s, --schema-only                  仅转储schema,而不转储数据
-S, --superuser=NAME               要在转储中使用的超级用户名
-t, --tablespaces-only             仅转储表空间,而不转储数据库和角色
-x, --no-privileges                不转储特权(grant/revoke)
--binary-upgrade                   仅供升级工具使用
--column-inserts                   以带有列名的INSERT命令的形式转储数据
--disable-dollar-quoting           禁用美元(符号)引号,而是使用SQL标准引号
--disable-triggers                 在仅恢复数据期间禁用触发器
--inserts                          以INSERT命令(而非COPY命令)的形式转储数据
--no-publications                  不导出逻辑复制发布端数据源定义 ➊
--no-security-labels               不转储安全标签的分配
--no-subscriptions                 不导出逻辑复制订阅端的数据订阅定义 ➋
--no-sync                          不等待变更安全写入磁盘 ➌
--no-security-labels               不转储安全标签分配
--no-tablespaces                   不转储表空间分配
--no-unlogged-table-data           不转储不记录WAL日志的表的数据
--no-role-passwords                不转储角色的密码 ➍
--quote-all-identifiers            所有标识符加引号,即使不是关键字也加
--use-set-session-authorization    使用SET SESSION AUTHORIZATION命令代替ALTER OWNER
                                   命令来设置所有权

连接选项:
-d, --dbname=CONNSTR               使用连接连接串连接
-h, --host=主机名                  数据库服务器主机或套接字目录
-l, --database=DBNAME              替代默认数据库
-p, --port=端口号                  数据库服务器端口号
-U, --username=名称                作为指定数据库用户连接
-w, --no-password                  永远不提示输入密码
-W, --password                     强制要求输入密码(应该自动发生)
--role=ROLENAME                    在转储之前执行SET ROLE命令

如果未使用-f/--file,则会将SQL脚本写到标准输出中。

2 示例:

pg_dumpall 只能备份为 sql 文件,所以不建议在大型数据库上进行使用.

  1. 备份实例中所有数据库和设置
pg_dumpall -cf all.backup
  1. 只备份role 和表空间.
pg_dumpall -cgf all.backup
  1. 备份role .
pg_dumpall -crf all.backup