mariadb - 无法在 Mariadb Galera 集群上添加或更新子行错误
问题描述
当我在我的网络服务器上运行性能测试时,大约 2% 的请求返回此错误:
Cannot add or update a child row: a foreign key constraint fails.
这是我的设置的简要说明
Web 服务器(centos 7 上的 .net core 2)-> Ha 代理(循环模式)-> 在多主集群中设置 3 个 MariaDb 服务器
网络服务器代码的简化版本是:
- 接收来自客户端的请求
- 在表 A 中插入一行
- 用表 A 的外键在表 B 中插入一行。
注意:由于我使用 .net Core(带有 EF),因此与数据库的连接在每次插入之间打开和关闭。
是否有可能在第二个查询被触发之前数据没有传播到每个节点?当我将 haproxy 切换到源模式(来自同一主机的所有连接将转到同一数据库服务器)时,我不再收到此错误。但是我没有得到拥有多主集群的好处。
我怎样才能避免这个问题?
谢谢您的帮助
解决方案
这闻起来像是关键读取问题的变体。这可能会解决它:
SET SESSION wsrep_sync_wait = 7;
do your statements
SET SESSION wsrep_sync_wait = 0;
推荐阅读
- cloud-foundry - 如何在 Windows 中查看 PCF .droplet 文件的内容?
- apache-kafka - 如何通过kafka客户端查看集群中运行的kafka服务器的数量和IP?
- ios - 如何将尺寸类应用于 Xcode 中的 UIButton
- git - Ansible 设计模式可以安全地将 SSH 密钥存储在 Git 存储库中吗?
- r - 空数据框中的R日期时间格式
- machine-learning - 根据人类规则生成名称
- asp.net-mvc-5 - signalr2 asp.net,vc5 如何为发送和接收的消息设置不同的 CSS 样式?
- python - Django中的作业调度
- javascript - 角度 6 的无限双向滚动容器
- sql-server - SQL Server 查询中的 SQL Pivot 交换值