↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 6.5
历史版本PostgreSQL 6.5 已于 2004 年 6 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

25.4. 备份与恢复

小心

每个数据库都应当定期备份。由于 Postgres 在文件系统中管理它自己的文件,因此不建议依靠你文件系统的系统备份来做数据库备份;不能保证恢复之后文件处于可用的、一致的状态。

Postgres 提供两个用来备份系统的实用程序:pg_dump 用于备份单个数据库,pg_dumpall 用于一步备份你的整个安装。

可以使用下面的命令备份单个数据库:

% pg_dump dbname > dbname.pgdump
    

恢复时使用

cat dbname.pgdump | psql dbname
    

这项技术可以用来把数据库移动到新位置,以及重命名现有数据库。

25.4.1. 大型数据库

作者

由 Hannu Krosing 于 1999-06-19 撰写。

由于 Postgres 允许表大于系统的最大文件大小,把表转储到一个文件可能有问题,因为得到的文件很可能大于你的系统所允许的最大尺寸。

由于 pg_dump 写到标准输出,你可以直接使用标准 *nix 工具绕过这个潜在问题:

  • 使用压缩的转储:

    % pg_dump dbname | gzip > filename.dump.gz
            
    

    重载时使用

    % createdb dbname
    % gunzip -c filename.dump.gz | psql dbname
            
    

    或

    % cat filename.dump.gz | gunzip | psql dbname
            
    
  • 使用 split:

    % pg_dump dbname | split -b 1m - filename.dump.
            
    

    重载时使用

    % createdb dbname
    % cat filename.dump.* | pgsql dbname
            
    

当然,文件的名字(filename)和 pg_dump 输出的内容不必与数据库的名字匹配。而且,恢复后的数据库可以有任意的新名字,因此这个机制也适用于重命名数据库。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。