在提交阶段重新启动失败的事务时,重新启动事务时会出现第二次失败。这是在MariaDB 10.2.6下运行Galera集群。
事件的顺序如下:
这种情况经常发生,虽然群集恢复,但各个线程都会收到故障。昨天这种情况在一秒内发生了15次。
我无法确定任何根本原因。似乎死锁是问题的始作俑者。这种情况应该是可以恢复的(并且经常是这样)但是由于多个客户端都试图同时解决它们的死锁,整个事情似乎都失败了。
注意:
这与earlier question有关,其中重试失败的事务导致集群完全崩溃。我设法通过仅在死锁上重试事务来防止崩溃。即如果在重启期间发生了不同类型的错误,则应用程序放弃。
我知道10.2.6不是MariaDB的最新版本。因为我有这么糟糕的经历,我现在很紧张升级。我想在升级之前了解当前的问题并且我无法在测试环境中重现错误。
答案 0 :(得分:0)
我不确定,但我怀疑3次尝试(不是2次)是合适的。提交涉及两个步骤:
当然,其中任何一种都可能反复发生,也可能以任何顺序发生。但是进行3次尝试似乎是合理的。
现在,一旦你失败了“太多”次,就可以中止并获得一个人(一个DBA类型)。我怀疑你可以用某种方式重构你的代码/应用程序逻辑/等,以避免大多数失败。您是否想提供更多详细信息,以便我们讨论这种可能性......
SHOW CREATE TABLE
。 (auto_inc,唯一键等;太多UNIQUE
键可能会加剧这种情况)INSERT
看起来像什么?