PostgreSQL逻辑备份-pg_dumpall

pg_dumpall 用于将所有数据库转储到一个文本文件中。该文本文件包含可用作恢复数据
库的 SQL 命令。它通过为集群中的每个数据库调用 pg_dump 来做到这一点。
pg_dumpall 还转储所有数据库共有的全局对象,即数据库角色和表空间(pg_dump 不
保存这些对象)。
pg_dumpall 调用 pg_dump 来进行备份,备份不同的数据库需要切换连接,无法在不同
的数据库之间共享 snapshot,因此只能单库一致。这意味着每个数据库自身是一致的,
但是不同数据库的快照并不同步。

1.pgdumpall优缺点

 

优点:
它转储全局的东西——角色和表空间,这些不能被 pg_dump 转储。
单个命令,你可以获得整个集群的结果
常用来备份全局对象而非全库数据
缺点:
转储很大,因为它未压缩
转储非常慢,因为它是顺序完成的,只有一个工作程序
仅恢复部分转储很难
生成 sql 脚本,pg_dumpall 只支持文本格式
它在内部调用 pg_dump
        建议每天对角色和表空间定义等全局对象进行备份,但不建议每天使用 pg_dumpall 来备份全库数据,因为 pg_dumpall 仅支持导出为 SQL 文本格式,而使用这种庞大的 SQL 文
本备份来进行全库级别的数据库恢复是及其耗时的,所以一般只建议使用 pg_dumpall 来
备份全局对象而非全库数据。
2.pg_dumpall示例:
2.1导出所有数据库
pg_dumpall > all.sql 

-- 排除单个数据库 
pg_dumpall --exclude-database='testdb' -f all.sql 

-- 排除多个名字相近数据库 
pg_dumpall --exclude-database='testdb[12]' -f all.sql 

-- 排除多个名字完全不同数据库 
pg_dumpall --exclude-database='testdb' --exclude-database='newdb' -f all.sql

2.2导出所有Role和Tablespace

#仅
<think>好的,我现在需要帮助用户了解PostgreSQLpg_dump的使用方法和参数说明。首先,我需要回顾用户提供的引用内容,确保信息准确。用户给出了三个引用,分别涉及pg_dump的基本语法、备份示例,以及与pg_dumpall的区别。 首先,根据引用1,pg_dump的语法结构是:pg_dump [连接选项...] [选项...] [数据库名]。这里需要详细说明连接选项和常用选项。连接选项应该包括主机、端口、用户名等,这在引用2的示例中也有体现,比如-h指定主机,-p指定端口,-U指定用户。 接下来,引用2给出了备份为文本文件的示例,使用重定向或-f选项指定输出文件。同时提到了-v选项显示详细过程。这里需要强调两种输出方式的区别,以及如何选择备份格式(如纯文本、自定义格式、目录格式等)。 引用3提到pg_dump和pg_dumpall的异同,用户可能想知道两者的区别,但当前问题主要关注pg_dump,所以可以在相关问题中提及,或者在回答末尾简要说明,确保内容不偏离主题。 用户需求是了解使用方法及参数说明,因此需要分点列出常用参数,如连接参数、输出控制、备份格式、其他功能等。每个参数需要给出示例,比如-Fc表示自定义格式,-Fd是目录格式,并说明它们的适用场景。 另外,用户可能关心如何恢复备份,虽然问题中没有直接提到,但引用2提到了pg_restore,所以在示例中可以包含恢复命令,帮助用户全面了解流程。例如,使用pg_restore恢复自定义格式的备份。 需要注意避免错误,比如不同格式对应的恢复方式不同。纯SQL可以用psql,而自定义格式必须用pg_restore。同时,权限问题可能需要提到--no-owner和--no-privileges选项。 最后,生成相关问题,引导用户进一步学习,如性能优化、增量备份、加密等,这些问题可以基于常见的使用场景提出,帮助用户深入理解。 总结步骤: 1. 介绍pg_dump的基本作用。 2. 语法结构说明,结合引用1。 3. 常用参数分类:连接选项、输出控制、备份格式、其他功能。 4. 示例命令,包括不同格式的备份和恢复。 5. 注意事项,如权限、恢复方法。 6. 相关问题生成,覆盖参数优化、加密、对比pg_dumpall等。</think>### PostgreSQL pg_dump 使用方法及参数说明 `pg_dump` 是 PostgreSQL 用于逻辑备份的核心工具,可将数据库导出为 SQL 脚本或特定格式的备份文件,便于恢复或迁移[^1]。 --- #### **一、基础语法** ```bash pg_dump [连接选项...] [选项...] [数据库名] ``` - **连接选项**:用于指定数据库连接信息 - `-h` 或 `--host`:数据库主机地址(默认 `localhost`) - `-p` 或 `--port`:数据库端口(默认 `5432`) - `-U` 或 `--username`:连接用户名(默认当前系统用户) - `-W` 或 `--password`:强制提示输入密码 - **常用选项**: - `-f` 或 `--file`:指定输出文件路径(默认输出到标准输出)[^2] - `-F` 或 `--format`:指定备份格式(`plain` 纯文本、`custom` 自定义格式、`directory` 目录格式等) - `-v` 或 `--verbose`:显示详细备份过程 - `-s` 或 `--schema-only`:仅备份表结构(不包含数据) - `-a` 或 `--data-only`:仅备份数据(不包含表结构) - `--no-owner`:忽略对象权限信息(恢复时使用当前用户) - `--no-privileges`:不备份权限配置 --- #### **二、典型用法示例** 1. **备份为纯 SQL 文件**(默认格式): ```bash pg_dump -h 127.0.0.1 -p 5432 -U postgres -v -f db.sql mydatabase ``` 恢复时使用 `psql`: ```bash psql -h 127.0.0.1 -U postgres -d newdb -f db.sql ``` 2. **自定义格式备份**(支持压缩和并行恢复): ```bash pg_dump -Fc -v -f mydb.custom mydatabase ``` 恢复时需用 `pg_restore`: ```bash pg_restore -d newdb mydb.custom ``` 3. **仅备份特定表**: ```bash pg_dump -t 'public.users' -t 'public.orders' mydatabase > tables.sql ``` --- #### **三、注意事项** - 备份时需确保用户对目标数据库有**读取权限**。 - 自定义格式(`-Fc`)备份支持**并行导出/导入**(通过 `-j` 参数)。 - 若需备份全局对象(如角色、表空间),需结合 `pg_dumpall` 使用[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值