PostgreSQL17.x数据库备份命令及语法说明

PostgreSQL17.x数据库备份命令及语法说明

文章目录

  • PostgreSQL17.x数据库备份命令及语法说明
  • [1. 备份命令](#1. 备份命令)
    • [1. pg_dump命令参数](#1. pg_dump命令参数)
    • [2. pg_dumpall命令参数](#2. pg_dumpall命令参数)
  • [2. `pg_dump` 备份单库语法](#2. pg_dump 备份单库语法)
  • [3. `pg_dumpall` 备份所有数据库语法](#3. pg_dumpall 备份所有数据库语法)
  • [4. 备份案例](#4. 备份案例)
  • [4. 备份案例](#4. 备份案例)

1. 备份命令

在 PostgreSQL 17 中,备份数据库的常用命令是 pg_dumppg_dumpall

1. pg_dump命令参数

shell 复制代码
D:\Programs\PG17数据库备份>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=METHOD[:DETAIL]
                               compress as specified
  --lock-wait-timeout=TIMEOUT  在等待表锁超时后操作失败
  --no-sync                    不用等待变化安全写入磁盘
  --sync-method=METHOD         set method for syncing files to disk
  -?, --help                   显示此帮助, 然后退出

控制输出内容选项:
  -a, --data-only              只转储数据,不包括模式
  -b, --large-objects          include large objects in dump
  --blobs                      (same as --large-objects, deprecated)
  -B, --no-large-objects       exclude large objects in dump
  --no-blobs                   (same as --no-large-objects, deprecated)
  -c, --clean                  在重新创建之前,先清除(删除)数据库对象
  -C, --create                 在转储中包括命令,以便创建数据库
  -e, --extension=PATTERN      仅转储指定的扩展名
  -E, --encoding=ENCODING      转储以ENCODING形式编码的数据
  -n, --schema=PATTERN         只转储指定的模式
  -N, --exclude-schema=PATTERN 不转储指定的模式
  -O, --no-owner               在明文格式中, 忽略恢复对象所属者
  -s, --schema-only            只转储模式, 不包括数据
  -S, --superuser=NAME         在明文格式中使用指定的超级用户名
  -t, --table=PATTERN          dump only the specified table(s)
  -T, --exclude-table=PATTERN  不转储指定的表
  -x, --no-privileges          不要转储权限 (grant/revoke)
  --binary-upgrade             只能由升级工具使用
  --column-inserts             以带有列名的INSERT命令形式转储数据
  --disable-dollar-quoting     取消美元 (符号) 引号, 使用 SQL 标准引号
  --disable-triggers           在只恢复数据的过程中禁用触发器
  --enable-row-security        启用行安全性(只转储用户能够访问的内容)
  --exclude-extension=PATTERN  do NOT dump the specified extension(s)
  --exclude-table-and-children=PATTERN
                               do NOT dump the specified table(s), including
                               child and partition tables
  --exclude-table-data=PATTERN 不转储指定的表中的数据
  --exclude-table-data-and-children=PATTERN
                               do NOT dump data for the specified table(s),
                               including child and partition tables
  --extra-float-digits=NUM     覆盖extra_float_digits的默认设置
  --filter=FILENAME            include or exclude objects and data from dump
                               based on expressions in FILENAME
  --if-exists                  当删除对象时使用IF EXISTS
  --include-foreign-data=PATTERN
                               包含外部服务器上与模式匹配的
                               外部表的数据
  --inserts                    以INSERT命令,而不是COPY命令的形式转储数据
  --load-via-partition-root    通过根表加载分区
  --no-comments                不转储注释
  --no-publications            不转储发布
  --no-security-labels         不转储安全标签的分配
  --no-subscriptions           不转储订阅
  --no-table-access-method     do not dump table access methods
  --no-tablespaces             不转储表空间分配信息
  --no-toast-compression       不转储TOAST压缩方法
  --no-unlogged-table-data     不转储没有日志的表数据
  --on-conflict-do-nothing     将ON CONFLICT DO NOTHING添加到INSERT命令
  --quote-all-identifiers      所有标识符加引号,即使不是关键字
  --rows-per-insert=NROWS      每个插入的行数;意味着--inserts
  --section=SECTION            备份命名的节 (数据前, 数据, 及 数据后)
  --serializable-deferrable    等到备份可以无异常运行
  --snapshot=SNAPSHOT          为转储使用给定的快照
  --strict-names               要求每个表和(或)schema包括模式以匹配至少一个实体
  --table-and-children=PATTERN dump only the specified table(s), including
                               child and partition tables
  --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 环境变量
的数值.

臭虫报告至<pgsql-bugs@lists.postgresql.org>.
PostgreSQL 主页: <https://www.postgresql.org/>

D:\Programs\PG17数据库备份>

2. pg_dumpall命令参数

shell 复制代码
D:\Programs\PG17数据库备份>pg_dumpall --help
pg_dumpall 抽取一个 PostgreSQL 数据库簇进一个 SQL 脚本文件.

使用方法:
  pg_dumpall [选项]...

一般选项:
  -f, --file=FILENAME          输出文件名
  -v, --verbose                详细模式
  -V, --version                输出版本信息, 然后退出
  --lock-wait-timeout=TIMEOUT  在等待表锁超时后操作失败
  -?, --help                   显示此帮助, 然后退出

控制输出内容选项:
  -a, --data-only              只转储数据,不包括模式
  -c, --clean                  在重新创建数据库前先清除(删除)数据库
  -E, --encoding=ENCODING      转储以ENCODING形式编码的数据
  -g, --globals-only           只转储全局对象, 不包括数据库
  -O, --no-owner               不恢复对象所属者
  -r, --roles-only             只转储角色,不包括数据库或表空间
  -s, --schema-only            只转储模式, 不包括数据
  -S, --superuser=NAME         在转储中, 指定的超级用户名
  -t, --tablespaces-only       只转储表空间,而不转储数据库或角色
  -x, --no-privileges          不要转储权限 (grant/revoke)
  --binary-upgrade             只能由升级工具使用
  --column-inserts             以带有列名的INSERT命令形式转储数据
  --disable-dollar-quoting     取消美元 (符号) 引号, 使用 SQL 标准引号
  --disable-triggers           在只恢复数据的过程中禁用触发器
  --exclude-database=PATTERN   排除名称与PATTERN匹配的数据库
  --extra-float-digits=NUM     覆盖extra_float_digits的默认设置
  --filter=FILENAME            exclude databases based on expressions in FILENAME
  --if-exists                  当删除对象时使用IF EXISTS
  --inserts                    以INSERT命令,而不是COPY命令的形式转储数据
  --load-via-partition-root    通过根表加载分区
  --no-comments                不转储注释
  --no-publications            不转储发布
  --no-role-passwords          不转储角色的密码
  --no-security-labels         不转储安全标签的分配
  --no-subscriptions           不转储订阅
  --no-sync                    不用等待变化安全写入磁盘
  --no-table-access-method     do not dump table access methods
  --no-tablespaces             不转储表空间分配信息
  --no-toast-compression       不转储TOAST压缩方法
  --no-unlogged-table-data     不转储没有日志的表数据
  --on-conflict-do-nothing     将ON CONFLICT DO NOTHING添加到INSERT命令
  --quote-all-identifiers      所有标识符加引号,即使不是关键字
  --rows-per-insert=NROWS      每个插入的行数;意味着--inserts
  --use-set-session-authorization
                               使用 SESSION AUTHORIZATION 命令代替
                               ALTER OWNER 命令来设置所有权

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

如果没有使用 -f/--file,那么将把SQL脚本写到标准输出.

臭虫报告至<pgsql-bugs@lists.postgresql.org>.
PostgreSQL 主页: <https://www.postgresql.org/>

D:\Programs\PG17数据库备份>

2. pg_dump 备份单库语法

pg_dump 是一个用于备份单个数据库的工具。它创建一个可以使用 psqlpg_restore 还原的 SQL 脚本文件,或者创建一个自定义格式的归档文件。

基本语法:

复制代码
pg_dump -U 用户名 -F 格式 -f 输出文件 数据库名称
  • -U 指定连接到PostgreSQL时使用的用户名。

  • -F 指定输出文件的格式,可以是 p (纯文本SQL脚本, 默认), c (自定义归档), d (目录归档), 或 t (tar归档)。

  • -f 指定输出文件的路径和名称。

  • 最后指定要备份的数据库名称。

    pg_dump -U dbuser -F p -f /path/to/backupfile.sql mydatabase

这将创建一个名为 backupfile.sql 的纯文本SQL脚本文件,其中包含重建 mydatabase 所需的所有SQL命令。

3. pg_dumpall 备份所有数据库语法

pg_dumpall 用来转储一个PostgreSQL服务器上的所有数据库。它还会转储全局对象(如角色和表空间),这些对象不属于任何单独的数据库。

基本语法:

复制代码
pg_dumpall -U 用户名 -f 输出文件
  • -U 指定连接到PostgreSQL时使用的用户名。

  • -f 指定输出文件的路径和名称。

    pg_dumpall -U myuser -f /path/to/all_databases_backup.sql

这将创建一个名为 all_databases_backup.sql 的纯文本SQL脚本文件,其中包含重建所有数据库以及全局对象所需的所有SQL命令。

4. 备份案例

以用户名dbuser为例

1. pg_dump单库备份

shell 复制代码
pg_dump -U dbuser -F p -f D:/my-db001.sql my-db

2.pg_dumpall单库备份

shell 复制代码
pg_dumpall -U dbuser -F p -f D:/my-db-all.sql

件,其中包含重建所有数据库以及全局对象所需的所有SQL命令。

4. 备份案例

以用户名dbuser为例

1. pg_dump单库备份

shell 复制代码
pg_dump -U dbuser -F p -f D:/my-db001.sql my-db

2.pg_dumpall单库备份

shell 复制代码
pg_dumpall -U dbuser -F p -f D:/my-db-all.sql
相关推荐
XDHCOM12 小时前
ORA-06521: PL/SQL映射函数错误,权威解析Oracle报错故障修复与远程处理方案
数据库·sql·oracle
wgzrmlrm7413 小时前
mysql如何配置全文索引停用词_mysql ft_stopword_file设置
jvm·数据库·python
城数派13 小时前
2025年南京市全类别POI(55W+数据)
数据库·arcgis·信息可视化·数据分析·excel
疯狂成瘾者13 小时前
后端系统、服务稳定性里核心的指标有哪些
数据库
SPC的存折14 小时前
openEuler 24.03 MariaDB Galera 集群部署指南(cz)
linux·运维·服务器·数据库·mysql
仲芒14 小时前
[24年单独笔记] MySQL 常用的 DML 命令
数据库·笔记·mysql
SPC的存折14 小时前
MySQL 8.0 分库分表
linux·运维·服务器·数据库·mysql
蓦然乍醒14 小时前
使用 DBeaver 还原 PostgreSQL 备份文件 (.bak) 技术文档
数据库·postgresql
XDHCOM14 小时前
Redis节点故障自动恢复机制详解,如何快速抢救故障节点,确保数据不丢失?
java·数据库·redis
QCzblack14 小时前
BugKu BUUCTF ——Reverse
java·前端·数据库