↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 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.4 已结束支持。 请参阅 当前版本手册.

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

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

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

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

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

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

另一种文件系统备份方法是:如果文件系统支持该功能,可以对数据目录制作“一致快照”。这样的快照保存的数据库文件处于数据库服务器未被正常关闭的状态;因此,当你在这个备份目录上启动数据库服务器时,它会认为服务器曾崩溃并重放 WAL 日志。这不是问题,只是要知道这一点。

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

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.