import re
import sys
import getopt
import MySQLdb
from subprocess import call
import os host='10.76.45.7'
port=3306
user='test'
password='test'
dbName='test' def loadSlowLogtoDb(mysqlConn,keyValueList):
insertSql="insert into slowLog( \
Rows_examined,Rows_sent,Thread_id,arg,cmd,db,fingerprint,host,ip,timestamp,user) \
values(%s,%s,%s,%s,%s,%s,%s,%s,%s,from_unixtime(%s),%s ) " % \
(keyValueList['Rows_examined'],keyValueList['Rows_sent'],keyValueList['Thread_id'],keyValueList['arg'],keyValueList['cmd'],keyValueList['db'],keyValueList['fingerprint'],keyValueList['host'],keyValueList['ip'],keyValueList['timestamp'],keyValueList['user'])
#print insertSql
try:
cursor = mysqlConn.cursor()
cursor.execute(insertSql)
mysqlConn.commit()
except MySQLdb.Error, e:
print "Error %s: %s" % (e.args[0], e.args[1])
pass def getConnection():
try:
conn=connection=MySQLdb.connect(host=host, port=port, user=user, passwd=password, db=dbName,connect_timeout=10)
return conn
except MySQLdb.Error, e:
print "Error %s: %s" % (e.args[0], e.args[1])
pass
return None def main(argv): try:
opts, args =getopt.getopt(argv,"hs:",["slowFileName="])
except getopt.GetoptError:
print 'processFile.py -s <slowFileName>'
sys.exit(1)
for opt, arg in opts:
if opt == '-s':
slowFileName= arg
print "slowFileName is %s" %(slowFileName) slowFileNameEventDetail="%s.EventDetail" %(slowFileName)
generateEventDetailCmd="/usr/local/bin/pt-query-digest --filter '$event->{Rows_examined} >=1000 && print Dumper $event' --noreport %s > %s " %(slowFileName , slowFileNameEventDetail)
print generateEventDetailCmd
os.system(generateEventDetailCmd)
slowFile = open(slowFileNameEventDetail)
keyValueList={}
conn=getConnection()
for line in slowFile:
if None != re.match("^\$VAR1 = {$",line):
print "begin"
keyValueList={}
elif None != re.match("};",line):
print "end"
loadSlowLogtoDb(conn,keyValueList)
else:
#print line
lineStrip=line.strip()
lineLen=len(lineStrip)
if lineStrip.endswith(','):
lineWitoutLastComma=lineStrip[0:-1]
else:
lineWitoutLastComma=lineStrip
#print lineStrip
keyValuePair=re.split(' => ',lineWitoutLastComma)
if len(keyValuePair)==1:
keyValueList["arg"]="undefined"
continue
#print keyValuePair[0]
#print keyValuePair[1]
keyValueList[keyValuePair[0]]=keyValuePair[1] if __name__ == "__main__":
main(sys.argv[1:])

将有效慢日志转存到数据库v2的更多相关文章

  1. ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(四)

    这是第四步点击保存将信息存入数据库中. 这个就简单了利用ajax将JSON字符串传到后台然后这里有个知识点就是将DataTable直接存入数据库中.代码如下: 一.界面获取数据JS代码: //保存订单 ...

  2. 也用 Log4Net 之将日志记录到数据库的后台实现 (二)

    也用 Log4Net 之将日志记录到数据库的后台实现 (二)  大家下午好,昨天讲了配置,今天我们讲讲后台实现,在完成了后台实现后,我们才能真正意义上的解决把自定义属性字段值录入到数据库中. 在开写之 ...

  3. 也用 Log4Net 之将日志记录到数据库的配置 (一)

    也用 Log4Net  之将日志记录到数据库的配置 (一) 前段时间我一直想做一个通用一点的日志记录系统,可以便于不同的业务组调用进行日志记录及分析.本来打算着自己下手写一个,后面发现各业务组可能会需 ...

  4. SQL Server 2008无日志文件附加数据库

    1.新建一个同名数据库. 2.停止数据库服务,覆盖新建的数据库主文件(小技巧:最好放在同一个磁盘里面,把新建的数据库主文件删掉或移开,再把要恢复的数据库主文件剪切过去,这样就可以节省时间.) 3.启动 ...

  5. SQL Server 2005无日志文件附加数据库

    公司网站运营两年多了,日志文件超级大,在重装系统的时候,为了省事,就没有备份日志文件,而且是没有分离就把日志文件给删掉了(下次一定要记得先分离再删日志文件).结果造成数据库怎么都附加不上.出现错误. ...

  6. 飘逸的python - zlib压缩存到数据库

    当每天有大量的数据存到kv数据库中去,且value数据很大,于是想压缩后再存进去. 之前提到了 gzip压缩,为什么不直接用gzip呢. 其实更确切的说gzip是一种文件格式,它压缩成gzip文件,而 ...

  7. java中的中文参数存到数据库乱码问题

    关于java中的中文参数乱码问题,遇见过很多,若开发工具的字符集环境和数据库的字符集环境都一样,存到数据库中还是乱码的话,可以通过以下方法解决: 用数据库客户端检查每个字段的字符集和字符集校对和这个表 ...

  8. 关于使用Log4Net将日志插入oracle数据库中

    1.关于配置文件. <?xml version="1.0" encoding="utf-8" ?> <configuration> &l ...

  9. 利用LogParser将IIS日志插入到数据库

    利用LogParser将IIS日志插入到数据库 上面的博文是定制一个计划任务来将log日志定时的导入数据库      下面这篇博文是用cmd指令将日志导入到一张sql表中,是一次性操作   Log P ...

随机推荐

  1. Unity3D转UE4指南

    坐标: Unity3D X - left, right Y - up, down Z - forwards, backwards Unreal Engine4 X - forwards, backwa ...

  2. Javascript作业—数字转化为大写

    开始学javascript,写作业. <script type="text/javascript"> function toChinese(money){ var ch ...

  3. vuejs作用域插槽

    作用域插槽 <div id='root'> <child> <template slot-scope='props'> <h1>{{props.item ...

  4. Java解析Excel工具类(兼容xls和xlsx)

    依赖jar <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml&l ...

  5. p2597 灾难

    我的思路 代码: #include<cstdio> #include<iostream> #include<algorithm> #include<vecto ...

  6. caffe新版本的各种软件

    系统重装了,于是,我想装就体验一下最新的各种东西吧. anaconda最新的 cuda最新的 cudnn最新的 本来安装好了没问题.caffe编译也通过了.但是不能用,缺少python opencv和 ...

  7. 删除已有的 HTML 元素

    如需删除 HTML 元素,您必须首先获得该元素的父元素: 实例 <div id="div1"> <p id="p1">这是一个段落.&l ...

  8. JDBC完美连接方法

    jdbc:mysql://localhost:3306:test这句里面分如下解析:jdbc:mysql:// 是指JDBC连接方式:localhost: 是指你的本机地址:3306 SQL数据库的端 ...

  9. RedHat6.4安装图形行化界面

    1.1    打开电源进入RedHat shell命令行界面 1.2    查看系统镜像包括的所有软件包组信息 [root@zhongyi-test ~]# yum grouplist Loaded ...

  10. linux 源码安装php7.0 yum

    PHP7和HHVM比较PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM.HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导致crash了, 那么整个服务就挂 ...