带有SAN的Windows上的MySQL故障转移可用

我的后台组件正在做MySQL查询。 我需要确保MySQL的高可用性(在Windows上)。 我有一个SAN可用于存储数据库文件。

这就是我的想法。

我将安装2个Windows机器,MySQL指向共享数据库文件。 一个将被激活,另一个被动(MySQL服务停止)。 我基本上需要的是在两台机器之间听取信号,当一台机器倒台时,另一台机器会启动MySQL服务。

这是正确的方法吗? 如果是这样,那里有没有任何产品/开源可以帮助我build立这样的环境?

如果我在这种主动/被动模式下使用两台不同的机器 – 我的客户将如何连接? 他们是否必须根据当前活动的机器更改其连接string(基本上是IP地址/机器名称)。

谢谢

我不会为两个数据库使用相同的文件。 其实如果我记得NTFS不会让你这样做,因为你不能访问一个已经打开的文件。 如果你通过networking输出它可能会工作,但一般来说这不会是一个好主意。

我build议为服务器提供一个浮动IP地址,某种types的中间件会将此IP移动到不同的系统(或者,如果主服务器出现故障,请设置IP /在辅助系统上启用configuration的设备)。 然后我会设置一个主/从或主人关系。 根据您的设置,主/主设置可能是您不想做的事情(基本上可以让您在主服务器和辅助服务器上写入/插入,并查看两个数据库上的更改)。 从我最初读直主奴隶应该罚款。 阅读更多关于这里的复制:

http://dev.mysql.com/doc/refman/5.0/en/replication.html

这不是一个坏的方法来解决这个问题。 我不知道你会在Windows上使用什么来实现这个目标,但是在Linux上,你最可能使用的软件实际上被称为“心跳”(Heartbeat)。 我相当确定它不能在Windows上运行,但是如果有人没有制作类似的东西,我会感到惊讶(尽pipe它可能会花费你一大笔钱)。 就我个人而言,我可以节省成本和烦恼,并使用Linux来运行我的MySQL服务器,但我希望这已经不在您的手中了。

至于让客户端“故障转移”,你可以通过提供一个“虚拟IP”来实现这一点,这个“虚拟IP”与永久分配给每台机器的IP不同,心跳服务将确保当前运行MySQL的任何一台机器也将被configuration使用服务的虚拟IP。 然后,将客户端configuration为连接到该虚拟IP或指向该虚拟IP的DNS名称,因此故障转移事件与客户端无缝连接(除了必须重新连接)。

这听起来像你想尝试群集MySQL使用Microsoft群集服务(MSCS)。 从我的快速search我不知道MySQL如何与MSCS很好地工作,但我确实find了MySQL的Microsoft Windows Server 2008故障转移群集指南 。

MySQL有它自己的集群,但是它似乎只在版本7中为Windows 开发 。