0、导读
在slave上,发现SQL thread长时间处于Opening tables状态
1、问题描述 朋友的数据库,做了主从replication复制。在slave实例上,SQL thread的长时间处于Opening
tables状态,复制进程异常。
【faq】 【native】 【mysql】 【innodb】 【线程】 【thread】 点击查看原文>
0、导读
有个MySQL服务器的磁盘I/O总有过高报警,怎么回事?
1、问题
我的朋友小明,TA有个MySQL服务器最近总是报告磁盘I/O非常高,想着我这有免费的不用白不用的企业技术服务(TA自己这么想的),就找我帮忙给把把脉。
作为一个经验丰富(踩坑不断)的DBA,出现这种问题,一般来说,磁盘I/O很高无非是下面几个原因引起:
方法论已有,接下来就是动手开始排查了。
2、排查
…
[获取更多]我们先了解下InnoDB引擎表的一些关键特征:
…
[获取更多]我们知道,有时候为了debug或跟踪方便,会临时打开MySQL的general log。如果在线业务请求比较频繁的话,会导致瞬间产生大量的日志,一定程度上会影响IOPS性能。
此外,我们还有一种变通的办法,那就是打开slow query log,然后设置 long_query_time = 0,这样也可以记录所有请求log,而且记录的log比general log还要来的小,他产生的IOPS性能影响可能会比直接打开general log的影响来的小,可事实果真如此吗?我们来对比测试下就知道了。
测试试用MySQL版本: …
[获取更多]在MySQL复制环境中,我们通常只根据 Seconds_Behind_Master 的值来判断SLAVE的延迟。这么做大部分情况下尚可接受,但并不够准确,而应该考虑更多因素。
首先,我们先看下SLAVE的状态:
yejr@imysql.com [(none)]> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event *** Master_Log_File: mysql-bin.000327 Read_Master_Log_Pos: 668711237 Relay_Log_File: mysql-relay-bin.002999 Relay_Log_Pos: 214736858 Relay_Master_Log_File: mysql-bin.000327 Slave_IO_Running: Yes Slave_SQL_Running: Yes *** Skip_Counter: 0 Exec_Master_Log_Pos: 654409041 Relay_Log_Space: 229039311 *** Seconds_Behind_Master: 3296 ***
可以看到 Seconds_Behind_Master 的值是 3296,也就是SLAVE至少延迟了 3296 秒。
…
[获取更多]本文分析了mysqld进程关闭的过程,以及如何安全、缓和地关闭MySQL实例,对这个过程不甚清楚的同学可以参考下。
关闭过程:
如果是客户端发起的关闭,则会新建一个专用的关闭线程
如果是直接收到 SIGTERM 信号进行关闭的话,专门负责信号处理的线程就会负责关闭工作,或者新建一个独立的线程负责这个事
当无法创建独立的关闭线程时(例如内存不足),MySQL Server会发出类似下面的告警信息:
Error: Can’t create thread to kill server
关闭TCP/IP网络监听,关闭Unix Socket等渠道
…
[获取更多]作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#16 […]
作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#16 […]