vlambda博客
学习文章列表

基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL

基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL

概述

很多时候我们在MySQL数据库中会经常出现事务之间阻塞的问题,也就是阻塞lock,oracle的话实际上之前提供的脚本已经可以很直观看出阻塞的问题,那么对于mysql数据库我们应如何快速查找定位问题根源?

这里介绍怎么用innotop工具来分析,用实验来进行演示。


一、环境准备

数据库:mysql5.7.24 操作系统:centos7.3

1、数据准备

create database t DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
use t;
create table test_blocking(id int primary key, name varchar(12));
insert into test_blocking select 1, 'hwb' from dual;
insert into test_blocking select 2, 'hwb2' from dual;
insert into test_blocking select 3, 'hwb3' from dual;

基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL


2、参数设置

为了实验效果,我们先将参数innodb_lock_wait_timeout设置为100,否则很快就会提示ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

show variables like 'innodb_lock_wait_timeout';
set global innodb_lock_wait_timeout=100 ;

基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL



二、被阻塞环境模拟

1、第一个会话

select connection_id() from dual;
set session autocommit=0;
select * from test_blocking where id=1 for update;

基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL


2、第二个会话

在第二个连接会话中执行更新脚本

select connection_id() from dual;
update test_blocking set name='kk' where id=1;

基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL



3、第三个会话--Innotop工具分析

3.1、安装innotop工具

# yum -y install perl-TermReadKey.x86_64 perl-IO-Socket-SSL perl-DBI.x86_64 perl-DBD-MySQL.x86_64 \
perl-Digest-MD5 perl-ExtUtils-MakeMaker
# wget -c https://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-1.el7.x86_64.rpm
# rpm -ivh percona-toolkit-3.0.13-1.el7.x86_64.rpm
# git clone https://github.com/innotop/innotop
# cd innotop
# perl Makefile.PL
# echo "export PATH=$PATH:/opt/innotop">>/etc/profile
# source /etc/profile
# innotop -h 172.26.151.70 -u root -pfswl@1234

3.2、观察

如下所示,Innotop工具很多情况下也不能定位到阻塞的语句(Blocking Query), 仅仅能获取一些锁相关信息

基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL


基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL


基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL

基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL
温馨提示
基于MySQL监控利器-Innotop快速定位mysql数据库阻塞事务源头SQL

最新开班:Oracle数据库12c认证专家(OCP)

开班时间:2019年11月24日(周日9:00-17:00)

联系方式:

QQ咨询:48710363  1695867545

上课地点:荆州路334号荣广商务中心B座(4、12号线大连路站1号出口3分钟即到)