您所知,MySQL InnoDB Cluster由3个元素组成:至少3台服务器的组复制群集
用于管理集群的MySQL Shell
将流量从应用程序服务器发送到集群的MySQL路由器
在会议上介绍解决方案时,一个主要问题是我应该在哪里放置路由器?答案始终是相同的:安装路由器的最佳位置是应用程序服务器!
路由器是一个非常轻量级的过程,它可以从集群的元数据中获取配置,并且不需要大量的资源或维护。
因此,理想的设置如下:
但是由于许多(晦涩的?)原因,有时人们不希望将MySQL路由器与应用程序服务器安装在同一服务器上,而是希望将其放置在自己的服务器实例上(希望他们不是同一物理机上的VM)机器
)。当然,如下所示,可以进行此设置,但是,在这种特定情况下,是的,路由器是一个spof(单点故障)。这意味着,如果路由器或安装该路由器的服务器崩溃,则所有应用程序服务器都无法再与数据库联系:
如果您确实要进行此类设置,则必须为MySQL路由器设置HA。这种HA设置非常依赖于您的基础结构,因为您可能必须使用虚拟IP,并且在Linux和Windows上,这种管理方式不同。
因此,如果要将MySQL路由器安装在建议的应用程序服务器以外的其他位置,则必须自己注意路由器的HA。
当然,它们是为MySQL路由器实现此类HA设置的大量解决方案,我将在此博客上尝试说明其中的一些。关于该主题的下一篇文章将是
原理
原理很简单,您将在多台计算机(至少一个以上)上运行多个资源(MySQL路由器),以及应用程序将用于连接到路由器的VIP(虚拟IP)资源。如果运行VIP资源的“路由器资源”崩溃,则VIP将自动移动到另一个具有“路由器资源”的服务器/节点:
如果路由器消失,则VIP将发送到另一个节点:
当然,如果您的应用程序可以使用某种轮询(大多数MySQL连接器允许这样做),则可以拥有多个VIP资源,如下所示:
结论
如果遵循建议,MySQL路由器不是单点故障,但是如果您希望将其放在自己的服务器上,则必须为其设置HA,因为它非常依赖于基础结构。