热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dba+开源工具:图形化显示MySQL慢日志

工具研发者介绍贺春旸,凡普金科DBA团队负责人,《MySQL管理之道:性能调优、高可用与监控》第一、二版作者,曾任职于中国移动飞信、安卓机锋网。致力于MariaDB、MongoDB


工具研发者介绍


贺春旸 凡普金科DBA团队负责人,《MySQL管理之道:性能调优、高可用与监控》第一、二版作者,曾任职于中国移动飞信、安卓机锋网。致力于MariaDB、MongoDB等开源技术的研究,主要负责数据库性能调优、监控和架构设计。


工具下载: 登录云盘


https://pan.baidu.com/s/1a06GbTc7be5jNtUl84UlOw(提取码: 6q8x)





Slowquery工具搭建背景



由于天兔Lepus慢查询工具是运行在PHP CI框架里,而不是作为一个独立的web页面接口,所以想直接接入自动化运维平台里,移植代码比较困难,固考虑重构。


参考了开源工具Anemometer图形展示思路,并且把小米Soar工具集成进去,开发在页面上点击慢SQL,就会自动反馈优化建议,从而降低DBA人肉成本,同时也支持自动发送邮件报警功能。


agent客户端慢日志采集分析是结合Percona pt-query-digest工具来实现。


工具地址:


https://github.com/hcymysql/slowquery




安装步骤



需要安装的步骤如下:


1、percona-toolkit工具的安装


2、php web mysql环境的搭建


   # yum install httpd mysql php php-mysql -y


3、安装Slowquery并配置


4、导入慢查询日志


5、访问界面,查看慢查询


6、配置邮件报警




工具搭建配置



1、移动到web目录


# mv  slowquery  /var/www/html/


2、进入slowquery/slowquery_table_schema目录下, 导入dbinfo_table_schema.sql和slowquery_table_schema.sql表结构文件到你的运维管理机MySQL里。


注:dbinfo表是保存生产MySQL主库的配置信息。


例:


# mysql -uroot -p123456 sql_db <./dbinfo_table_schema.sql


# mysql -uroot -p123456 sql_db <./slowquery_table_schema.sql


录入你要监控的MySQL主库配置信息。


例:


mysql> INSERT INTO sql_db.dbinfo VALUES


(1,'192.168.148.101','test','admin','123456',3306);


3、修改配置文件config.php,将里面的配置改成你的运维管理机MySQL的地址 (用户权限最好是管理员)


例:


