mysql排错 (一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一,线程阻塞


1) show processlist 显示前100条线程:

   stat有sleeping等待用户输入,updating正在更新数据,sending update等在把结果发给用户,lock查询被锁。


2) show engine innodb status


3)show innodb status只是其一种模式的直接展现,并且只能交互式开启,无法自动循环捕获信息
innodb状态信息输出到 err 日志   在如何 库 下都可以,推荐在 test  数据库下创建如下表
mysql> create table innodb_monitor(a int) engine=innodb;
Query OK, 0 rows affected (0.09 sec)

创建表后innodb会每过15秒输出一次innodb状态信息到error log,通过删除表停止该monitor功能。


4)通过日志排错:

1.错误日志文件:log_errorobal variables like 'log_error';
+---------------+-----------------------------------------+
| Variable_name | Value      
| log_error   | /mydata/data1/localhost.localdomain.err |
+---------------+-----------------------------------------+

2.临时打开通用日志:(打开以后所有查询指令都会保存下来,默认关闭)

mysql> set global general_log='on';
Query OK, 0 rows affected (0.00 sec)

这是mysql会在数据目录下生成mydb3.log 文件,记录查询语句

[root@mydb3 mysql]# ls
auto.cnf        ib_logfile2  mydb3-relay-bin.000014  mysql               test         wwang
ib_buffer_pool  master.info  mydb3-relay-bin.000015  performance_schema  uxallowance
ibdata1         mydb3.err    mydb3-relay-bin.index   relay-log.info      uxintegral
ib_logfile0     mydb3.log    mydb3-slow.log          set                 uxscan
ib_logfile1     mydb3.pid    myslave                 show                uxstatistic

[root@mydb3 mysql]# cat mydb3.log 
/usr/local/mysql/bin/mysqld, Version: 5.6.28 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
160518  7:42:05   187 Query     SET PROFILING=1
                  187 Query     SHOW STATUS


3.在有些时候,你会遇到其他人员反映程序执行慢,你怀疑可能是sql 执行慢导致,而又不知道具体的是那一条sql执行导致的,这个时候你可以临时开启慢查询日志,一般情况下慢查询都是开启的

mysql> set global slow_query_log=on;
Query OK, 0 rows affected (0.00 sec)


5)事物相关

 查看正在锁的事务 
    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务

    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS

kill <线程>

INNODB_TRX表主要是包含了正在InnoDB引擎中执行的所有事务的信息,包括waiting for a lock和running的事务

INNODB_LOCKS表主要包含了InnoDB事务锁的具体情况,包括事务正在申请加的锁和事务加上的锁。

INNODB_LOCK_WAITS表包含了blocked的事务的锁等待的状态




    本文转自UVN2015  51CTO博客,原文链接:http://blog.51cto.com/10851095/1946979,如需转载请自行联系原作者




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
348
分享
相关文章
MySQL 排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题
MySQL 排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题
241 0
《MySQL排错指南》导读
当这些信息综合到一起的时候,它们能够详细解释MySQL操作的每个方面。但是,如果你不知道问题是如何发生的,你可能会从文档中提到的大量建议中忽略掉真正的原因。即使你向专家咨询问题产生的原因,他们也可能只会给出很多的建议,你仍需要找出真正的原因。
1559 0

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等