MySQL常见故障处理手册_转
MySQL常见故障处理手册
http://www.housong.net/mysql-normal-trouble-shooting.html
一、性能故障
1. 数据库主机LOAD飙高
(1)一般导致MySQL服务器LOAD突然飙高,可能的五种情况:
– 全表扫描的SQL语句;
– SELECT操作语句的执行计划走错;
– 存在UPDATE/DELETE 语句没有索引可选择,而导致堵塞其他SQL语句的执行;
– 存在修改表结构或OPTIMIZE 语句执行;
– 大数据量的导入或导出,尤其数据库的逻辑备份操作;
– 业务量大到超过服务器处理能力(我们大家都高度关注业务发展,以及公司业务特点,
– 还有与开发和运营保持良好联系,很难出现未知的业务突然爆发性增长);
(2)要解决LOAD飙高,必须先找到造成飙高的真实原因,请登陆数据库服务器后,执行命令:
1
|
SHOW PROCESSLIST;
|
2
|
或
|
3
|
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND <> ‘sleep’ AND TIME >100;
|
(3)若一直处在执行状态,且执行时间比较久,可以分析下SQL语句执行计划:
1
|
mysql>EXPLAIN SQL语句
|
(4)检查io请求状态
使用Linux命令: iostat
查看r/s(读请求),w/s(写请求),avgrq-sz(平均请求大小),await(IO等待), svctm(IO响应时间)
若执行计划不合理,则可以根据SQL类型选择是否与应用负责人联系。首先,查找造成服务器LOAD飙高的PID,特别是DELETE 或UPDATE等会堵住其他SQL语句的PID,然后进入MySQL命令行工具中,对一些SQL先记录下来,再适情考虑执行:KILL SQL PID
2. 请求处理波动,应用大量请求超时失败
(1)检查数据库的响应状态,使用tcprstat
1
|
tcprstat -l $ip_addr -t $interval -n $ count
|
按照汇报结果,切分是否为数据库端问题还是非数据库端问题.
(2)分析关键指标
com_select/insert/update/deleteinnodb_rows_read/update/delete/insertinnodb_logicial_read/physical read
使用SHOW STATUS和 orzdba -com 可以获取采样指标
(3)转向分析slow query, 检查可疑SQL
1
|
EXPLAIN SQL语句;
|
如有长时间运行异常SQL, 可以Kill SQL PID.
(4)重点关注索引的使用问题
二、复制故障
1. 复制中断
(1)备机无法连接到主服务器,可能是网络问题,也可能是主服务器的mysqld已停止;
(2)主键冲突;
(3)主从服务器数据不一致;
(4)其他原因;
为使复制继续,我们可以进行如下处理:
(1)stop slave ;
(2)start slave;
(3)检查服务是否正常:show slave status\G
若是主健冲突或数据不一致的情况,则需要额外处理:
(1)停止slave进程
1
|
STOP SLAVE;
|
(2)设置事务号,事务号从Retrieved_Gtid_Set获取
1
|
SET @@SESSION.GTID_NEXT= 'xxxxxxxxxxx'
|
(3)设置空事务
1
|
BEGIN ; COMMIT ;
|
(4)恢复事务号
1
|
SET SESSION GTID_NEXT = AUTOMATIC;
|
(5)启动slave进程
1
|
START SLAVE;
|
三、实例故障
1.MySQL实例假死
(1)再次确认mysql的运行状态
1
|
SHOW PROCESSLIST;是否有大量请求在等待处理
|
此时,为校验是否真处于MysQL假死状态,那么可以用test库中任意执行创建表或更新数据的语句,若回车键后没有响应,则一般可以断定MySQL 是否已经处于假死状态。
(2)检查mysql实例的进程的内存/交换分区状态
使用linux 命令: free -m
使用linux 命令: top
结合当前业务压力,检查内存消耗现状,消耗速度,是否开始使用交换分区,如内存消耗过快且业务压力不大,并发不高,转向对slow query的定位。
(3)检查mysql实例的进程分区使用和IO状态
使用Linux命令: df -hT
使用Linux命令: iostat -x
确认分区有足够空间,如异常,则进入对应目录,检查实例的数据和日志存放和增长情况,特别是对日志进行清理处理,或通过调整逻辑卷的大小解决问题。
检查iostat汇报值中 %user, %iowait, %idle 值是否异常,如异常且当前业务压力不大,转向对slow query的定位,同时要求主机运维人员协查物理存储的健康状况。
(4)检查mysqld的CPU使用情况
使用Linux命令: top
使用Linux命令:ps -eo pid,user,comm,pcpu,pmem,vsz | grep mysqld
结合当前业务压力和连接数,确认mysql进程的CPU占用率是否异常,如当前业务压力不大,并发不高,转向对slow query的定位。
(5)检查实例主机网络通信
使用Linux命令: ping 检测到应用主机,到复制从机的RTT
使用Linux命令: iptraf 确认实例主机的网卡带宽和速度
如以上操作发现异常,需要主机运维人员使用tcpdump进行抓包分析
(6) Slow query 分析
打印slow query日志,分析和定位造成故障的SQL, 必要时,kill 掉出现问题的SQL ID
2.应用报连接池满
(1) 检查io请求状态
使用Linux命令: iostat
查看r/s(读请求),avgrq-sz(平均请求大小),svctm(IO响应时间)
(2)运行orzdba对照SQL执行数量(QPS-sel栏和TPS-iud栏)和逻辑读消耗(Hit%-lor栏)
(3) 转向slow query分析查看行扫描Query_time和Rows_examined栏,如无明显定位和结论,进入下一步全面分析
(4)使用pt-query-digest分析全面slow query,着重分析索引的合法性
(5) 检查General log
(6) 检查Binlog, 对于DML操作, 通过mysqlbinlog工具解析binlog检查
(7) 使用Linux命令 tcpdump抓包分析,配合pt-query-digest做进一步分析排查
3. MySQL请求线程堵塞
(1)检查 processlist
1
|
processlist 主要查看 Time , State 栏的汇报值
|
(2)使用pstack 保存当前mysqld实例的栈调用,以备进一步分析
四、其它故障
1. 各种日志的标准存放路径和查看方法
(1)常规后台进程报错日志log-error路径
1
|
show variables like '%log_error%' ;
|
2
|
| log_error | /paic/mymon/data/mysqldata/mymon/mysql.err |
|
文本文件,可以直接查看,类似oracle的alert日志。
(2)慢查询日志slow_query_log_file,其设定值long_query_time
1
|
show variables like '%slow_query_log_file%' ;
|
2
|
| slow_query_log_file | /paic/mymon/data/mysqldata/mymon/cnsh230234-slow.log |
|
3
|
show variables like '%long_query_time%' ;
|
4
|
| long_query_time | 10.000000 |
|
文本文件,可以看出sql文本及sql的执行时间
(3)数据库二进制日志文件binlog
查看方法mysqlbinlog mysql-bin.000001 |more
可以直接看到事务号和sql脚本
2. mysql进程报错,类似ORA-
例如:071221 11:12:12 [ERROR] Got error 127 when reading table ‘./download_utf8/source_uesrdown’
查看127报错原因
1
|
cnsh230234: >perror 127
|
2
|
OS error code 127: Key has expired
|
3
|
MySQL error code 127: Record file is crashed
|
4
|
参考处理办法 Repair Table source_uesrdown ; Repair Table userday_money;
|
3. 忘记root密码,重置方法
(1)/etc/init.d/mysql stop
(2)mysqld_safe –skip-grant-tables &
(3)mysql -uroot -p
(4)update mysql.user set password=password(“”yourpasswd”") where user=”"root”"
(5)flush privileges
(6)quit
转载于:https://www.cnblogs.com/kaka100/p/3504212.html
MySQL常见故障处理手册_转相关推荐
- 低压抽屉柜常见故障处理方法_传真机常见故障如何处理 传真机常见故障处理方法【详解】...
如今传真机的功能是越来越全面了,内部构造也越来越复杂.因此人们在日常使用传真机过程中难免会出现各种各样的问题.那么传真机常见故障有哪些?有哪些相应的解决或排除方法呢?下面随着小编一起来了解下吧! 一. ...
- 低压抽屉柜常见故障处理方法_低压配电设备常见故障分析,处理办法介绍
低压配电线路作为配电网络中主要的一部分,在其运行的过程中直接影响着人民的生命财产安全.配电线路是电力输送的终端,对于提高电力质量有着至关重要的作用.但由于配电线路走径的复杂性,人为因素和设备因素,都会 ...
- mysql常见数据库设计_常见数据库设计
误区1:int后面的长度与存储长度无关,仅仅是显示长度. mysql手册中这个长度/值用"M"来表示的. 细心的朋友应该有注意到过mysql手册上有这么一句话: M指示最大显示宽 ...
- 低压抽屉柜常见故障处理方法_电磁流量计的常见故障及处理方法
在实际的工业生产中,流量管理需要持续监控和准确的测量.如果流量计测量发生故障异常情况,可能会导致产品生产品质和生产效率降低,严重的可能会导致生产线上的作业机械损坏.电磁流量计在工业测流中很常见,下面废 ...
- mysql 常见密码设置_设置mysql用户密码(5.6/5.7)、远程连接数据库、常用命令
注: 以上命令均需要在mysql下执行:在mysql中每行命令末尾加上分号,表示该行命令执行结束. tb_name即table name()表名. 示例: [root@centos-01inux my ...
- 如何检测mysql语法的手册_您的SQL语法有错误;查看与MySQL对应的手册
对于MySQL改变这个: DECLARE @url VARCHAR(255) SET @url = '1720'至: SET @url := '1720'在MySQL中,您没有DECLARE用户变量, ...
- 低压抽屉柜常见故障处理方法_低压开关柜的常见故障及处理方法
低压开关柜可分为GCS型低压开关柜.GCK抽出式开关柜.GGD低压固定式开关柜.组装式低压开关柜等.下面本文就给大家介绍下低压开关柜常见故障以及其使用的方法有哪些?有兴趣的小伙伴可以和本小编一起来看下 ...
- 低压抽屉柜常见故障处理方法_低压配电柜常见故障问题解决汇总
大家一定对日常生活中的低压配电柜有所了解,但它经常出现的一些故障问题你知道如何解决吗?接下来由石家庄配电柜厂家德兰电气就给大家讲解低压配电柜常见的故障与原因分析,供大家借鉴解决我们所遇到的问题. 低压 ...
- java线上处理故障_线上故障处理手册
摘要 通常处理线上问题的三板斧是重启-回滚-扩容,能够快速有效的解决问题,但是根据我多年的线上经验,这三个操作略微有些简单粗暴,解决问题的概率也非常随机,并不总是有效.这边总结下通常我处理应用中遇到的 ...
最新文章
- [百万级]通用存储过程.分页存储过程
- Github上Pandas,Numpy和 Scipy三个库中20个最常用的函数
- 分页携带请求参数_一个值得深思的小问题 请求中的参数值为空要不要携带该参数?...
- 前端学习(1533):angular简介
- 流媒体传输协议系列之--RTSP协议详解
- Hive小文件问题:如何产生、造成影响、解放办法
- 读《我们终将逝去的青春》
- Redis分布式基础主从同步
- 目标检测-20种常用深度学习算法论文、复现代码汇总
- 七月算法机器学习2 数理统计与参数估计2
- 怎么报名mysql证书_报考oraclemysql认证考试的流程有哪些
- 元胞自动机-附代码注释
- 【LOJ6038】【雅礼集训 2017 Day5】远行(LCT,树的直径)
- 混合游戏环境:让人类一直身处在物联网中(作业 全靠google)
- python 弧度制和角度制相互转换(math库和numpy库);计算反正余弦正切值
- 解决电脑可以上网却连不上局域网服务器问题
- H.264 NALU分隔Annex B和avcC
- AndroidStudio创建项目(Could not find any version)
- seo搜索引擎优化,seo搜索引擎优化名词解释
- 【金猿产品展】Wyn Enterprise——嵌入式商业智能软件,让数据分析无处不在
热门文章
- iphone(苹果)手机登陆Exchange 2013邮箱帐号的配置
- android 巧用资源文件(不断积累)
- HDU 3394 Railway(点双连通分量)
- 《一分钟经理人》学习笔记第五部分---一分钟表扬为什么有效
- CV学习笔记-特征提取
- yolov3前向传播(一)-- darknet53网络解析与实现
- MYSQL等级考试考的是Linux吗,Linux命令行下快速监控mysql
- java如何阻塞父窗体,java图形设计,窗口阻塞的问题。
- 自编码器模型详解与实现(采用tensorflow2.x实现)
- 如何在Ubuntu 18.04上安装/卸载NodeJS