mysql中的Waiting for tables

  • 时间:
  • 浏览:5
  • 来源:5分3D_5分排列5

The thread got a notification that the underlying structure for a table has changed and it needs to reopen the table to get the new structure. However, to reopen the table,

综合上篇的所写,Mysqldump的在5.0的bug加在数据库的低效子查询构成这次故障的由于。

When using the –master-data option with mysqldump, mysqldump uses a FLUSH TABLES command. However, this statement got replicated to the slave(s), which caused the slave(s) to block unnecessarily while the FLUSH tables command completed.

http://bugs.mysql.com/bug.php?id=35157

执行,你这种子查询不可能 执行了很长时间,阻塞了flush tables的操作,最后由于了雪崩,所有的请求都被阻塞:

Single-transaction你这种选项是加在了的,希望再一次被打破 >_<

最后想还是想到到官网上去看看,mysqldump+flush tables是是否是有bug,

-uroot -P$port –protocol=tcp –single-transaction –master-data=2是那末 的

从文档上的解释来看,是主库做了另2个 flush tables的操作,由于所有的表都不想 打开,要是 不可能 在10-07号放假,应该不想其他同学在主库上执行flush tables,要是 从日志中还不想 看得人:

那末 备库的什么操作会有flush tables,真的百思不其解,当我们都都备库在6点事先做的是什么,后端应用的dump?还是数据库的备份?是全是xtrabackup,很有不可能 是xtrabackup在备份的事先做的fulsh tables,查看备份脚本,应该轮到mysqldump做逻辑备份操作了,并全是xtrabackup,检查了mysqldump的备份脚本,脚本里:

1044 system user Connect 27406 Flushing tables FLUSH TABLES

The thread got a notification that the underlying structure for a table has changed and it needs to reopen the table to get the new structure. However, to reopen the table, it must wait until all other threads have closed the table in question.

一点一点还不想 判断是系统本人执行了你这种操作,那末 既然全是主库上执行而来,那末 你这种flush tables操作是从slave上克隆技术过来的(M-M形态学 ),

在5.0地处的bug很好的解释了你这种现象图片,在mysqldump加入了–master-data就会将flush tables记录到binglog中,要是 在被同步到主库,主库执行binglog后,不可能 有另2个 大查询正在

接着上篇中遇到的mysql子查询,在现象图片的诊断中,丹臣注意到另2个 较为严重的现象图片,要是 当我们都都生产库中完整的数据库访问请求都地处Waiting for tables的清况 ,在将大查询kill掉后,所有的请求恢复正常;简单的理解为大查询阻塞了一点访问请求,要是 你这种理论是不可信,不可能 阻塞该表的DML还还不想 理解,要是 把该数据库上的所有请求都阻塞了,这还是说不通的。那末 当我们都都就来看看所有的请求地处Waiting for tables你这种清况 是什么由于由于的:

唉,搜索了一下你造发现了蹊跷:

This notification takes place if another thread has used FLUSH TABLES or one of the following statements on the table in question: FLUSH TABLES tbl_nameALTER TABLERENAME TABLEREPAIR TABLEANALYZE TABLE, orOPTIMIZE TABLE.

it must wait until all other threads have closed the table in question.

峰回路转,山穷水尽,哈哈