PostgreSQL使用 pg_dump 和 pg_dumpall 进行数据库的逻辑备份,pg_dumpall 是对整个数据库集群进行备份,pg_dump 可以选择一个数据库或者部分表进行备份。
pg_dump 将表结构及数据以SQL语句的形式导出到文件中,恢复数据时,将导出的文件作为输入,执行其中的SQL语句,即可恢复数据。
pg_dump 能够对正在使用的PostgreSQL数据库进行备份,并且不影响正常业务的读写。
一、PG_DUMP参数
Usage:pg_dump [OPTION]... [DBNAME]
General options:
-f, --file=FILENAME 输出文件的名字
-F, --format=c|d|t|p 输出文件的格式, (custom, directory, tar,
plain text (默认是文本格式)),
-j, --jobs=NUM 导出时使用的并行,你只能和目录输出格式一起使用这个选项,因为这是唯一一种让多个进程能在同一时间写其数据的输出格式
-Z, --compress=0-9 对于自定义和目录归档格式,这会指定个体表数据段的压缩,并且默认是进行中等级别的压缩。对于纯文本输出,设置一个非零压缩级别会导致整个输出文件被压缩,就好像它被gzip处理过一样,但是默认是不压缩。tar 归档格式当前完全不支持压缩。
--lock-wait-timeout=TIMEOUT 导出时如果出现表锁等待,等待的超时时间
Options controlling the output content:
-a, --data-only 只导出数据不包含用户
-b, --blobs 导出blob对象,默认设置
-B, --no-blobs 不导出blob对象
-c, --clean 是否包含清理对象语句,只针对纯文本格式有意义
-C, --create 是否输出create database语句,只针对纯文本格式有意义
-E, --encoding=ENCODING 指定字符集编码格式
-n, --schema=PATTERN 导出指定的schema
-N, --exclude-schema=PATTERN 指定排除的schema
-O, --no-owner 表示不把对象所有权设置为源数据库中的owner
-s, --schema-only 只转储对象定义(模式),而非数据。这个选项是--data-only的逆选项。
-S, --superuser=NAME 指定要在禁用触发器时使用的超级用户的用户名。只有使用--disable-triggers时,这个选项才相关(通常,最好省去这个选项,而作为超级用户来启动结果脚本来取而代之)
-t, --table=PATTERN 指定导出的表
-T, --exclude-table=PATTERN 指定排除的表
-x, --no-privileges 不导出授权语句
--binary-upgrade for use by upgrade utilities only
--column-inserts 转储为Insert into table(col,..) values的格式,避免了--insert下源目标端表列顺序不一致导致数据恢复报错
--disable-dollar-quoting disable dollar quoting, use SQL standard quoting
--disable-triggers disable triggers during data-only restore
--enable-row-security enable row security (dump only content user has
access to)
--exclude-table-data=PATTERN do NOT dump data for the specified table(s)
--extra-float-digits=NUM override default setting for extra_float_digits
--if-exists use IF EXISTS when dropping objects
--include-foreign-data=PATTERN
include data of foreign tables on foreign
servers matching PATTERN
--inserts 将数据转储为SQL语句格式,该参数下恢复速度会很慢,这主要用于使转储能够被载入到非PostgreSQL数据库中
--rows-per-insert=NROWS 控制每个INSERT命令的最大行数。 指定的值必须大于零。重新加载期间的任何错误都将导致有问题的INSERT相关的行将丢失,而不是整个表内容
pg_dump 支持4种格式
p, plain:
默认格式, 备份输出为可读的text文本. 还原时在数据库中直接执行备份文本的SQL即可.
c, custom
可自定义的归档格式, 同时默认开启了数据压缩,还原时可以调整备份对象的还原顺序,同时支持选择还原的对象。
备份写入到一个文件中. 需要注意文件系统支持的单个文件大小。
这个格式必须使用pg_restore命令进行还原。
d, directory
目录归档格式, 与custom格式类似, 需要使用pg_restore还原. 但是目录归档格式下会创建一个目录, 然后每个表或者每个大对象对应一个备份输出文件.
加上TOC文件名描述备份的详细信息, 这个格式默认支持压缩, 同时支持并行导出.
t, tar
tar归档格式, 不支持压缩, 同时限制每个表最大不能超过8GB, 同样需要使用pg_restore还原.
二、示例:
1、把test数据库以自定压缩格式导出
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f testdb.backup test
2、把test数据库以sql文本方式导出
pg_dump -h localhost -p 5432 -U postgres -C -F p -b -v -f testdb.p test
3、把test数据库以sql文本导出,并以insert语句显示
pg_dump -h localhost -p 5432 -U postgres -C -F p -b -v --inserts -f testdb.bak test
4、导出test数据库下的test表
pg_dump -h localhost -p 5432 -U postgres -C -F p -b -v --column-inserts -t test -f testdb.bak
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




