pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
另一种备份策略是直接复制PostgreSQL用来存储 数据库中数据的文件。这些文件的位置在第 16.2 节 中有说明,但如果你对这个方法感兴趣,可能早就已经找到它们了。 你可以使用自己喜欢的任何常规文件系统备份方法,例如:
tar -cf backup.tar /usr/local/pgsql/data
然而,有两个限制使这种方法不实用,或者至少不如pg_dump 方法:
为了得到可用的备份,数据库服务器必须被 关闭。诸如禁止所有连接之类的折中办法是行不通的,因为总会有 一些缓冲在进行。因此,也不建议信任那些声称支持“一致 快照”的文件系统。关于停止服务器的信息可以在 第 16.6 节中找到。不用说,恢复数据 之前你也需要关闭服务器。
如果你深入研究过数据的文件系统布局的细节,你可能会想尝试 只从各自的文件或目录中备份或恢复某些单独的表或数据库。 这行不通,因为这些文件中包含的信息 只是真相的一半。另一半在提交日志文件pg_clog/* 中,其中包含所有事务的提交状态。一个表文件只有配合这些信息 才可用。当然,只恢复一个表及相关的pg_clog 数据也是不可能的,因为那会使数据库集群中的所有其他表都 变得不可用。
另一种文件系统备份方法是:如果文件系统支持该功能,可以对数据 目录制作“一致快照”。这样的快照保存的数据库文件 处于数据库服务器未被正常关闭的状态;因此,当你在这个备份目录 上启动数据库服务器时,它会认为服务器曾崩溃并重放 WAL 日志。 这不是问题,只是要知道这一点。
注意,文件系统备份不一定比 SQL 转储小。相反,它很可能会更大。 (例如,pg_dump不需要转储索引的 内容,只需要转储重建它们的命令。)
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。