pg_dump语法

D:\HighGo DataBase\bin>pg_dump --help
pg_dump 把一个数据库转储为纯文本文件或者是其它格式.


用法:
  pg_dump [选项]... [数据库名字]


一般选项:
  -f, --file=FILENAME          输出文件或目录名
  -F, --format=c|d|t|p         输出文件格式 (定制, 目录, tar)
                               明文 (默认值))
  -j, --jobs=NUM               执行多个并行任务进行备份转储工作
  -v, --verbose                详细模式
  -V, --version                输出版本信息,然后退出
  -Z, --compress=0-9           被压缩格式的压缩级别
  --lock-wait-timeout=TIMEOUT  在等待表锁超时后操作失败
  -?, --help                   显示此帮助, 然后退出


控制输出内容选项:
  -a, --data-only              只转储数据,不包括模式
  -b, --blobs                  在转储中包括大对象
  -c, --clean                  在重新创建之前,先清除(删除)数据库对象
  -C, --create                 在转储中包括命令,以便创建数据库
  -E, --encoding=ENCODING      转储以ENCODING形式编码的数据
  -n, --schema=SCHEMA          只转储指定名称的模式
  -N, --exclude-schema=SCHEMA  不转储已命名的模式
  -o, --oids                   在转储中包括 OID
  -O, --no-owner               在明文格式中, 忽略恢复对象所属者


  -s, --schema-only            只转储模式, 不包括数据
  -S, --superuser=NAME         在明文格式中使用指定的超级用户名
  -t, --table=TABLE            只转储指定名称的表
  -T, --exclude-table=TABLE    不转储指定名称的表
  -x, --no-privileges          不要转储权限 (grant/revoke)
  --binary-upgrade             只能由升级工具使用
  --column-inserts             以带有列名的INSERT命令形式转储数据
  --disable-dollar-quoting     取消美元 (符号) 引号, 使用 SQL 标准引号
  --disable-triggers           在只恢复数据的过程中禁用触发器
  --exclude-table-data=TABLE   不转储指定名称的表中的数据
  --if-exists              当删除对象时使用IF EXISTS
  --inserts                    以INSERT命令,而不是COPY命令的形式转储数据
  --no-security-labels         不转储安全标签的分配
  --no-synchronized-snapshots  在并行工作集中不使用同步快照
  --no-tablespaces             不转储表空间分配信息
  --no-unlogged-table-data     不转储没有日志的表数据
  --quote-all-identifiers      所有标识符加引号,即使不是关键字
  --section=SECTION            备份命名的节 (数据前, 数据, 及 数据后)
  --serializable-deferrable   等到备份可以无异常运行
  --use-set-session-authorization
                               使用 SESSION AUTHORIZATION 命令代替
                ALTER OWNER 命令来设置所有权


联接选项:
  -d, --dbname=DBNAME       对数据库 DBNAME备份
  -h, --host=主机名        数据库服务器的主机名或套接字目录
  -p, --port=端口号        数据库服务器的端口号
  -U, --username=名字      以指定的数据库用户联接
  -w, --no-password        永远不提示输入口令
  -W, --password           强制口令提示 (自动)
  --role=ROLENAME          在转储前运行SET ROLE


