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

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

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.1 已于 2006 年 4 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

8.2. 文件系统级别的备份 #

另一种备份策略是直接复制Postgres用来存储 数据库中数据的文件。这些文件的位置在第 3.2 节 中有说明,但如果你对这个方法感兴趣,可能早就已经找到它们了。 你可以使用自己喜欢的任何常规文件系统备份方法,例如:

tar -cf backup.tar /usr/local/pgsql/data

然而,有两个限制使这种方法不实用,或者至少不如pg_dump 方法:

  1. 为了得到可用的备份,数据库服务器必须被 关闭。诸如禁止所有连接之类的折中办法是行不通的,因为总会有 一些缓冲在进行。因此,也不建议信任那些声称支持“一致 快照”的文件系统。关于停止服务器的信息可以在 第 3.6 节中找到。

    不用说,恢复数据之前你也需要关闭服务器。

  2. 如果你深入研究过文件系统布局的细节,你可能会想尝试 只从各自的文件或目录中备份或恢复某些单独的表或数据库。 这行不通,因为这些文件中包含的信息 只是真相的一半。另一半在文件 pg_log中,其中包含所有事务的提交状态。一个表文件只有配合这些信息 才可用。当然,只恢复一个表及相关的pg_log 文件也是不可能的,因为那将使数据库集群中的所有其他表都 变得不可用。

另外注意,文件系统备份不一定比 SQL 转储小。相反,它很可能会更大。 (例如,pg_dump不需要转储索引(indices)的 内容,只需要转储重建它们的命令。)

提交更正

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