在具有 SAN 的 Windows 上进行 MySQL 故障转移

在具有 SAN 的 Windows 上进行 MySQL 故障转移

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

我也是这么想的。

我将安装 2 台 Windows 计算机,其中 MySQL 指向共享数据库文件。一台为主动计算机,另一台为被动计算机(MySQL 服务已停止)。我基本上需要的是两台计算机之间的心跳,当其中一台计算机停机时,另一台计算机实际上将启动 MySQL 服务。

这是正确的方法吗?如果是这样,是否有任何产品/开源可以帮助我设置此环境?

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

谢谢

答案1

我不会对两个数据库使用相同的文件。实际上,如果我没记错的话,NTFS 不允许您这样做,因为您无法访问已经“打开”的文件。如果您通过网络导出它,它可能会起作用,但一般来说这不是一个好主意。

我建议为服务器设置一个浮动 IP 地址,即某种中间件,它会将此 IP 移动到不同的系统(或者在主系统发生故障时设置 IP/启用辅助系统上配置的设备)。然后,我将设置主/从或主主关系。根据您的设置方式,主/主设置可能是您不想做的事情(基本上,您可以在主服务器和辅助服务器上写入/插入,并查看两个数据库上的更改)。从我最初阅读的内容来看,直接使用主从应该没问题。在此处阅读有关复制的更多信息:

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

答案2

这不是解决问题的坏办法。我不知道你会在 Windows 上使用什么来实现这一点,但在 Linux 上,你最有可能使用的软件实际上叫做“Heartbeat”。我相当肯定它不能在 Windows 上运行,但如果没有人制作类似的东西我会感到惊讶(尽管这可能会花费你一大笔钱)。就我个人而言,我会节省成本和烦恼,使用 Linux 来运行我的 MySQL 服务器,但我希望这不由你决定。

至于使客户端“故障转移”,您可以通过提供“虚拟 IP”来实现,该 IP 与永久分配给每台计算机的 IP 不同,并且心跳服务将确保当前运行 MySQL 的任何计算机也将配置为使用虚拟 IP 进行服务。然后,您将客户端配置为连接到该虚拟 IP,或指向该虚拟 IP 的 DNS 名称,因此故障转移事件对客户端来说是无缝的(除了它们必须重新连接)。

答案3

听起来你想尝试使用 Microsoft Cluster Services (MSCS) 来集群 MySQL。通过我的快速搜索,我不确定 MySQL 与 MSCS 的配合程度如何,但我确实发现Microsoft Windows Server 2008 故障转移群集的 MySQL 指南

MySQL 有自己的集群,但似乎只在发展适用于 Windows 版本 7。

相关内容