如果没有提供数据库名字, 那么使用 PGDATABASE 环境变量
的数值.
<think>我们正在讨论PostgreSQL 14的pg_dump使用指南。根据用户的问题和之前的上下文,用户可能是在进行数据库备份或迁移,并且需要了解pg_dump的具体使用方法。 根据引用[1]和引用[3],pg_dump用于单个数据库的备份,而gs_dump是openGauss的类似工具,但用户明确提到的是PostgreSQL,因此我们专注于pg_dump。 我们将提供以下内容: 1. pg_dump的基本语法和常用选项 2. 备份示例(包括全库备份、仅模式备份、仅数据备份等) 3. 恢复数据库的方法 4. 高级用法(如并行备份、自定义格式备份等) 5. 注意事项 注意:在PostgreSQL中,pg_dump是官方自带的工具,用于备份单个数据库。它不会备份整个数据库集群(比如不会备份角色和表空间,这些需要使用pg_dumpall)。 步骤: 1. 基本命令格式 2. 常用选项解释 3. 备份示例 4. 恢复示例 5. 高级技巧 6. 注意事项 同时,根据引用[2]中的注意事项,我们也要强调权限、空间和WAL归档相关的内容(虽然pg_dump本身不依赖WAL,但完整备份策略可能需要)。 最后,生成相关问题。</think>### PostgreSQL 14 pg_dump 使用指南 `pg_dump` 是 PostgreSQL 的核心备份工具,支持灵活的数据导出策略。以下是 PostgreSQL 14 的完整使用指南: --- #### 一、基础语法与模式 ```bash # 基础语法 pg_dump [选项] [数据库名] > [输出文件] ``` | **模式** | **命令示例** | **用途** | |------------------|-----------------------------------------------------------------------------|-----------------------------| | **SQL 明文备份** | `pg_dump -U postgres mydb > mydb.sql` | 生成可读的 SQL 脚本 | | **自定义格式** | `pg_dump -Fc -U postgres mydb > mydb.dump` | 高效压缩备份(推荐) | | **仅模式** | `pg_dump -s -U postgres mydb > schema.sql` | 仅导出表结构/DDL | | **仅数据** | `pg_dump -a -U postgres mydb > data.sql` | 仅导出数据(无 DDL) | | **并行备份** | `pg_dump -j 4 -Fd -U postgres mydb -f /backup/` | 多线程加速(大型数据库) | --- #### 二、核心选项详解 | **选项** | **说明** | |----------|-------------------------------------------------------------------------| | `-Fc` | 自定义压缩格式(支持 `pg_restore` 选择性恢复)[^1] | | `-j N` | 启用 N 个并行工作线程(需配合 `-Fd` 目录格式) | | `-t 表名` | 仅备份指定表(支持通配符 `-t 'orders*'`) | | `-T 表名` | 排除指定表 | | `-Z 0-9` | 压缩级别(0=无压缩, 9=最高压缩) | | `--exclude-table-data` | 跳过指定表的数据(仅导出结构) | --- #### 三、实战示例 1. **全库备份与恢复** ```bash # 备份(自定义格式) pg_dump -Fc -U postgres mydb > mydb.dump # 恢复(覆盖现有库) pg_restore -d mydb -U postgres --clean --create mydb.dump ``` 2. **按表分区备份** ```bash # 仅备份 orders 表(含数据) pg_dump -t orders -U postgres mydb > orders.sql # 仅备份用户表结构(排除数据) pg_dump -t users --exclude-table-data -U postgres mydb > users_schema.sql ``` 3. **大型数据库并行备份** ```bash # 启动4线程备份到目录(自动分块) pg_dump -j 4 -Fd -U postgres mydb -f /backup/mydb/ # 并行恢复 pg_restore -j 4 -d mydb -U postgres /backup/mydb/ ``` --- #### 四、关键注意事项 1. **权限与连接** - 备份需数据库访问权限(建议使用 `postgres` 用户) - 远程备份需配置 `pg_hba.conf` 允许连接: ```bash host all all 192.168.1.0/24 md5 ``` 2. **一致性保证** - 默认使用 `READ COMMITTED` 隔离级别 - 大事务备份建议添加 `--serializable-deferrable` 选项[^2] 3. **备份策略优化** ```bash # 每日全量备份 + 每小时 WAL 归档 pg_dump -Fc -Z 9 --file=/backup/full_$(date +%Y%m%d).dump mydb echo "archive_command = 'cp %p /wal_archive/%f'" >> postgresql.conf ``` 4. **恢复验证** ```bash # 检查备份完整性(不实际恢复) pg_restore -l mydb.dump | grep "TABLE DATA" ``` --- #### 五、高级技巧 1. **加密备份** ```bash # 使用 OpenSSL 加密备份文件 pg_dump -Fc mydb | openssl enc -aes256 -out mydb.enc ``` 2. **跨版本迁移** ```bash # 从 PostgreSQL 13 迁移到 14 pg_dump -Fc -U postgres -h old-server mydb | \ pg_restore -d mydb -U postgres -h new-server ``` 3. **备份元信息查询** ```sql -- 查看备份中的对象列表 SELECT pg_restore_ls('mydb.dump'); ``` > 提示:使用 `pg_dumpall` 备份全局对象(角色/表空间),结合 `pg_dump` 实现完整灾备[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值