pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_dumpall — 将一个PostgreSQL数据库集簇转储为脚本文件
pg_dumpall [options...]
pg_dumpall 是一个把集群中所有 PostgreSQL 数据库 写出(“转储”)到一个脚本文件的实用工具。该 脚本文件包含可以用作 psql 的输入来恢复 数据库的 SQL 命令。它通过为集群中的 每个数据库调用 pg_dump 来完成这一 工作。pg_dumpall 还转储 所有数据库共有的 全局对象。 (pg_dump 不保存 这些对象。)这目前包括数据库 用户和组的信息。
因此,pg_dumpall是一个用于备份数据库的一体化 解决方案。但要注意一个局限:它无法转储“大对象”,因为 pg_dump无法把这类对象转储到文本文件中。 如果你的数据库包含大对象,应当使用pg_dump的 某种非文本输出模式来转储它们。
由于pg_dumpall会读取所有数据库中的表,因此通常必须以数据库超级用户身份连接,才能生成完整的转储。另外,要执行保存的脚本,也需要具备超级用户权限,这样才能添加用户和组并创建数据库。
SQL 脚本将写入标准输出。应使用 shell 操作符将其重定向到文件。
pg_dumpall 可能需要连接 PostgreSQL 服务器多次,每次 询问口令。这种情况下有一个 $HOME/.pgpass 文件会很 方便。
下列命令行选项用来控制输出格式。
-c--clean包含用于在重新创建数据库之前清理(删除)数据库的 SQL 命令。
-d--inserts把数据转储为 INSERT 命令(而不是 COPY)。这会使恢复非常 慢,但它让输出更容易移植到其他 RDBMS 软件包。
-D--column-inserts--attribute-inserts把数据转储为带显式 列名的 INSERT 命令( INSERT INTO )。这会使恢复非常慢, 但如果想重新排列列的顺序, 这是必要的。table (column, ...) VALUES ...
-g--globals-only只转储全局对象(用户和组),不转储数据库。
-i--ignore-version忽略 pg_dumpall 与数据库服务器之间的版本 不匹配。
pg_dumpall 可以处理 PostgreSQL 以前版本的数据库,但非常老的 版本不再受支持(目前是 7.0 之前的)。如果 需要越过版本检查,请使用这个 选项(如果 pg_dumpall 随后失败,不要说 没有警告过你)。
-o--oids转储每个 表的对象标识符( OID)。如果你的应用以某种方式 引用 OID 列(例如在 外键约束中),请使用这个选项。 否则不应使用这个选项。
-v--verbose指定详细模式。这会使 pg_dumpall 向标准 错误打印进度消息。
下列命令行选项控制数据库连接参数。
host指定数据库 服务器所在机器的主机名。如果 host 以斜线开头,它被用作 Unix 域套接字的目录。默认值 取自 PGHOST 环境变量(如果 设置了的话),否则尝试 Unix 域套接字连接。
port服务器正在监听的端口号。默认为 PGPORT 环境变量(如果 设置了的话)或编译时 的默认值。
username以给定用户身份连接。
强制提示输入密码。如果服务器要求密码认证,这应当会自动发生。
长选项只在某些平台上可用。
PGHOSTPGPORTPGUSER默认连接参数。
由于pg_dumpall在内部调用pg_dump,因此某些诊断消息会提到pg_dump。
pg_dumpall 需要连接 PostgreSQL 服务器多次。如果配置了 口令认证,它每次都会询问口令。这种情况下, 设置一个口令文件会很方便。
要转储所有数据库:
$pg_dumpall > db.out
要从此文件重新装载数据库,可以使用:
$psql -f db.out template1
(这里连接哪个数据库并不重要,因为 pg_dumpall 创建的脚本文件会包含适当的命令,用于创建并连接到已保存的数据库。)
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。