我们已经使数据库挂起了两次,并试图找到原因。
show processlist
Waiting for global read lock | INSERT INTO {myisam_table} ...
在这里,磁盘空间已满,因此我们认为问题已经解决了,但第二天中午又挂起了:
show processlist
Waiting for table level lock | UPDATE {myisam_table} ...
是什么原因造成的?
Mysql默认引擎:InnoDB。
数据库混合了MyISAM和InnoDB引擎的表。
日志发布在这里:
http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/
所有备份都在上午7:00完成,并且永远不会在工作时间内运行。数据库在午餐时间卡住了。
—
ArturKędzior13年
如果MyISAM表被锁定在一个数据库会话中,则必须有另一个数据库会话将其锁定。请在下次发生此情况时显示完整的过程清单。
—
RolandoMySQLDBA 2013年
@Arturito我们可能不需要
—
Michael-sqlbot
SHOW FULL PROCESSLIST
,SHOW PROCESSLIST
所以我们可以看到每个线程的整个查询...但是就目前而言,如果MyISAM
涉及到表,则看起来像长时间运行的SELECT
查询在42686中正在阻塞UPDATE
在43506中的查询,这反过来又阻止SELECT
了紧随其后的每个查询。
mysqldump
。您当时正在运行备份吗?