主从式自动故障转移策略Mysql复制 – 为什么这不起作用?

我想为这个故障转移策略提供一些反馈意见,这些故障转移策略是针对一个集群而devise的一些MySQL服务器的,我想检查一下是否有什么明显的我不会在这里丢失。

一个应用程序服务器在日常操作中连接到一个mysql主服务器,并且有一个mysql-server作为从服务器来进行主从复制

如果mysql服务器失败,我想让web应用程序尝试连接到主服务器,然后在尝试n失败后执行以下操作:

  • 假定主人将不再可用
  • 向从服务器发送信号以停止复制
  • 发送一个信号给从服务器,告诉它作为新的mysql主服务器
  • 再次开始连接到服务器,从现在起就像主人一样对待它

一旦应用程序重新启动并为用户提供服务,我希望能够在后台启动一个新的从服务器,一旦它准备好为请求提供服务,再次设置主从服务器复制以提供相同的故障转移支持之前。

我很确定这是以前做过的,但是我看不到任何的指导,所以我假设一定有一些明显的原因,你不会尝试这个,我还没有想到。

采用这种方法提供像MySQL这样的自动故障转移有哪些缺陷?

顺便说一句,我意识到主 – 主复制,但是a)我已经看到它出错了,而且b)似乎令人担忧地过于复杂。

谢谢

自动故障切换的原因不利于复制滞后。 如果从服务器发生故障并发生故障切换,则可能正在使用尚不存在的密钥写更新,因为主服务器的插入操作尚未完成。 复制滞后越多,这就是一个问题。 在我的公司,我们使用DRBD进行自动故障转移,因为您故障转移到的DRBD服务器是原始主服务器的精确磁盘级副本。 作为策略,我们为主/从和主/主设置做了故障转移手册。

你想要的是一个高可用性集群,我认为你的build议方法似乎有点奇怪。

实现这一目标的一个好方法是创build一个Linux HA群集,并使用文件系统级的DRDB同步来同步您的MySQL。

在这样的设置你有3件事情:

  1. 群集消息传递层(Linux-HA或CoroSync)
  2. 群集资源pipe理器(Pacemaker)
  3. 磁盘同步(DRDB)

而不是在您的应用程序中创build大量代码,而是使用虚拟IP地址来移动到当前活动节点。 你也可以使用STONITH(在头部拍摄其他节点(我没有这样做)),以确保在尝试接pipe资源之前,第一个节点实际上已经死亡。

有一些很棒的材料可以阅读这些链接: http : //www.linux-ha.org/wiki/Main_Page http://www.clusterlabs.org/wiki/DRBD_MySQL_HowTo http://theclusterguy.clusterlabs.org/

我不排除主 – 主复制。 实际上你所描述的几乎是主 – 主复制。

看看MMM(MySQL的多主复制pipe理器)。 http://mysql-mmm.org/它在mysql层工作,所以它比基于OS的集群效果好得多。