PostgreSQL逻辑备份-pg_dump

1.pg_dump备份恢复

pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致
性的备份, 它不会阻塞其他用户对数据库的访问 。
一致性备份是 pg_dump 开始运行时,给数据库打了一个快照,且在 pg_dump 运行过程
中发生的更新将不会被备份。
pg_dump 只备份单个数据库,不能备份数据库公共的全局对象(例如角色和表空间)
提示 :将执行 pg_dump/pg_restore 的客户端放在尽可能靠近 源和目标 数据库的位置,
以避免因网络延迟不良而导致的性能问题。
2.pg_dump常用参数
-h host,指定数据库主机名,或者 IP 
-p port,指定端口号 
-U user,指定连接使用的用户名 
-W,按提示输入密码 
dbname,指定连接的数据库名称,实际上也是要备份的数据库名称。 
-f,--file:输出到指定文件中 
-F,--format=c|d|t|p: 
 c 为自定义格式,也是二进制格式,压缩存储,只能使用 pg_restore 来还原, 可
以指定还原的表, 编辑 TOC 文件, 定制还原的顺序, 表, 索引等。 
 d 为目录 
 t 表示输出为 tar 包 
 p 为纯文本 SQL,大库不推荐; 
-j,--jobs=num:指定并行导出的并行度 
-a,--data-only:只导出数据,不导出表结构 
-c,--clean:是否生成清理该数据库对象的语句,比如 drop table 
-C,--create:是否输出一条创建数据库语句 
-n,--schema:只转存匹配 schema 的模式内容 
-N,--exclude-scheam:不转存匹配 schema 的模式内容 
-O,--no-owner,不设置导出对象的所有权 
-s,--schema-only:只导致对象定义模式,不导出数据 
-t,--table:只转存匹配到的表,视图,序列,可以使用多个-t 匹配多个表 
-T,--exclude-table:不转存匹配到的表。 
--inserts:使用 insert 命令形式导出数据,这种方式比默认的 copy 方式慢很多,但是可
用于将数据导入到非 PostgreSQL 数据库。 
--column-inserts:导出的数据,有显式列名 

3.备份

3.1指定库备份

1.导出sql文件

-- insert 命令形式导出库的数据 
pg_dump -h 127.0.0.1 -U postgres -p 5432 -W testdb --inserts > testdb.sql 
pg_dump 
<think>好的,我现在需要解决用户在使用pg_dump时遇到的“invalid option -- o”错误。用户提供的引用中有关于不同工具的使用示例,比如gs_dumppg_dump的不同选项,这可能是一个关键点。首先,我得确认用户使用的命令是否存在拼写错误或选项错误。 用户提到错误是无效的选项“-- o”,看起来像是命令行中的选项格式不正确。通常,PostgreSQLpg_dump使用单短横线加字母选项,如-O,或者双短横线加全名选项,比如--no-owner。如果用户输入的是“-o”或“--o”,这可能是错误的,因为pg_dump没有这个选项。比如,引用[2]中使用的选项是--format=c,而引用[5]中的gs_dump用了-T,这说明不同工具可能有不同的选项。 接下来,我需要检查用户可能输入的命令。例如,用户是否错误地使用了“-o”而不是正确的选项?比如,正确的排除所有者选项是-O(大写O),而用户可能误输入为小写o。或者用户是否混淆了不同工具,比如gs_dump(可能是高斯数据库的导出工具)和pg_dump,两者的选项可能不同。例如,引用[5]中的gs_dump使用了-T,而pg_dump中的相同功能可能是--exclude-table。 另外,引用[3]中的例子使用了-O选项,可能代表“no-owner”,而如果用户在命令中错误地输入了“-o”而不是“-O”,就会导致这个错误。所以需要检查用户命令中的选项是否正确,是否大小写错误或者拼写错误。 解决方案方面,应该指导用户检查选项的正确性,确认使用pg_dump而非其他工具,并参考正确的文档。例如,建议用户使用pg_dump --help查看可用选项,或者参考PostgreSQL官方文档。同时,如果用户原本想使用-O(不保存所有者信息),则需要确保正确的大写字母。如果用户混淆了工具,比如误用了gs_dump的选项到pg_dump中,也需要指出这点。</think>在使用 `pg_dump` 时遇到 `invalid option -- o` 错误,通常是由于命令行选项格式错误或使用了不支持的选项。以下是逐步解决方案: ### 1. **检查选项语法** `pg_dump` 的选项需遵循以下规则: - **短选项**:单短横线 `-` + 单个字母(例如 `-O`)。 - **长选项**:双短横线 `--` + 全名(例如 `--no-owner`)。 **错误示例**: ```bash pg_dump -o database_name # -o 是无效选项 pg_dump --o database_name # --o 是无效选项 ``` **正确用法**: - 若需排除表所有者信息,应使用 `-O`(大写字母 O): ```bash pg_dump -O -Fc -f backup.dump database_name ``` - 若需指定输出格式,使用 `-F` 或 `--format`: ```bash pg_dump -Fc --file=backup.dump database_name ``` ### 2. **确认工具兼容性** 部分数据库工具(如 `gs_dump`)的选项与 `pg_dump` 不同。例如: - `gs_dump` 的 `-T` 用于排除表(引用[^5]),而 `pg_dump` 使用 `--exclude-table`。 - 确保未将其他工具的选项误用于 `pg_dump`。 ### 3. **验证选项是否支持** 通过以下命令查看 `pg_dump` 支持的选项: ```bash pg_dump --help ``` 或参考官方文档[^4]。 ### 4. **常见场景与修正** | 错误意图 | 错误命令示例 | 正确命令示例 | |-------------------------|--------------------|--------------------------------| | 排除所有者信息 | `pg_dump -o ...` | `pg_dump -O ...` | | 指定自定义格式 | `pg_dump --f=c ...`| `pg_dump --format=c ...` | | 导出特定表 | `pg_dump -t table` | `pg_dump --table=table ...` | ### 5. **示例修正** 假设原命令为: ```bash pg_dump -o -f backup.sql mydb ``` 修正后: ```bash pg_dump -O -Fc -f backup.dump mydb # 使用 -O(大写)排除所有者,-Fc 指定自定义格式 ``` ### 引用说明 - `pg_dump` 的二进制格式输出需使用 `-Fc` 或 `--format=custom`(引用[^2])。 - 逻辑备份的原理及工具差异可参考 PostgreSQL 技术内幕文档。 - 避免混淆不同工具的选项,如 `gs_dump` 的 `-T` 与 `pg_dump` 的 `--exclude-table`(引用[^5])。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值