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: