2017-07-05 40 views
2

我想在Windows Server 2012 R2中使用Postgresql作为我们的项目,它可以是24/7的正常运行时间。同一数据库上的两个主实例

我想问问社区,如果我可以在2台不同的服务器上有2个主实例A & B,他们将在位于共享文件存储区中的同一个数据库上工作。总是服务器A上的一个主实例将联机,并且由于某种原因(因为某种原因)出现脱机时,PowerShell脚本将识别postgresql服务停止并将启动服务器B中的服务。同一个脚本将持续检查只有一个服务器中的服务A & B正在努力避免冲突。

我想问问,如果这是可能的或更好的方法为我的配置。 (我不能使用复制,因为当服务器A关闭服务器B处于只读模式时,我不想要)

回答

3

如果您设法在同一个数据目录上启动两个PostgreSQL实例,严重的数据损坏将发生

通常有一个postmaster.pid文件,防止这一点,但在不同的机器上访问同一个文件系统中的PostgreSQL服务器进程会很乐意取消链接喷涌一些日志信息,思考后,这是从崩溃中掉队。

所以,你真的在​​薄冰上行走,就像这样的解决方案。

另一个你没有想到的问题是应该检查服务器是否仍在运行的脚本。如果该脚本失败了,例如两台服务器之间的网络连接断开,但服务器仍然开着运行愉快?这种“裂脑”方案将导致您的设置数据损坏。

另一个值得警惕的词语是:既然您似乎在使用Windows(Powershell?),那么您在谈论共享存储时可能会想到一个CIFS文件系统。一个Windows “网络共享”是不是一个可靠的文件系统—我上次检查,它没有兑现_commit

创建可靠的故障转移群集比您想象的要困难得多,我建议您在尝试启动自己的解决方案之前检查现有的解决方案。

+0

首先感谢您的回复。你是对的,这就是为什么我问这里,但我没有设法找到一个现有的解决方案在Windows服务器工作。所有的工具都适用于Linux系统。我在上面提到的唯一解决方案是使用沃尔沃存档,这是一种在主服务器关闭时无法使用我们的应用程序时从服务器始终处于只读模式的服务器。你有任何其他配置在脑子里建议在Windows环境? –

+0

我没有做Windows ......你看过列出集群解决方案的[PostgreSQL Wiki页面](https://wiki.postgresql.org/wiki/Clustering)吗?也许[this](https://wiki.postgresql.org/wiki/Shared_Storage)也很有趣。 –

+0

是的,这是我上面描述的塞纳里奥,但我不确定它是否会运行良好,我想第二个意见! –

相关问题