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

来源:互联网 发布:数据库在线设计 编辑:程序博客网 时间:2024/05/16 09:55
1、PostgreSQL为这个用途提供了pg_dump工具。 这条命令的基本用法是: pg_dump dbname > outfile从转储中恢复:psql dbname < infilepg_dump和psql可以通过管道读写,这样我们就可能从一台主机上将数据库转储到另一台主机上,比如: pg_dump -h host1 dbname | psql -h host2 dbnamepg_dump在一个时间只转储一个单独的数据库, 它不转储有关角色或表空间信息(因为这些是集群范围,而不是每个数据库)。 为了支持 方便转储整个数据库集群的全部内容。 因此我们提供了pg_dumpall程序。这个命令的基本用法是: pg_dumpall > outfilepg_dumpall > /opt/pgsql-9.4.4/data/all.dump生成的转储可以用psql恢复: psql -f infile -d postgrespsql -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 0
原创粉丝点击