我使用 Percona(3 个主-主同步节点,使用 galera 负载均衡器)迁移到 SQL 集群环境,并将所有数据库转换为 InnoDB。 我们现在在我们的 CakePHP 1.3 应用程序中不断得到这个。
2013-09-11 09:16:52 Sql_errors: 会话错误: (1213: 发现死锁 试图锁定时;尝试重新启动交易) - 文件:/蛋糕/libs/cake_session.php - 行:759
2013-09-11 09:16:52 Sql_errors: 会话错误: (1213: 发现死锁 试图锁定时;尝试重新启动交易) - 文件:/蛋糕/libs/cake_session.php - 行:759
2013-09-11 10:54:49 Sql_errors: 会话错误: (1213: 发现死锁 试图锁定时;尝试重新启动交易) - 文件:/蛋糕/库/cake_session.php - 行:759
2013-09-11 11:36:36 Sql_errors: 会话错误: (1213: 发现死锁 试图锁定时;尝试重新启动交易) -
因为它是CakePHP核心的一部分,所以我有点厌倦了进行任何修改。我想知道是否有人曾经遇到过 CakePHP 这个问题,有什么建议可能有助于避免它?
有关此处发生的情况的全面说明,请参阅 Percona XtraDB 集群:多节点写入和意外死锁。
DR版本:
处理这个问题很简单,就是在具有乐观锁定的同步复制系统中进行多节点写入的权衡。
您可以做些什么来解决此问题? 以下是从最简单到最复杂的一些想法:
仅写入群集中的单个节点(一次)
更新应用程序数据库库以处理突然死锁
重构应用程序/架构以避免数据热点