我试图为服务提供商的网络设计一个完全冗余的MySQL集群实现。此集群中的节点将在服务提供者所在的城镇之间被地理位置分隔开来。虽然我理解为MySQL集群使用地理复制需要异步复制配置,因为集群节点所在的两个数据中心通过高带宽(10 10Gbps)、低延迟管道(~2ms)连接,我的目标是在这些数据中心之间实现地理多样性和同步复制。
每个数据中心的节点按如下方式分解:
在这种情况下,数据节点冗余性很强(我相信),考虑到来自每个节点组的节点将驻留在每个数据中心,而节点组1(数据中心A或B中)中的给定数据节点将拥有一半的数据,而来自同一数据中心中的另一个节点组的数据节点将拥有该数据的另一半。在隔离事件或将数据中心分开的其他类型故障的实例中,每个位置至少有一份数据的完整副本。
我现在关心的是在每个数据中心都有一个管理节点。我不确定是否以这种方式实现管理节点的冗余。根据我对MySQL集群的理解,如果在其中一个数据中心(假设数据中心A)发生隔离事件,而这两个位置之间的连接丢失了,数据中心B中的数据节点将开始将该数据中心中的管理节点2视为仲裁者,而不是数据中心A中的管理节点1,后者原本是仲裁者。
在我看来,这种情况造成了一个分裂的大脑操作,每个数据中心都在查看自己的仲裁器,结果,集群中仍然出现了所有的数据节点,但是只有一半的存储位置被写入其中。您破坏了同步环境。
我应该让冗余管理节点也位于单独的物理资源上的数据中心A中吗?还是这对集群的逻辑没有任何改变?我是否应该继续为数据库创建一个异步复制环境,让每个数据中心容纳自己的集群,而不是在两个地理位置之间拆分一个集群?
发布于 2015-10-22 13:27:36
如果您在半大脑的情况下完全分裂了,MySQL集群会解决它,指定一个节点作为主节点。如果您查看下面的ndb_mgm输出,您将注意到节点10行末尾的星号。它标志着主人。
这意味着,如果您的集群将被分成两个相等的部分,包含主服务器的一半将继续运行。另一半的节点将被关闭。
ndb_mgm> show
Connected to Management Server at: 10.1.1.10:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=10 @10.1.1.20 (mysql-5.6.24 ndb-7.3.9, Nodegroup: 0, *)
id=11 @10.1.1.21 (mysql-5.6.24 ndb-7.3.9, Nodegroup: 0)https://dba.stackexchange.com/questions/118767
复制相似问题