pg_dumpall 用于将所有数据库转储到一个文本文件中。该文本文件包含可用作恢复数据库的 SQL 命令。它通过为集群中的每个数据库调用 pg_dump 来做到这一点。pg_dumpall 还转储所有数据库共有的全局对象,即数据库角色和表空间(pg_dump 不保存这些对象)。pg_dumpall 调用 pg_dump 来进行备份,备份不同的数据库需要切换连接,无法在不同的数据库之间共享 snapshot,因此只能单库一致。这意味着每个数据库自身是一致的,但是不同数据库的快照并不同步。
1.pgdumpall优缺点
优点: 它转储全局的东西——角色和表空间,这些不能被 pg_dump 转储。 单个命令,你可以获得整个集群的结果 常用来备份全局对象而非全库数据缺点: 转储很大,因为它未压缩 转储非常慢,因为它是顺序完成的,只有一个工作程序 仅恢复部分转储很难 生成 sql 脚本,pg_dumpall 只支持文本格式 它在内部调用 pg_dump建议每天对角色和表空间定义等全局对象进行备份,但不建议每天使用 pg_dumpall 来备份全库数据,因为 pg_dumpall 仅支持导出为 SQL 文本格式,而使用这种庞大的 SQL 文本备份来进行全库级别的数据库恢复是及其耗时的,所以一般只建议使用 pg_dumpall 来备份全局对象而非全库数据。
2.pg_dumpall示例:
2.1导出所有数据库
pg_dumpall > all.sql
-- 排除单个数据库
pg_dumpall --exclude-database='testdb' -f all.sql
-- 排除多个名字相近数据库
pg_dumpall --exclude-database='testdb[12]' -f all.sql
-- 排除多个名字完全不同数据库
pg_dumpall --exclude-database='testdb' --exclude-database='newdb' -f all.sql
2.2导出所有Role和Tablespace
#仅导出 Role:
pg_dumpall