无法在 Mariadb Galera 集群上添加或更新子行错误

Cannot add or update a child row error on Mariadb Galera cluster

当我 运行 在我的网络服务器上进行性能测试时,大约 2% 的请求 return 这个错误:

Cannot add or update a child row: a foreign key constraint fails.

这是我的设置的简要说明

web 服务器(centos 7 上的 .net core 2)-> Ha Proxy(roundrobin 模式)-> 在多主集群中设置 3 个 MariaDb 服务器

网络服务器代码的简化版本是:

  1. 收到客户请求
  2. 在tableA中插入一行
  3. 在 table B 中插入一行,外键指向 table A。

注意:由于我使用 .net Core(带有 EF),因此每次插入之间都会打开和关闭与数据库的连接。

是否有可能在触发第二个查询之前数据没有传播到每个节点?当我将 haproxy 切换到源模式时(来自同一主机的所有连接将转到同一数据库服务器)我不再收到此错误。但是我没有得到多主集群的好处。

如何避免这个问题?

感谢帮助

这听起来像是 critical read 问题的变体。这可能会解决它:

SET SESSION wsrep_sync_wait = 7;
do your statements
SET SESSION wsrep_sync_wait = 0;