PostgreSQL:针对单个数据库而非整个集群的时间点恢复

PostgreSQL: point-in-time recovery for individual database and not whole cluster

按照标准 Postgres documentation

As with the plain file-system-backup technique, this method can only support restoration of an entire database cluster, not a subset.

据此,我了解到无法为集群中的单个数据库设置 PITR(a.k.a。一个数据库实例包含多个数据库)。 如果我的理解不正确,可能问题的下一部分不相关,但如果不是,这里是:

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

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

谁能帮我澄清一下我的误解。

你是对的,你只能在 PostgreSQL 数据库集群上做 PITR,不能在单个数据库上做。

整个数据库集群只有一个WAL流; WAL 按数据库拆分。

如果对您有利,请不要犹豫 运行 在一台机器上安装多个 PostgreSQL 集群。

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