postgres备份和恢复 ---逻辑备份

1、
PostgreSQL为这个用途提供了pg_dump工具。 
这条命令的基本用法是: 
pg_dump dbname > outfile

从转储中恢复:
psql dbname < infile

pg_dump和psql可以通过管道读写,这样我们就可能从一台主机上将数据库转储到另一台主机上,比如: 
pg_dump -h host1 dbname | psql -h host2 dbname

pg_dump在一个时间只转储一个单独的数据库, 它不转储有关角色或表空间信息(因为这些是集群范围,而不是每个数据库)。 为了支持 方便转储整个数据库集群的全部内容。 因此我们提供了pg_dumpall程序。这个命令的基本用法是: 
pg_dumpall > outfile
pg_dumpall > /opt/pgsql-9.4.4/data/all.dump
生成的转储可以用psql恢复: 
psql -f infile -d postgres
psql -f /opt/pgsql-9.4.4/data/all.dump -d postgres

当创建大的pg_dump输出文件时,限制产生问题的一些操作系统允许最大文件大小。 因为pg_dump输出到标准输出, 你可以用标准的Unix工具绕开这个问题:有一些可能的方法:
使用压缩转储. 使用你熟悉的压缩程序(比如gzip): 
pg_dump dbname | gzip > filename.gz
使用下面命令恢复: 
gunzip -c filename.gz | psql dbname
或者: 
cat filename.gz | gunzip | psql dbname
使用split. split允许用下面的方法把输出分解成操作系统可以接受的大小。 比如,让每个块大小为1MB: 
pg_dump dbname | split -b 1m - filename
用下面命令恢复: 
cat filename* | psql dbname
使用pg_dump自定义转储格式. 如果PostgreSQL是在一个安装了zlib 压缩库的系统上制作的, 那么自定义转储格式将在写入输出文件的时候压缩数据。 它会生成和使用gzip类似大小的转储文件,但是还附加了一个优点: 你可以有选择地恢复库中的表。下面的命令用自定义转储格式转储一个数据库: 
pg_dump -Fc dbname > filename
自定义格式的转储不是脚本,不能用于psql,而是需要使用pg_restore转储。 比如: 
pg_restore -d dbname filename
请参阅pg_dump和pg_restore手册获取细节。 
对于非常大的数据库,你可能需要结合split以及其他两种方法之一。
使用pg_dump的并行转储功能. 为了加快大数据库的转储,你可以使用pg_dump并行模式。这将同时转储多个表。你可以使用-j参数控制并行性程度。并行转储只支持"目录"归档模式。 
pg_dump -j num -F d -f out.dir dbname

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值