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. 备份案例)
-
- [1. pg_dump单库备份](#1. pg_dump单库备份)
- 2.pg_dumpall单库备份
- [4. 备份案例](#4. 备份案例)
-
- [1. pg_dump单库备份](#1. pg_dump单库备份)
- 2.pg_dumpall单库备份
1. 备份命令
在 PostgreSQL 17 中,备份数据库的常用命令是
pg_dump
和pg_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
是一个用于备份单个数据库的工具。它创建一个可以使用 psql
或 pg_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