pg_dumpall

Name

pg_dumpall — 抽出所有 Postgres 数据库到脚本文件中。

pg_dumpall [-c | --clean] [-h host] [-p port] [-g | --globals-only]

描述

pg_dumpall 是一个用于写出 (“倾倒”)一个数据库集群里的所有 Postgres 数据库到 一个脚本文件的工具.该脚本文件包含可以用于作为 psql 的输入恢复数据库的 SQL 命令. 它通过对数据库集群里的每个数据库调用 实现这个功能. pg_dumpall 还倾倒出所有数据库公用的全局对象. (pg_dump 并不保存这些对象.) 这些信息目前包括数据库用户和组.

因此,pg_dumpall 是备份你的数据库的 一体化解决方案.

因为 pg_dumpall 从所有数据库中读取表, 所以你很可能需要以数据库超级用户的身份联接,这样才能生成完整的倾倒. 同样,你也需要超级用户的权限执行保存下来的脚本,这些才能增加用户和组, 以及创建数据库.

SQL 脚本将写出到标准输出.你应该使用合适的 shell 操作符把它重定向到文件.

选项

pg_dumpall 接受下列命令行参数:

-c, --clean

在创建大纲之前清理(删除)数据库.

-h host

声明数据库服务器所运行的机器的主机名. 如果主机以斜扛开头,那么就把它用做 Unix 域套接字的目录. 缺省是从 PGHOST 环境变量里拿来的(如果设置了), 否则使用 Unix 域套接字.

-p port

服务器监听的端口号. 缺省是 PGPORT 环境变量(如果设置了), 或者是编译时的缺省.

-g, --globals-only

只倾倒全局对象(用户和组),而不倾倒数据库.

任何其它的命令行参数都传递给下层的 调用.这样就可以有效地控制一些输出格式,但是应该避免象 -f-t,和dbname 这样的参数.

用法

倾倒所有数据库:

$ pg_dumpall > db.out

重载这个数据库,

$ psql -f db.out template1
(在这里你和哪个数据库联接并不重要,因为 pg_dumpall 创建的脚本文件将包含合适 的命令用于创建和联接保存的数据库.)

又见

psql. 看看哪里获取可能的错误条件的详细信息.