2

我们目前有以下问题导致我们的应用程序出现故障。我们所做的所有查询都进入“等待表”状态并停留在那里,导致 MySQL 服务器连接被用完。

根据 MySQL 手册,我们调查了问题并了解了它的含义

等桌,等桌

线程收到一个表的基础结构已更改的通知,它需要重新打开表以获取新结构。但是,要重新打开表,它必须等到所有其他线程都关闭了有问题的表。

如果另一个线程对相关表使用了 FLUSH TABLES 或以下语句之一,则会发生此通知:FLUSH TABLES tbl_name、ALTER TABLE、RENAME TABLE、REPAIR TABLE、ANALYZE TABLE 或 OPTIMIZE TABLE。

我用 SHOW PROCESSLIST 检查了我们正在运行的进程,发现没有数据定义语言语句,或者上面列表中的任何语句。

还有什么可能导致这种情况?

4

2 回答 2

1

我今天也有同样的问题。最后发现是大查询并发和备份过程造成的。带有--master-data 的mysqldump 可能会导致flush table 命令。请参阅此 http://bugs.mysql.com/bug.php?id=35157

我的情况是:flush 命令正在等待大查询;其他查询正在等待刷新表命令完成,因此它们被阻止。大查询完成后,一切顺利。

所以我想你当时可能有一个很大的疑问。

于 2014-10-01T09:35:35.643 回答
1

我们并没有真正找到导致问题的答案,但亚马逊的自动备份功能似乎是罪魁祸首。在联系亚马逊支持后,我们现在重新启动并运行。

于 2013-10-31T15:44:31.877 回答