1

我使用 Percona(3 个主-主同步节点,使用 galera 负载均衡器)迁移到 SQL 集群环境,并将所有数据库转换为 InnoDB。我们现在在我们的 CakePHP 1.3 应用程序中不断得到它

2013-09-11 09:16:52 Sql_errors:会话错误:(1213:尝试获取锁定时发现死锁;尝试重新启动事务)-文件:/cake/libs/cake_session.php-行:759

2013-09-11 09:16:52 Sql_errors:会话错误:(1213:尝试获取锁定时发现死锁;尝试重新启动事务)-文件:/cake/libs/cake_session.php-行:759

2013-09-11 10:54:49 Sql_errors:会话错误:(1213:尝试获取锁定时发现死锁;尝试重新启动事务)-文件:/cake/libs/cake_session.php-行:759

2013-09-11 11:36:36 Sql_errors:会话错误:(1213:尝试获取锁定时发现死锁;尝试重新启动事务)-

因为它是 CakePHP 核心的一部分,所以我有点厌倦了做任何修改。我想知道是否有人遇到过 CakePHP 的这个问题,有什么建议可以避免它?

4

1 回答 1

0

有关此处发生的情况的详细说明,请参阅Percona XtraDB 集群:多节点写入和意外死锁

TL;DR 版本:

处理这个问题,很简单,就是在具有乐观锁定的同步复制系统中对多节点写入进行权衡。

你能做些什么来解决/解决这个问题?以下是从最简单到最复杂的一些想法:

  • 仅写入集群中的单个节点(一次)

  • 更新您的应用程序数据库库以处理突然的死锁

  • 重构您的应用程序/架构以避免数据热点

于 2013-09-16T03:38:40.877 回答