历史版本。 PostgreSQL 7.1 已结束支持。 请参阅 当前版本手册.
8.2. 文件系统级别的备份 #
另一种备份策略是直接复制Postgres用来存储数据库中数据的文件。这些文件的位置在第 3.2 节中有说明,但如果你对这个方法感兴趣,可能早就已经找到它们了。你可以使用自己喜欢的任何常规文件系统备份方法,例如:
tar -cf backup.tar /usr/local/pgsql/data
然而,有两个限制使这种方法不实用,或者至少不如pg_dump 方法:
为了得到可用的备份,数据库服务器必须被关闭。诸如禁止所有连接之类的折中办法是行不通的,因为总会有一些缓冲在进行。因此,也不建议信任那些声称支持“一致快照”的文件系统。关于停止服务器的信息可以在第 3.6 节中找到。
不用说,恢复数据之前你也需要关闭服务器。
如果你深入研究过文件系统布局的细节,你可能会想尝试只从各自的文件或目录中备份或恢复某些单独的表或数据库。这行不通,因为这些文件中包含的信息只是真相的一半。另一半在文件
pg_log中,其中包含所有事务的提交状态。一个表文件只有配合这些信息才可用。当然,只恢复一个表及相关的pg_log文件也是不可能的,因为那将使数据库集群中的所有其他表都变得不可用。
另外注意,文件系统备份不一定比 SQL 转储小。相反,它很可能会更大。(例如,pg_dump不需要转储索引(indices)的内容,只需要转储重建它们的命令。)