PostgreSQL备份pg_dump与恢复pg_restore
Contents
备份某个数据库
pg_dump
-a
或者--data-only
: 只备份数据,不备份schema(即数据定义,包括表,序列,自定义数据类型等)
-b
或者--blobs
:dump时包括大对象,除了指定--schema
, --table
或者--schema-only
这些选项外,它默认包括大对象的.
-c
或者--clean
:先删除对象,然后再创建新的(除非指定--if-exists
,否则在恢复的时候,如果不存在任何一个数据库中的对象时,可能会产生一些错误消息)。 *注意,这个选项只有对于 plain-text 格式的备份才有效*。对于archive
格式,当你调用pg_restore
时,可以指定这些选项.
-C
或者--create
: 在开始输出命令时,创建数据库本身,然后重新连接到这个指定的数据库。这个选择只对plain-text
格式有效。对于archive
格式,你可以在调用pg_restore
时指定选项.
-E encoding
或者--encoding=encoding
:以指定编码来备份。默认情况下,它是database
的编码。
-f file
或者--file=file
:输出到指定文件。不能是已经存在的文件.
-F format
或者--format=format
:指定备份的格式。
* p : 纯文本.(默认的行为,即输出SQL语句)
* c : custom 格式。默认情况下它会被压缩的.
* d : directory 格式。
* t : tar 格式
-j njobs
或者--jobs=njobs
:以njobs
并行执行.虽然可以减少备份时间,但会增加服务器的负载.(注意,这个参数仅可用于directory
格式的备份才有效,因为只有这种格式才可以在同一时间多个进程来写数据)。pg_dump
会开启njobs+1
条连接来连接数据库,所以,请确认你的max_connection
的设置是足够处理所有连接的.
-n schema
或者--schema=schema
:仅备份匹配的schema
。当不指定这个选项时,对于目标database的所有非系统的schema都会被备份。多个模式,可以同时使用多个-n
参数来指定.可以使用通配符来匹配。
-N schema
或者--exclude-schema=schema
: 不要备份这个参数指定的schema.
-o
或者--oids
:备份每张表的对象的id。只有在你的应用会引用OID
列时才使用这个选项,否则,不应该使用这个选项.
-O
或者--no-owner
:备份时,不要设置对象的拥有者.
-s
或者--schema-only
: 只备份对象定义.不备份数据.
-S username
或者--superuser=username
:当禁用触发器时指定超级用户名.
-t table
或者--table=table
:仅备份匹配的表.多表,可以通过多个-t
参数来指定.
-T table
或者--exclude-table
:不备份这些指定的表。可以通过多个-T
参数来指定.
-v
或者--verbose
:详细模式
-V
或者--version
:打印版本号并退出
-x
或者--no-privileges
或者--no-acl
:不要备份访问的权限信息.(即grant
,revoke
这些命令)
-Z 0..9
或者--compress=0..9
:指定压缩级别。0:即不压缩。对于custom
格式:压缩每张表的数据段进行压缩,默认级别为中等级别。对于plain
格式:压缩整个输出的文件,尽管它已经通过gzip压缩了,默认为不压缩。对于archive
格式,目前还不支持压缩.
--column-inserts
或者attribute-inserts
: 备份的数据带有显式的列名。这会导致恢复时非常慢,它通常用于将备份的数据还原到非PostgreSQL数据库中。
--disable-dollar-quoting
: 该选项禁用$
美元符作为函数体。
--disable-triggers
:禁用触发器
--enable-row-security
:启用行安全。
--exclude-table-data=table
: 不备份指定表的数据。
--if-exists
: 添加if exists
子句.不能同时与--clean
使用.
--inserts
:以insert
命令备份,而不是COPY
.这会导致恢复时非常慢.
--lock-wait-timeout=timeout
: 锁等待时间.
--no-security-labels
:不备份安全标签.
--no-synchronized-snapshots
:该选项允许对于9.2版本之前的服务器执行pg_dump -j
--no-tablespaces
:备份时,不指定表空间。在恢复时,它会还原到被恢复服务器的默认的表空间中。
--no-tablespaces
:不备份unlog
的表数据.
--quote-all-identifiers
:强制所有的标识符带有引号.
--section=sectionname
:值可以为pre-data
, data
, post-data
.可以同时多次指定.默认为所有.
data
:包含实际表数据,大对象数据以及序列值。
post-data
:包含索引定义,触发器,规则以及约束。
pre-data
:除了data和post-data外的所有数据.
--serializable-deferrable
:使用serializable
事务来备份.
pg_restore
pg_restore [connection-option...] [option...] [filename]
filename
:要恢复的文件,不指定就是标准输入.
-a
或者--data-only
:仅还原数据,不还原数据定义.即表数据,大对象以及序列值会被还原.
-c
或者--clean
:重新创之前清除数据库对象。
-C
或者--create
:恢复之前创建数据库。
-d dbname
或者--dbname=dbname
:连接到指定db然后直接还原到该DB
-e
或者--exit-on-error
:遇到错误时退出.
-f filename
或者--file=filename
:指定输出文件。默认为标准输出.
-F format
或者--format=format
:指定要恢复文件的格式c
:custom, d
:directory, t
:tar
-I index
或者-index=index
:仅还原指定的索引。可以同时使用多个-I
来指定多个索引
-j number-of-jobs
或者--jobs=number-of-jobs
:并发数.如果使用了--single-transaction
,并发就会无效.并且只有custom
或者directory
格式才有效.
-l
或者--list
:只列出要恢复的文件的内容.
-L list-file
或者--use-list=list-file
:仅恢复在list-file
文件里的元素.
-n namespace
或者--schema=schema
:仅仅恢复这些指定的schema
对象.可以使用多个-n
来指定.
-O
或者--no-owner
:不设置owner.
-P function-name(argtype [,...])
或者--function=function-name(argtype [, ...])
:仅恢复指定的函数.可以使用多个-P
来恢复.
-s
或者--schema-only
:仅恢复定义,不恢复数据。
-S usrname
或者--superuser=username
:指定超级用户名.仅在同时使用--disable-triggers
才有用.
-t table
或者--table=table
:仅恢复指定表的定义和数据
-T trigger
或者--trigger=trigger
:仅恢复指定的触发器。可以使用多个-T
.
-v
或者--verbose
:详细模式.
-V
或者--version
: 打印版本号并退出.
-x
或者--no-privileges
或者--no-acl
:不恢复权限访问信息.
-1
或者--single-transaction
:这个是数字1.使用单事务进行恢复。
--disable-triggers
:禁用触发器。
--enable-row-security
:启用行安全.
--if-exists
:
--no-data-for-failed-tables
:
--no-security-labels
:
--no-tablespaces
:
--section=sectionname
: