备份和恢复

 
注意
每个数据库都应该经常备份。因为 Postgres 在文件系统里管理它自己的文件,我们不建议依靠你的文件系统的系统备份作为你的数据库备份;那样不能保证在恢复后文件处于可用的一致的状态。
Postgres 提供两个工具备份你的系统:pg_dump 备份独立的数据库以及 pg_dumpall 在一个步骤里备份你的数据库节点。

可以用下面的命令备份一个独立的数据库:

% pg_dump dbname > dbname.pgdump
然后可以用下面命令恢复
cat dbname.pgdump | psql dbname
这个技巧可以用于把数据库移动到一个新位置,然后重新命名现有数据库。

大数据库

作者:Hannu Krosing 写于 1999-06-19。
因为 Postgres 允许表的尺寸大于你的系统的最大文件尺寸,可能把表输出到一个文件会有问题,因为生成的文件很可能比你的系统允许的最大文件大。

因为 pg_dump 输出到 stdout,你可以用标准的 *nix 工具绕开这个问题:
 

当然,文件名(filename)和 pg_dump 输出的内容不必与数据库名一样。同样,重载的数据库可以有任意新的名称,所以这个机制还适用于给数据库改名。