$con = mysqli_connect("192.168.148.9","admin","123456","sql_db","3306") or die("数据库链接


错误".mysqli_connect_error());  


4、修改配置文件soar_con.php,将里面的配置改成你的运维管理机MySQL的地址(用户权限最好是管理员)。


例:


//-test-dsn soar测试环境,用来分析SQL使用
$test_user='admin';
$test_pwd='123456';
$test_ip='192.168.148.9';
$test_port='3306';
$test_db='test';

5、进入到slowquery/client_agent_script目录下,把 slowquery_analysis.sh脚本拷贝到生产MySQL主库上做慢日志分析推送,按照下面的例子做修改:


#!/bin/bash
#改成你的运维管理机MySQL地址(用户权限最好是管理员)
slowquery_db_host="192.168.148.9"
slowquery_db_port="3306"
slowquery_db_user="admin"
slowquery_db_password="123456"
slowquery_db_database="sql_db"
 
#改成你的生产MySQL主库地址(用户权限最好是管理员)
mysql_client="/usr/local/mysql/bin/mysql"
mysql_host="192.168.148.1"
mysql_port="3306"
mysql_user="admin"
mysql_password="123456"
 
#改成你的生产MySQL主库慢查询目录和慢查询执行时间(单位秒)
slowquery_dir="/data/mysql/yourDB/slowlog/"
slowquery_long_time=2
slowquery_file=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password  -e "show
variables like 'slow_query_log_file'"|grep log|awk '{print $2}'`
 
pt_query_digest="/usr/local/bin/pt-query-digest"
 
#改成你的生产MySQL主库server_id
mysql_server_id=270
 
#collect mysql slowquery log into slowquery database
$pt_query_digest --user=$slowquery_db_user --password=$slowquery_db_password --port=$slowquery_db_port
--review h=$slowquery_db_host,D=$slowquery_db_database,t=mysql_slow_query_review  --history
h=$slowquery_db_host,D=$slowquery_db_database,t=mysql_slow_query_review_history  --no-report
--limit=100% --filter=" \$event->{add_column} = length(\$event->{arg}) and 
\$event->{serverid}=$mysql_server_id " $slowquery_file > /tmp/slowquery_analysis.log
 
##### set a new slow query log ###########
tmp_log=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "select
concat('$slowquery_dir','slowquery_',date_format(now(),'%Y%m%d%H'),'.log');"|grep log|sed -n -e '2p'`
 
#config mysql slowquery
$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global
slow_query_log=1;set global long_query_time=$slowquery_long_time;"
$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global
slow_query_log_file = '$tmp_log'; "
 
#delete log before 7 days
cd $slowquery_dir
/usr/bin/find ./ -name 'slowquery_*' -mtime +7|xargs rm -f ;
 
####END####

定时任务(10分钟一次)。


*/10 * * * * /bin/bash /usr/local/bin/slowquery_analysis.sh > /dev/null 2>&1


6、别的就没啥配置的了,直接打开浏览器访问slowquery.php就OK了。



查找某一个库的具体信息:



点击+号,点下面的SQL,会调用Soar反馈优化建议:



Soar有的SQL我发现不能显示Explain,所以我用PHP多显示了一次:




7、慢查询邮件推送报警配置。进入到slowquery/alarm_mail/目录里,修改sendmail.php配置信息。


例:


$smtpserver = "smtp.126.com";//SMTP服务器
$smtpserverport = 25;//SMTP服务器端口
$smtpusermail = "chunyang_he@126.com";//SMTP服务器的用户邮箱
$smtpemailto = 'chunyang_he@126.com';//发送给谁
$smtpuser = "chunyang_he@126.com";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名
$smtppass = "123456";//SMTP服务器的授权码

定时任务(每隔3小时慢查询报警推送一次)。


0 */3 * * * cd /var/www/html/slowquery/alarm_mail;


/usr/bin/php  /var/www/html/slowquery/alarm_mail/sendmail.php > /dev/null 2>&1



在线演示:


http://fander.jios.org:8008/slowquery/slowquery.php





下载方式



登录云盘链接:


https://pan.baidu.com/s/1a06GbTc7be5jNtUl84UlOw


输入提取码: 6q8x   即可下载工具脚本


现通过dbaplus社群免费为大家提供Slowquery的下载使用。若使用过程中有任何问题或建议,可随时与我们联系,欢迎大家试用!




更多免费工具&脚本




详情及下载: http://dbaplus.cn/list-142-1.html




推荐阅读
  • delphi控件大全
    本文章已收录于:delphi控件查询:http:www.torry.nethttp:www.jrsoftware.orgTb97最有名的工具条(ToolBar) ... [详细]
  • 后端开发|php教程public,function,protected,mdash,Jordan后端开发-php教程周五了啦啦啦啦-LAMP+PHP‘sOOP部门信息管理系统asp ... [详细]
  • 本文分析和介绍了GLo ... [详细]
  • Git(1)
    安装Git完毕(在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦)1.D盘新建GitTest文件夹2.打开GitTest,在空白的地方右键,3.单击GitBashHere ... [详细]
  • MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ... [详细]
  • 在yaml文件中添加以下配置信息本人用activiti版本是6.0.0,是若依微服务版.目前问题是只要启动微服务控制台隔十秒查询一次activiti定时任务sql。activiti ... [详细]
  • jquery popupDialog 使用 加载jsp页面办法
    php教程|PHP开发jqueryphp教程-PHP开发如下所示:软件市场源码,vsCode字体不变,ubuntu的所有版本,taotomcat,sqlite连接php,个人域名服 ... [详细]
  • 开发网站你需要知晓的部分专用术语
      越来越多的企业和个人都在拥有属于自己的网站门户,首当其冲的就是你得知晓几个网站方面的专业术语,先是中就有好多的客户不明白这些,造成误会是正常的,那不如我们对它有个大致的了解,这样就不容易感觉 ... [详细]
  • PHP并发读写文件问题 高手请进! ... [详细]
  • python基础(二、pycharm安装、卸载)
    3.在Ubuntu中安装PyCharmPyCharm的官方网站地址是:https:www.jetbrains.compycharm注意:安装时不要使用root用户安装,否则后期使用 ... [详细]
  • spotify engineering culture part 1
    原文,因为原视频说的太快太长,又没有字幕,于是借助youtube,把原文听&打出来了。中文版日后有时间再翻译。oneofthebigsucceessfactorshereatSpo ... [详细]
  • nvmw安装,用于控制node版本;
    之前一直使用的是nodev2.2.0版本,挺说新版本的node解决了npm安装插件产生文件夹结构过深的问题,所以就想更新试试;上网一看才发现,尼玛的node已经到了6.+版本了,好 ... [详细]
  • MariaDB 10 Slave Crash-Safe需转为GTID复制模式
    之前写了一篇《MySQL5.6crash-safereplication》,但在Mariadb10.0.X和10.1.X上不支持relay_log_info_repository ... [详细]
  • 对mysql的总结与反思_一次DB故障引起的反思和MySQL Operator选型
    前言在一次数据库故障后,我们发现业务库会根据业务的等级会划分多个MySQL实例,许多业务库会同时属于一个MySQL实例,当一个库引发问题后 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有