pg_dumpall

pg_dumpall —将 PostgreSQL 数据库集群提取到脚本文件中

Synopsis

pg_dumpall [ connection-option ...] [ option ...]

Description

pg_dumpall 是一个 Util,用于将集群的所有 PostgreSQL 数据库写出(“转储”)到一个脚本文件中。该脚本文件包含可以用作psql的 Importing 以还原数据库的 SQL 命令。它通过为集群中的每个数据库调用pg_dump来实现。 pg_dumpall 还转储所有数据库通用的全局对象。 (pg_dump 不会保存这些对象.)当前包括有关数据库用户和组,表空间以及属性(例如,应用于整个数据库的访问权限)的信息。

由于 pg_dumpall 从所有数据库读取表,因此您很可能必须以数据库超级用户身份连接才能产生完整的转储。同样,您将需要超级用户特权才能执行保存的脚本,以便被允许添加用户和组以及创建数据库。

SQL 脚本将被写入标准输出。使用-f/--file选项或 Shell 运算符将其重定向到文件中。

pg_dumpall 需要多次连接到 PostgreSQL 服务器(每个数据库一次)。如果您使用密码验证,则每次都会要求 Importing 密码。在这种情况下,拥有~/.pgpass文件很方便。有关更多信息,请参见Section 33.15

Options

以下命令行选项控制输出的内容和格式。

当前,必须以超级用户身份执行为--disable-triggers发出的命令。因此,您还应该使用-S指定超级用户名,或者最好小心地以超级用户身份启动生成的脚本。

以下命令行选项控制数据库连接参数。

为了与其他 Client 端应用程序保持一致,该选项称为--dbname,但是由于 pg_dumpall 需要连接到许多数据库,因此连接字符串中的数据库名称将被忽略。使用-l选项可指定用于转储全局对象并发现应转储其他数据库的数据库的名称。

这个选项从来都不是必须的,因为如果服务器要求密码认证,pg_dumpall 将自动提示 Importing 密码。但是,pg_dumpall 将浪费连接尝试,以发现服务器需要密码。在某些情况下,值得 Importing-W以避免额外的连接尝试。

请注意,对于每个要转储的数据库,都会再次出现密码提示。通常,设置~/.pgpass文件比依靠手动密码 Importing 更好。

Environment

与大多数其他 PostgreSQLUtil 一样,该 Util 也使用 libpq 支持的环境变量(请参见Section 33.14)。

Notes

由于 pg_dumpall 内部调用 pg_dump,因此某些诊断消息将引用 pg_dump。

恢复后,明智的做法是在每个数据库上运行ANALYZE,以便优化器具有有用的统计信息。您也可以运行vacuumdb -a -z分析所有数据库。

pg_dumpall 要求所有需要的表空间目录在还原之前都存在。否则,对于非默认位置的数据库,数据库创建将失败。

Examples

要转储所有数据库:

$ pg_dumpall > db.out

要从此文件重新加载数据库,可以使用:

$ psql -f db.out postgres

(在这里连接哪个数据库并不重要,因为 pg_dumpall 创建的脚本文件将包含创建和连接到保存的数据库的适当命令.)

See Also

检查pg_dump以获取有关可能的错误情况的详细信息。

上一章 首页 下一章