外观
PostgreSQL 工具命令常用选项
通用连接选项
PostgreSQL工具命令通常支持以下通用连接选项,用于连接到数据库服务器:
| 选项 | 缩写 | 描述 | 示例 |
|---|---|---|---|
| --host=HOSTNAME | -h HOSTNAME | 指定数据库服务器的主机名或IP地址 | -h localhost 或 -h 192.168.1.100 |
| --port=PORT | -p PORT | 指定数据库服务器的端口号 | -p 5432 |
| --dbname=DBNAME | -d DBNAME | 指定要连接的数据库名称 | -d mydb |
| --username=USERNAME | -U USERNAME | 指定连接数据库的用户名 | -U postgres |
| --no-password | -w | 不提示输入密码,适用于已配置信任认证的环境 | -w |
| --password | -W | 强制提示输入密码 | -W |
| --maintenance-db=DBNAME | 指定维护操作使用的数据库名称 | --maintenance-db postgres |
适用工具:psql, pg_dump, pg_restore, pg_basebackup, createdb, dropdb, createuser, dropuser等
示例:
bash
# 使用通用连接选项连接到数据库
psql -h localhost -p 5432 -U postgres -d mydb -W
# 备份数据库时使用连接选项
pg_dump -h remote-server -p 5432 -U backup_user -d mydb -f backup.sql认证选项
认证选项用于控制工具命令如何进行身份验证:
| 选项 | 缩写 | 描述 | 示例 |
|---|---|---|---|
| --no-password | -w | 不提示输入密码 | -w |
| --password | -W | 强制提示输入密码 | -W |
| --auth=METHOD | 指定认证方法 | --auth md5 |
适用工具:几乎所有PostgreSQL客户端工具
示例:
bash
# 不提示密码,适用于信任认证环境
psql -h localhost -U postgres -d mydb -w
# 强制提示密码
pg_restore -h localhost -U postgres -d mydb -W -f backup.dump输出选项
输出选项用于控制工具命令的输出格式和行为:
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --format=FORMAT | -F FORMAT | 指定输出格式 | -F c (自定义格式) | pg_dump, pg_restore, pg_basebackup |
| --file=FILENAME | -f FILENAME | 将输出写入指定文件 | -f output.sql | 大多数工具 |
| --verbose | -v | 详细输出模式,显示更多信息 | -v | 大多数工具 |
| --quiet | -q | 安静模式,减少输出信息 | -q | 大多数工具 |
| --progress | -P | 显示进度信息 | -P | pg_dump, pg_restore, pg_basebackup |
| --compress=LEVEL | -Z LEVEL | 指定压缩级别 (0-9) | -Z 5 | pg_dump, pg_basebackup |
| --gzip | -z | 使用gzip压缩输出 | -z | pg_basebackup |
| --no-owner | -O | 不恢复对象所有者 | -O | pg_restore |
| --no-privileges | -x | 不恢复权限 | -x | pg_restore |
示例:
bash
# 使用详细模式备份数据库
pg_dump -h localhost -U postgres -d mydb -F c -v -f backup.dump
# 显示恢复进度
pg_restore -h localhost -U postgres -d mydb -P -v backup.dump
# 使用压缩备份
pg_basebackup -h localhost -U replication -D /backup -z -P事务选项
事务选项用于控制工具命令如何处理事务:
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --single-transaction | -1 | 将整个操作作为单个事务执行 | -1 | pg_dump, psql |
| --exit-on-error | -e | 遇到错误时退出 | -e | pg_restore, psql |
| --clean | -c | 在创建对象前先删除现有对象 | -c | pg_dump, pg_restore |
| --create | -C | 在操作前创建数据库 | -C | pg_dump, pg_restore |
示例:
bash
# 将脚本作为单个事务执行
psql -h localhost -U postgres -d mydb -1 -f script.sql
# 恢复前清理现有对象
pg_restore -h localhost -U postgres -d mydb -c -v backup.dump
# 备份时包含创建数据库语句
pg_dump -h localhost -U postgres -d mydb -C -f backup.sql数据选项
数据选项用于控制工具命令如何处理数据:
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --data-only | -a | 只处理数据,不处理schema | -a | pg_dump |
| --schema-only | -s | 只处理schema,不处理数据 | -s | pg_dump |
| --table=TABLE | -t TABLE | 指定要处理的表 | -t users | pg_dump, psql |
| --schema=SCHEMA | -n SCHEMA | 指定要处理的schema | -n public | pg_dump |
| --exclude-table=TABLE | -T TABLE | 排除指定的表 | -T temp_table | pg_dump |
| --exclude-schema=SCHEMA | -N SCHEMA | 排除指定的schema | -N test_schema | pg_dump |
示例:
bash
# 只备份数据
pg_dump -h localhost -U postgres -d mydb -a -f data.sql
# 只备份schema
pg_dump -h localhost -U postgres -d mydb -s -f schema.sql
# 备份指定表
pg_dump -h localhost -U postgres -d mydb -t users -t orders -f tables.sql
# 备份指定schema
pg_dump -h localhost -U postgres -d mydb -n public -n sales -f schemas.sqlWAL相关选项
WAL (Write-Ahead Log) 相关选项用于控制工具命令如何处理WAL日志:
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --wal-method=METHOD | -X METHOD | 指定WAL获取方法 | -X stream | pg_basebackup |
| --wal-segsize=SIZE | 指定WAL段大小 | --wal-segsize 64 | initdb | |
| --no-sync | 不等待数据写入磁盘 | --no-sync | pg_basebackup, initdb |
示例:
bash
# 使用流式WAL获取方法进行基础备份
pg_basebackup -h localhost -U replication -D /backup -X stream -v
# 创建数据库集群时指定WAL段大小
initdb -D /data/postgres --wal-segsize 64模式选项
模式选项用于控制工具命令如何处理数据库对象的模式:
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --schema=SCHEMA | -n SCHEMA | 指定要处理的schema | -n public | pg_dump |
| --exclude-schema=SCHEMA | -N SCHEMA | 排除指定的schema | -N test_schema | pg_dump |
| --include=PATTERN | 包含匹配pattern的对象 | --include "*.table" | pg_dump | |
| --exclude=PATTERN | 排除匹配pattern的对象 | --exclude "temp_*" | pg_dump |
示例:
bash
# 备份多个schema
pg_dump -h localhost -U postgres -d mydb -n public -n hr -n sales -f schemas.sql
# 排除测试schema
pg_dump -h localhost -U postgres -d mydb -N test -N dev -f production.sql表空间选项
表空间选项用于控制工具命令如何处理表空间:
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --tablespace-mapping=OLD=new | 将旧表空间映射到新表空间 | --tablespace-mapping old_ts=new_ts | pg_restore | |
| --tablespaces-only | -t | 只备份表空间 | -t | pg_dumpall |
| --tablespace=TABLESPACE | 指定新对象使用的表空间 | --tablespace ts_data | createdb |
示例:
bash
# 恢复时映射表空间
pg_restore -h localhost -U postgres -d mydb --tablespace-mapping old_data=new_data -v backup.dump
# 只备份表空间
pg_dumpall -h localhost -U postgres -t -f tablespaces.sql
# 创建数据库时指定表空间
createdb -h localhost -U postgres -D ts_data newdb并行处理选项
并行处理选项用于控制工具命令如何使用并行处理:
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --jobs=NUM | -j NUM | 指定并行作业数 | -j 4 | pg_dump, pg_restore |
示例:
bash
# 使用4个并行作业备份数据库
pg_dump -h localhost -U postgres -d mydb -F d -j 4 -f /backup/parallel
# 使用4个并行作业恢复数据库
pg_restore -h localhost -U postgres -d mydb -j 4 -v /backup/parallel日志选项
日志选项用于控制工具命令如何处理日志:
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --log-file=FILENAME | -l FILENAME | 指定日志文件 | -l /var/log/pg_ctl.log | pg_ctl |
| --log-destination=DEST | 指定日志目标 | --log-destination stderr | initdb | |
| --redirect-stderr | 将stderr重定向到日志文件 | --redirect-stderr | pg_ctl |
示例:
bash
# 启动服务器时指定日志文件
pg_ctl -D /data/postgres -l /var/log/postgres.log start
# 初始化数据库集群时指定日志目标
initdb -D /data/postgres --log-destination csvlog其他常用选项
| 选项 | 缩写 | 描述 | 示例 | 适用工具 |
|---|---|---|---|---|
| --version | -V | 显示版本信息并退出 | -V | 所有工具 |
| --help | -? | 显示帮助信息并退出 | -? | 所有工具 |
| --list | -l | 列出数据库或对象 | -l | psql, createdb |
| --echo | -e | 显示执行的命令 | -e | createdb, dropdb, psql |
| --interactive | -i | 交互式确认 | -i | dropdb, dropuser |
| --template=TEMPLATE | -T TEMPLATE | 指定模板数据库 | -T template0 | createdb |
| --encoding=ENCODING | -E ENCODING | 指定字符编码 | -E UTF8 | createdb, pg_dump |
| --locale=LOCALE | -l LOCALE | 指定区域设置 | -l en_US.UTF-8 | createdb, initdb |
| --lc-collate=LOCALE | -C LOCALE | 指定排序规则 | -C en_US.UTF-8 | createdb, initdb |
| --lc-ctype=LOCALE | -c LOCALE | 指定字符分类 | -c en_US.UTF-8 | createdb, initdb |
示例:
bash
# 显示工具版本
psql -V
pg_dump -V
# 获取帮助信息
pg_basebackup --help
# 交互式删除数据库
dropdb -h localhost -U postgres -i mydb
# 创建数据库时指定编码和区域设置
createdb -h localhost -U postgres -E UTF8 -l en_US.UTF-8 newdb常用选项组合示例
1. 备份数据库常用选项组合
bash
# 完整备份数据库,包含schema和数据,使用自定义格式,压缩级别5,详细模式
pg_dump -h localhost -p 5432 -U postgres -d mydb -F c -Z 5 -v -f mydb_backup.dump
# 只备份数据,使用纯文本格式
pg_dump -h localhost -p 5432 -U postgres -d mydb -a -F p -f mydb_data.sql
# 并行备份,使用目录格式,4个并行作业
pg_dump -h localhost -p 5432 -U postgres -d mydb -F d -j 4 -v -f /backup/mydb_parallel2. 恢复数据库常用选项组合
bash
# 恢复数据库,详细模式,显示进度
pg_restore -h localhost -p 5432 -U postgres -d mydb -v -P mydb_backup.dump
# 恢复前清理现有对象,不恢复所有者和权限
pg_restore -h localhost -p 5432 -U postgres -d mydb -c -O -x -v mydb_backup.dump
# 并行恢复,4个并行作业
pg_restore -h localhost -p 5432 -U postgres -d mydb -j 4 -v /backup/mydb_parallel3. 基础备份常用选项组合
bash
# 流式WAL,tar格式,gzip压缩,显示进度
pg_basebackup -h localhost -p 5432 -U replication -D /backup/base -F t -X stream -z -P -v
# 普通格式,fetch WAL,详细模式
pg_basebackup -h localhost -p 5432 -U replication -D /backup/base -F p -X fetch -v常见问题(FAQ)
Q1:如何查看某个工具命令的所有选项?
A1:可以使用--help或-?选项查看工具命令的所有可用选项:
bash
# 查看psql的所有选项
psql --help
# 查看pg_dump的所有选项
pg_dump -?Q2:如何在脚本中使用工具命令的选项?
A2:在脚本中使用工具命令选项的示例:
bash
#!/bin/bash
# 自动备份脚本
BACKUP_DIR="/backup"
DB_NAME="mydb"
USER="postgres"
HOST="localhost"
PORT="5432"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 使用常用选项组合备份数据库
pg_dump -h $HOST -p $PORT -U $USER -d $DB_NAME -F c -Z 5 -v -f $BACKUP_DIR/${DB_NAME}_${DATE}.dump
# 保留最近30天的备份
find $BACKUP_DIR -name "${DB_NAME}_*.dump" -type f -mtime +30 -deleteQ3:如何在Windows系统中使用这些选项?
A3:在Windows系统中使用PostgreSQL工具命令的选项与Linux/Unix系统基本相同,只需注意路径分隔符使用反斜杠\或正斜杠/:
cmd
REM Windows系统中备份数据库
pg_dump -h localhost -p 5432 -U postgres -d mydb -F c -Z 5 -v -f C:\backup\mydb_backup.dumpQ4:如何优化工具命令的执行性能?
A4:优化工具命令执行性能的建议:
- 对于大型数据库备份,使用并行备份(
-j选项) - 使用合适的压缩级别,平衡压缩率和CPU使用率
- 备份到快速存储设备(如SSD)
- 避免在业务高峰期执行大型备份操作
- 对于恢复操作,使用并行恢复(
-j选项) - 恢复前关闭不必要的服务和应用
Q5:如何确保工具命令的安全性?
A5:确保工具命令安全性的建议:
- 不要在命令行中明文指定密码,使用
.pgpass文件或环境变量 - 限制备份文件的访问权限(如
chmod 600 backup.dump) - 加密敏感数据的备份
- 使用专用的备份用户,授予最小必要权限
- 定期轮换备份用户密码
- 监控工具命令的执行情况
