mongodb系列~ mongodb慢语句(3)

简介: 关于mongodb慢日志是如何收集

一 mongodb慢日志的开启

  1 直接设置参数,不重启服务:db.setProfilingLevel(1)

  2 添加启动参数,重启服务:添加profile=1 

二 mongodb慢日志参数说明

  查看 profiing当前级别 :db.getProfilingLevel()

  0 默认不开启记录

  1 开启记录慢日志(默认>=100ms)

  2 记录所有命令 

三 如何调整慢日志记录参数

 1 直接设置参数  db.setProfilingLevel( level , slowms ) 

 2 启动项配置文件添加参数 slowms=

    我们线上设置的是12000 也即是12S ,这样收集的sql大大减少

四 编写收集脚本,进行远程收集

  1 创建相应的表

 CREATE TABLE `mongo_slow_log` (

`id` int(11) NOT NULL AUTO_INCREMENT,

 `ip` varchar(20) DEFAULT NULL,

 `delay` varchar(10) DEFAULT NULL,
 `sqltime` datetime DEFAULT NULL,
 `sqltext` text,
 `createtime` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
  ENGINE=InnoDB AUTO_INCREMENT=22420 DEFAULT CHARSET=utf8mb4;

2 编写相应的shell脚本   

 function jilu(){
 IP=`/sbin/ifconfig eth0 | grep 'inet addr' | cut -d: -f2 | awk '{ print $1}'`
 result=`awk '$NF~/ms$/{print $1,$NF}' $1|sed 's/ms//g'|awk '$2 > 12000 {print $1,$2}'`
 if [ "$result" ];
 then
 echo "$result" > /home/a.txt
 cat /home/a.txt |while read line ;
 do echo $line ;
 yanshi=`echo $line|awk '{print $2}'`
 tiaojian=`echo $line|awk '{print $1}'`
 jieguo=`cat $1|grep $tiaojian`
 jieguo1=`echo $jieguo|sed "s/"\'"/"\""/g"`
 shijian=`echo $jieguo1|sed "s/"\'"/"\""/g"|awk '{print $1}'`
 shijianchuli=`echo "$shijian"|cut -d '.' -f 1|sed 's/T/ /g'`
 echo -e "insert into mongo_slow_log(ip,delay,sqltime,sqltext) values('$IP','$yanshi','$shijianchuli','$jieguo1')"|/usr/local/mysql/bin/mysql -u -p -h --default-character-set=utf8 l
 done
 else
 echo -e "insert into mongo_slow_log(ip,delay,sqltext) values('$IP','empty','empty')"|/usr/local/mysql/bin/mysql -u -p --default-character-set=utf8 
 }
 riqi=`date -d yesterday +%F`
 file=`find /data/mongo/shard1/ -name "shard1.log.$riqi*" -exec iconv -f CP850 -t utf-8 {} > /home/ops/result.txt \;`
 jilu "/home/ops/result.txt"

 脚本核心思想:mongo会将慢日志记录在shard文件中,当天进行脚本切割并过滤出指定sql即可,各位可自行修改(PS:本人脚本很烂,哈哈)

 五 进行分析

  用explain进行分析(explain的详细本文不会详细讲解,以后会有专门说明)

 六 收集目的

  不论是何种数据库,对慢日志语句的收集都非常重要,比如研发接口相应超时,数据库本身性能消耗很高,都可以根据慢日志进行分析。

 

 

  

 

转载于:https://www.cnblogs.com/danhuangpai/p/7592862.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值