pg_dumpall - 将一个PostgreSQL数据库集簇抽取到一个脚本文件中,(“转储”)一个脚本文件,该脚本文件包含可以用作psql的输入SQL命令来恢复数据库。pg_dumpall还转储对所有数据库公用的全局对象(pg_dump不保存这些对象),也就是说数据库角色和表空间都会被转储。
使用方法
pg_dumpall [connection-option...] [option...]
psql 恢复
pg_dumpall需要多次连接到PostgreSQL服务器(每个数据库一次)。如果你使用口令认证,可能每次都会要求口令。这种情况下使用一个~/.pgpass
会比较方便。
选项说明
-a
--data-only
只转储数据,不转储模式(数据定义)。
-c
--clean
包括那些重建之前清理(删除)数据库对象的SQL命令。
-d
--inserts
把数据当作 INSERT 命令输出(而不是 COPY)。这样将令恢复过程非常缓慢, 这主要 是用于让转储输出可以用于其它非 PostgreSQL 数据库。请注意,如果你重新排列了字段顺 序,那么恢复可能失败。 -D 选项更安全,也更慢。
-D
--column-inserts
--attribute-inserts
把数据以带着明确字段名(INSERT INTO table (column, ...) VALUES ...)的 INSERT 命令形式转储出来。这样会令恢复非常慢,这主要是用于让转储输出可以用于其它非 PostgreSQL 数据库。
-g, --globals-only
只转储全局对象(用户和组),而不转储数据库。
-i
--ignore-version
忽略 pg_dumpall 和数据库服务器之间的版本差别。
pg_dumpall 可以处理来自以前版本的 PostgreSQL 的数据库,但是太老的数据库就不再支持了。如果你需要覆盖版本检查,那么可以使用这个选项(如果 pg_dumpall 失败了,可别说我们没警告你。)
-o
--oids
做为每个表的数据的一部分转储对象标识符(OID)。如果你的应用以某种方式引用了 OID 字段(比如,在外键约束里),那么使用这个选项。否则,不应该使用这个选项。
-O
--no-owner
不输出那些设置对象的所有权,使之匹配原始数据库的命令。缺省时,pg_dumpall 发出 ALTER OWNER 或者 SET SESSION AUTHORIZATION 这样的设置创建模式元素的语句。除非由超级用户运行这些语句(或者拥有脚本中所有这些对象的同一个用户)),否则这些语句会失效。要让一个脚本可以被任何用户恢复,就得声明 -O,不过这样依赖所有对象的所有者都成了这个用户。
-s
--schema-only
只转储模式(数据定义),不转储数据。
-S username
--superuser=username
声明在关闭触发器的时候使用的超级用户名。只有在使用了 --disable-triggers 的时候,这个才相关。(通常,最好不要使用这个选项,而是以超级用户身份启动结果脚本。)
-v
--verbose
声明冗余模式。这样将令 pg_dumpall 在转储文件中输出启动/停止时间,向标准错误打 印进度信息。它也会打开 pg_dump 里面的冗余输出。
-x
--no-privileges
--no-acl
避免转储访问权限(授权/撤销命令)。
-X disable-dollar-quoting
--disable-dollar-quoting
这个选项关闭函数体的美元符号的使用,强制他们使用 SQL 标准的引号语法。
-X disable-triggers
--disable-triggers
这个选项只在创建仅有数据的转储的时候有用。它指示 pg_dumpall 包含在恢复数据的时候,在目标表上临时关闭触发器的命令。如果在你的表上有参考完整检查或者其它你在数据恢复的时候不想调用的触发器,那么请使用这个选项。
目前,为 --disable-triggers 发出的命令必须由超级用户完成。因此,你还应该用 -S 声明一个超级用户名,或者最好是用超级用户身份来启动脚本。
-X use-set-session-authorization
--use-set-session-authorization
这个选项已经废弃了,不过为了和 pg_dump 兼容,仍然保留。输出标准的 SQL SET SESSION AUTHORIZATION 命令而不似乎 OWNER TO 命令。这样令转储更加符合标准,但是如 果转储文件中的对象的历史有些问题,那么可能不能正确恢复。
连接参数
-h host
声明数据库服务器所运行的机器的主机名。 如果数值以斜杠开头,那么就把它用做 Unix 域套接字的目录。缺省是从 PGHOST 环境变量里拿来的(如果设置了),否则使用 Unix 域套接字。
-p port
声明服务器监听的 TCP 端口号或者 Unix 域套接字文件扩展。缺省是 PGPORT 环境变量(如果设置了),或者是编译时的缺省。
-U username
以给定用户身分联接。
-W
强制口令提示。如果服务器需要口令认证,那么这个动作应该自动发生。