注意 |
每个数据库都应该经常备份。因为 Postgres 在文件系统里管理它自己的文件,我们不建议依靠你的文件系统的系统备份作为你的数据库备份;那样不能保证在恢复后文件处于可用的一致的状态。 |
可以用下面的命令备份一个独立的数据库:
% pg_dump dbname > dbname.pgdump然后可以用下面命令恢复
cat dbname.pgdump | psql dbname
作者:由 Hannu Krosing 写于 1999-06-19。因为 Postgres 允许表的尺寸大于你的系统的最大文件尺寸,可能把表输出到一个文件会有问题,因为生成的文件很可能比你的系统允许的最大文件大。
因为 pg_dump 输出到 stdout,你可以用标准的
*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 输出的内容不必与数据库名一样。同样,重载的数据库可以有任意新的名称,所以这个机制还适用于给数据库改名。