【问题标题】:cake_session 1213: Deadlock found when trying to get lock; try restarting transactioncake_session 1213:尝试获取锁时发现死锁;尝试重启事务
【发布时间】:2013-09-20 02:16:54
【问题描述】:

我使用 Percona(3 个主-主同步节点,使用 galera 负载均衡器)迁移到 SQL 集群环境,并将所有 db 转换为 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 的这个问题,有什么建议可以避免它?

【问题讨论】:

    标签: php mysql sql cakephp


    【解决方案1】:

    有关此处发生的情况的详细说明,请参阅Percona XtraDB Cluster: Multi-node writing and Unexpected deadlocks

    TL;DR 版本:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-13
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2011-01-20
      相关资源
      最近更新 更多