另一个备份的策略是直接拷贝
PostgreSQL
用于存放数据库
数据的文件.我们在
Section 3.2
里解释了这些文件的位置,不过
如果你想用这个方法,你早就找到它们的位置.
你可以用自己喜欢的任何常用文件系统备份的方法,例如
不过,你要受到两个限制,令这个方法不那么实用,或者至少
比
pg_dump
的方法逊色一些:
-
为了进行有效的备份,数据库服务器
必须
被关闭.
象拒绝所有联接这样的折衷的方法是不行的,因为总是有一些
缓冲区数据存在.
同样的原因,我们也不建议信任那些声称支持
"连续快照(consistent
snapshots)"
的操作系统.有关关闭服务器的信息可以在
Section 3.6
里面找到.
一样,你在恢复数据之前也要关闭服务器.
-
如果你曾经深入了解了文件系统布局的细节,你可能试图从对应的
文件或目录里备份几个表或者数据库.
这样做是
没用
的,因为包含在这些文件里的信息只是
部分信息.还有一半信息在提交日志文件
pg_clog/*
里面,它包含所有事务的提交状态.
只有拥有这些信息,表文件的信息才是可用的.当然,试图
只恢复表和相关的
pg_clog
数据也是徒劳
的,因为这样会把数据库集群里的所有其他没有用的表的信息都拿出来.
还要说明的是,文件系统备份不会比SQL转储小.恰恰相反,大多数
情况下它要大.(比如
pg_dump
不用
倒出索引,只是创建它们的命令.)
|