gpt4 book ai didi

postgresql - 同一数据库上的两个主实例

转载 作者:行者123 更新时间:2023-11-29 12:03:06 24 4
gpt4 key购买 nike

我想在我们的一个项目中使用 Windows Server 2012 R2 中的 Postgresql,它可以 24/7 正常运行。

我想问社区我是否可以在 2 个不同的服务器 A 和 B 中拥有 2 个主实例,并且它们将在位于局域网共享文件存储中的同一个数据库上“工作”。服务器 A 上的一个主实例总是在线的,当它由于某种原因(我想)脱机时,powershell 脚本将识别出 postgresql 服务已停止,并将在服务器 B 中启动该服务。相同的脚本将持续检查只有一个服务器 A 和 B 中的服务正在努力避免冲突。

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

最佳答案

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

通常有一个 postmaster.pid 文件可以防止这种情况发生,但是访问同一文件系统的不同机器上的 PostgreSQL 服务器进程会在发出一些日志消息后愉快地取消链接,认为它是因车祸而落下。

所以你真的在使用这样的解决方案如履薄冰。

您没有想到的另一个问题是应该检查服务器是否仍在运行的脚本。如果该脚本失败怎么办,例如因为两台服务器之间的网络连接已断开,但服务器仍在正常运行?这种“裂脑”场景会导致您的设置数据损坏。

另一个警告:因为您似乎使用的是 Windows(Powershell?),所以当您谈论共享存储时,您可能会想到 CIFS 文件系统。 Windows“网络共享”不是可靠的文件系统——上次我检查时,它不遵守 _commit .

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

关于postgresql - 同一数据库上的两个主实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44923535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com