pg_dumpall

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: pg_dumpall从所有数据库中读取表,所以你很可能需要以一个数据库超级用户的身份连接以便生成完整的转储。同样,你也需要超级用户特权执行保存下来的脚本,这样才能增加角色和组以及创建数据库。

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

强制口令提示。如果服务器需要口令认证,那么这个动作应该自动发生。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
SQL 关系型数据库 数据库连接
`pg_dump` 和 `pg_restore`
`pg_dump` 和 `pg_restore`
66 4
|
9月前
|
JSON 关系型数据库 数据安全/隐私保护
PG
MYSQL VS PG
319 0
|
关系型数据库
pg为什么...?
pg为什么...?
27 0
|
SQL 数据库 关系型数据库
pg_dump 详解/使用举例
pg_dump是一个用于备份PostgreSQL数据库的实用工具。即使当前数据库正在使用,也能够生成一致性的备份,且不会阻塞其他用户访问数据库(包括读、写) pg_dump只能备份一个数据库。如果要备份Cluster中数据库共有的全局对象,例如角色和表空间,需要使用pg_dumpall。
11333 0
|
关系型数据库 数据库连接 数据库
pg_dumpall
补充
162 0
|
关系型数据库 PostgreSQL Perl
|
关系型数据库
PG config9.4
FILE LOCATIONS data_directory ='/pghs/pg${port}/data'hba_file ='/pghs/pg${port}/data/pg_hba.
871 0
|
关系型数据库 数据库 PostgreSQL
Postgresql pg_dump&pg_restore用法
PostgreSQL提供的一个工具pg_dump,逻辑导出数据,生成sql文件或其他格式文件,pg_dump是一个客户端工具,可以远程或本地导出逻辑数据,恢复数据至导出时间点。pg_dump 一次只转储一个数据库, 并且不会转储有关角色或表空间的信息 (因为那些是群集范围而不是每个数据库)。
11360 0