如何使MySQL集群完全失效?


0

所以我想建立一个具有高可用性的MySQL数据库服务器 - 因此我得到了两个设备(Banana Pi)并遵循了如何安装MySQL集群软件的教程。我知道只有两个设备的星座并不完全是如何使用MySQL集群,但为了节省硬件成本我现在只有这两个设备。

到目前为止,我有以下配置(sqlnode1和sqlnode2是设备的主机名):

管理节点(ndb_mgmd):

  • sqlnode1(节点ID:1)
  • sqlnode2(节点ID:2)

存储引擎(ndbd):

  • sqlnode1:配置为使用localhost上的管理节点(节点ID:3)
  • sqlnode2:配置为使用localhost上的管理节点(节点id:4)

MySQL服务器(mysqld):

  • sqlnode1:配置为使用两个ndbd节点(节点ID:5)
  • sqlnode2:配置为使用两个ndbd节点(节点ID:6)

所以基本上,每个设备都有一个正在运行的ndb_mgmd,ndbd和mysqld。

我想要实现的是,如果其中一个设备出现故障,另一个设备应该是完全可用的(出于某些非常具体的原因,我不能在这里使用简单的数据库复制)。

一旦我启动了所有组件,一切都运行正常。如果我在一个MySQL主机上更改数据,另一个会立即应用更改(反之亦然)。

但是,如果我断开其中一个设备的LAN电缆,会发生以下情况:

  • 断开连接sqlnode2:功能节点(sqlnode1)挂起一小段时间然后继续正常工作(这基本上就是我想要的)
  • 断开连接sqlnode1:运行节点(sqlnode2)会挂起很短的时间然后 根本不起作用 - 所有查询都以“4009群集故障”结束,并且只有在恢复已退出的节点的网络连接后,查询才会再次开始工作。之后,监视ndb_mgmd守护程序会显示已强制关闭节点标识4(sqlnode2上的ndbd)。

总之,整个系统似乎依赖于sqlnode1,我真的很想知道为什么会发生这种情况,因为我认为如果一个组件退出(并且另一个组件可用),一切都会继续运行。

我按照本教程设置了两个不同的管理节点: http://www.clusterdb.com/mysql-cluster/deploying-mysql-cluster-over-multiple-hosts

我错过了什么吗?或许我误解了MySQL集群是如何工作的?

Answers:


0

我没有使用过Mysql Cluster但是你应该可以在其中进行复制,如果你需要的只是复制,mysql集群的功能也比你可能需要的多得多。如果一个人关闭,MySQL集群有能力即时路由到不同的sql服务器,从而减少了每次修改主机名的dns记录或设置临时sql服务器的需要,或只是让它死了直到修复。它也可以做其他事情。所以为了帮助你,我建议使用MySQL社区版,因为它比mysql集群对你更友好。

抓住mysql社区版,这将允许你进行复制,因此,你可以设置1个mysql服务器作为编辑外翻的主服务器,第二个mysql服务器是从服务器,它可以在可配置的时间间隔内检索主服务器。您也可以在将来轻松添加更多奴隶。此外,奴隶也不一定必须在不同的机器上,你可以运行超过1个MySQL实例。然而,这将破坏复制和故障保护的目的。这很可能是您正在寻找的。另外,mysql在他们的网站上有一个指南,用于设置mysql社区版的复制。

MySQL社区服务器


谢谢,但正如我之前写的,我真的不想使用复制。但是,我认为我通过切换到Galera MySQL集群解决了我的问题,这似乎完全符合我的需要。
D.Cent

@ D.Cent好吧,很高兴你解决了,如果你能用答案回答你的问题然后将其标记为答案,表明它已经解决了。所以其他人不认为没有答案。
Frostalf

0

我通过切换到Galera MySQL集群来解决我的问题,这似乎完全符合我的需要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.