PostgreSQL:单个数据库而不是整个集群的时间点恢复

时间:2019-04-09 08:27:58

标签: postgresql postgresql-10 pitr

根据标准Postgres documentation

  

与普通的文件系统备份技术一样,此方法只能支持还原整个数据库集群,而不能还原子集。

据此,我了解到无法为集群中的单个数据库(也就是一个拥有多个数据库的数据库实例)设置PITR。 如果我的理解不正确,则问题的下一部分可能不相关,但如果不正确,则为:

由于每个数据库都在生成自己的WAL存档,因此在理论上进行设置仍然没有问题。

这里的问题是:我需要设置多个Postgres clusters,以某种方式,我只有2台RHEL 7.6机器来处理此问题。我试图将这2台计算机上的群集数量减少到2个。我计划创建多个数据库而不是多个实例来处理客户应用程序。但这意味着我不得不牺牲PITS,因为PITR只能在实例/集群级别执行,而不能在数据库级别执行(根据官方文档)。

有人可以帮助澄清我的误会吗?

1 个答案:

答案 0 :(得分:1)

您是正确的,您只能在PostgreSQL数据库集群上执行PITR,而不能在单个数据库上进行。

整个数据库集群只有一个WAL流;每个数据库分配WAL。

如果这对您有利,请不要在单个计算机上运行多个PostgreSQL集群。

运行第二个数据库集群几乎没有开销。群集占用的最大资源是共享缓冲区,但是无论如何,您都希望它仅是可用RAM的一小部分。大多数内存应留给所有PostgreSQL群集共享的文件系统缓存。