3

我们有一对以流复制模式运行的 posgresql 9.1 服务器。在这些服务器中的每一个中都有 2 个数据库。

一种是“实时”数据库,其数据必须尽可能接近实时地复制,另一种是“缓存”数据库,其数据不重要,可以在一段时间内重新生成或建立。

“缓存”数据库对所有内容都使用未记录的表(因为我们不在乎它们是否被截断)并且我们有效地将它用作一种内存数据库。它工作得非常好,因为我们对这些表有很多读/写。我们看到使用未记录表的高负载和大量内存的服务器上的性能显着提高。

当我们必须在从属端创建另一个“缓存”数据库时,问题就出现了。我们需要这个才能让我们的 Web 应用程序正常工作。在数据库处于只读模式的源代码中,这是不可能的......

只是想知道其他人是否有类似的问题,或者是否有办法在从属服务器上创建一个未记录的表?在 postgres 中,流复制似乎是“全有或全无”,您不能为特定数据库打开/关闭它。

也许我错误地使用了未记录的表,但到目前为止还没有找到任何像他们一样有效的东西。

任何指针将不胜感激......

4

1 回答 1

0

在 postgres 中,流复制似乎是“全有或全无”,您不能为特定数据库打开/关闭它。

不幸的是,这是正确的。WAL 复制适用于整个数据库集群,并且您要求集群内的数据库在主服务器上不被记录,因此无法使其出现在从服务器上。

我发现的最佳解决方案是在从属服务器上运行第二个守护程序/集群并在那里创建未记录的缓存数据库。同时运行多个 postgres 守护进程并没有真正的问题——你只需要确保你指定一个不同的套接字/端口来监听它。

于 2014-09-25T08:19:18.800 回答