MariaDB Galera 集群参照完整性约束

Posted

技术标签:

【中文标题】MariaDB Galera 集群参照完整性约束【英文标题】:MariaDB Galera Cluster referential integrity constraint 【发布时间】:2017-10-04 22:45:23 【问题描述】:

我们正在为我们的应用程序评估 MariaDB Galera 集群。据我了解,集群支持行级和语句级复制。我们倾向于行级复制。我们的数据模型有多个相互关联的实体。我们将在实体之间建立外键关系。

想了解如果我们使用基于行的复制,集群将如何处理以下场景。

1>集群有3个节点

2> 有 Class 和 Student 等实体。在这我们有一个外键 Student -> Class

3> 我们有两个节点(N1 和 N2)从两个不同的事务中获得两个单独的更新

A) 在时间 t1:节点 N1 分别获得特定班级 c1 和 c2 的学生(s1 和 s2)的插入。

B) 在时间 t2:类 c1 从节点 N2 中删除

C) 在时间 t3:更改(学生 s1 和 s2 的添加)从 N1 推送到 N2

是否会回滚涉及添加学生的整个事务?

【问题讨论】:

【参考方案1】:

RBR

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

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

更多Galera tips

一般来说,每当您遇到“死锁”时,只需重新运行整个事务即可。它可能会第二次工作(或者遇到一些其他错误,因为远程事务已使其成为当前节点)。

【讨论】:

以上是关于MariaDB Galera 集群参照完整性约束的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB Galera 集群设置问题

Mariadb配置Galera集群

MariaDB Galera集群部署--技术流ken

MariaDB GALERA 集群双节点部署

galera mariadb集群恢复策略

Mariadb-Galera集群杂记