我使用Percona(3个主 - 主同步节点,使用galera负载均衡器)移动到SQL集群环境,并将所有dbs转换为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这个问题,有什么建议可能对避免它有用吗?
答案 0 :(得分:0)
要详细了解此处发生的情况,请参阅Percona XtraDB Cluster: Multi-node writing and Unexpected deadlocks。
TL; DR版本:
处理这个问题很简单,就是在具有乐观锁定的同步复制系统中进行多节点写入的权衡。
你可以做些什么来解决这个问题?以下是从最简单到最复杂的一些想法:
仅写入群集中的单个节点(一次)
更新应用程序数据库库以处理突然死锁
重构您的应用程序/架构以避免数据热点