这是一个场景:
要求:
目前发现,
如本文所述,可以使用共享磁盘来存储数据。 但是它也说“另一个问题是备用服务器在主服务器运行时不应该访问共享存储器”。 这意味着所有的服务器(除了主服务器)都没有使用,这几乎是我们无法接受的。
由于我们使用的是共享磁盘,所以不应该有复制。 在这个文档中发现一些configuration(Raw和Master / Slave模式)已经足够了。 但另一个问题是他们可能会导致上述问题。
问题:
请注意(对于那些有兴趣closures尽可能多的问题的人) – 它发生在我之前。 有人说我正在寻找基于意见的答案。 其实我不是。 我在看的是技术的名称或某种关键词,不pipe是什么。 所以通过使用它们我可以search更多的信息。 有时候,你需要知道一些关键词来search和查找信息。
提前致谢。
即使除了一个都是只读的,也不可能从同一个数据目录运行多个PostgreSQL服务器。 绝对100%不受支持。 无法完成。 现在放弃。
有人可能会有一天添加这样一个function,但它会涉及到PostgreSQL的重大变化,因为Pg严重依赖共享内存和信号进行进程间同步。 此外, shared_buffers包含尚未写出的“脏”缓冲区; 这些可以被写出来,因为PostgreSQL知道所有的后端将从那里读取,只有当数据不在shared_buffers才会进入磁盘。
如果所有的服务器都是只读的,那么对PostgreSQL做一些小的改动是可行的,但是我还没有调查过,因为这是一个非常有趣的用例。
您看到的共享存储引用仅用于故障转移,而不是并发操作。 该手册非常具体,您需要确保有适当的屏蔽来防止多个数据库服务器同时访问存储,否则将导致重大损坏。
您将不得不依靠复制或使用另一个支持共享存储的数据库引擎(并处理最终的性能影响)。
另外,DBs通常是I / O限制的。 如果现在有两台服务器的容量为1000tps,而不是一台可以容量为2000的服务器,那么共享存储并不会带来任何好处。或者,考虑到共享存储系统与低延迟总线同步的开销(例如Infiniband / Myrinet ),更像两台服务器,每台服务器的能力为200TPS。