PostgreSQL备份可以分为两种类型:逻辑备份和物理备份。这篇文章简要介绍了每种类型,并讨论了您使用其中任何一种类型的情况。
我们将在以后的帖子中介绍您可以用于Postgres备份的众多工具中的一些工具。
这种形式的备份通常通过将所有数据转换为一组SQL命令并将其写入单个文件来实现。然后可以将其提供给任何数据库集群以重新创建所有内容。在您的CLI中,执行逻辑备份非常简单,如下所示:
用于整个数据库群集。Pg_dump和pg_dumpall实用程序都有各自的附加选项供您选择和设置所需的逻辑备份设置。从它们中恢复的过程相当简单:
如上所示,单个命令足以执行逻辑备份,而另一个命令则足以从逻辑备份中恢复。作为数据库的新手,这将是一个理想且不会让人望而生畏的方法,它可以确保您的数据库始终处于备份状态。
如果您计划迁移到Postgres的其他主要版本(例如,从Postgres 11迁移到Postgres 12),那么通过pg_dump pall进行逻辑备份肯定是您的首选工具。这主要是因为主要版本之间的内部数据存储格式可能不同。这是物理备份的基础,在升级时不再将其作为选项。我们将在另一篇文章中更深入地介绍迁移以及如何执行迁移。
物理备份与存储数据库数据的实际文件或文件系统集有关。物理备份的一种选择是通过制作数据文件的副本来拍摄数据文件的快照。
随着数据库增长到几千兆字节大小,通过物理备份备份它比通过逻辑备份更理想。正如这里所解释的,随着时间的推移,在大型数据库中执行逻辑备份可能会导致其他查询的性能下降。考虑到在大型数据库上成功执行逻辑备份需要很长的运行时间,因此发生错误的可能性更高,从而使最终备份不可用。
Postgres还会生成预写日志(WAL)文件,这些文件可以与备份的文件系统一起使用,以将数据库恢复到任何选定的时间点。当灾难来袭时,这是在不幸发生之前重新创建数据库的最佳选择之一。这大大降低了整个过程中的恢复点目标(RPO)。更好的是,像WAL-G这样的工具可以方便地简化设置过程中涉及的步骤。
总而言之,逻辑备份和物理备份的生成方式各不相同。两者都不比对方有优势。根据您的需要,每个选项都会为表带来独特的用途: