2017-05-06 83 views
1

我们正在为我们的应用程序评估MariaDB Galera集群。据我所知,该集群支持行级和语句级复制。我们倾向于行级复制。我们的数据模型有多个相互关联的实体。我们将在这些实体之间建立外键关系。MariaDB Galera集群参照完整性约束

想了解我们是否使用基于行的复制如何处理以下情况。

1>集群有3个节点

2>有喜欢类和Student实体。在此,我们有一个外键的学生 - >类

3>我们得到了两个节点(N1 & N2)从两个不同的交易

A)得到两个单独的更新在时间t1:节点N1获得分别为学生(s1和s2)插入特定类别c1和c2。

B)在时间t2:类C1被从节点N2

C)删除在时间t3:变化(除了学生s1的和S2)会从N1被推到N2

涉及学生加入的整个交易会被回滚吗?

回答

2

RBR only

当时COMMIT,你必须检查错误。这是与其他节点检查冲突的时间。

也就是说,一个节点可能没有冲突,只能找出(在COMMIT)在该节点上看起来不错的东西会与在其他节点上同时发生的东西发生冲突。

更多Galera tips

一般情况下,当你得到“僵局”,只需重新运行整个事务。它可能会第二次工作(或者遇到其他错误,现在远程事务已经使它成为当前节点)。