将有效慢日志转存到数据库v2
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的更多相关文章
- ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(四)
		
这是第四步点击保存将信息存入数据库中. 这个就简单了利用ajax将JSON字符串传到后台然后这里有个知识点就是将DataTable直接存入数据库中.代码如下: 一.界面获取数据JS代码: //保存订单 ...
 - 也用 Log4Net 之将日志记录到数据库的后台实现 (二)
		
也用 Log4Net 之将日志记录到数据库的后台实现 (二) 大家下午好,昨天讲了配置,今天我们讲讲后台实现,在完成了后台实现后,我们才能真正意义上的解决把自定义属性字段值录入到数据库中. 在开写之 ...
 - 也用 Log4Net  之将日志记录到数据库的配置 (一)
		
也用 Log4Net 之将日志记录到数据库的配置 (一) 前段时间我一直想做一个通用一点的日志记录系统,可以便于不同的业务组调用进行日志记录及分析.本来打算着自己下手写一个,后面发现各业务组可能会需 ...
 - SQL Server 2008无日志文件附加数据库
		
1.新建一个同名数据库. 2.停止数据库服务,覆盖新建的数据库主文件(小技巧:最好放在同一个磁盘里面,把新建的数据库主文件删掉或移开,再把要恢复的数据库主文件剪切过去,这样就可以节省时间.) 3.启动 ...
 - SQL Server 2005无日志文件附加数据库
		
公司网站运营两年多了,日志文件超级大,在重装系统的时候,为了省事,就没有备份日志文件,而且是没有分离就把日志文件给删掉了(下次一定要记得先分离再删日志文件).结果造成数据库怎么都附加不上.出现错误. ...
 - 飘逸的python - zlib压缩存到数据库
		
当每天有大量的数据存到kv数据库中去,且value数据很大,于是想压缩后再存进去. 之前提到了 gzip压缩,为什么不直接用gzip呢. 其实更确切的说gzip是一种文件格式,它压缩成gzip文件,而 ...
 - java中的中文参数存到数据库乱码问题
		
关于java中的中文参数乱码问题,遇见过很多,若开发工具的字符集环境和数据库的字符集环境都一样,存到数据库中还是乱码的话,可以通过以下方法解决: 用数据库客户端检查每个字段的字符集和字符集校对和这个表 ...
 - 关于使用Log4Net将日志插入oracle数据库中
		
1.关于配置文件. <?xml version="1.0" encoding="utf-8" ?> <configuration> &l ...
 - 利用LogParser将IIS日志插入到数据库
		
利用LogParser将IIS日志插入到数据库 上面的博文是定制一个计划任务来将log日志定时的导入数据库 下面这篇博文是用cmd指令将日志导入到一张sql表中,是一次性操作 Log P ...
 
随机推荐
- API:access_token
			
access_token存在意义: 1.身份验证(一个channel_id一般有0个或1个有效的access_token) 2.限制用户访问服务器数据的有效期 3.限制用户访问权限 access_ ...
 - 华硕主板开启intel virtual technology以便支持虚拟机
 - 我的Java修养
			
无论如何我都会以这种方式严于律己,如有错误接受修正. 1.戒掉对友情和爱情的幻想 2.针对人的行为进行分析,而不是其语言 3.解决一个问题,这个问题会成为解决后续问题的基础和前提 4.不要炫耀,自负, ...
 - IOS 数据加密总结(及MD5加密)
			
数据安全总结 1.网络数据加密1> 加密对象:隐私数据,比如密码.银行信息2> 加密方案* 提交隐私数据,必须用POST请求* 使用加密算法对隐私数据进行加密,比如MD53> 加密增 ...
 - 大数据量高并发的数据库优化详解(MSSQL)
			
转载自:http://www.jb51.net/article/71041.htm 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能. ...
 - 剑指offer 35 第一个只出现一次的字符
			
错误写法 class Solution { public: int FirstNotRepeatingChar(string str) { int length = str.size(); ) ; ] ...
 - redis list类型
 - 搭建ssm中遇到的问题
			
1.多模块pom.xml文件无效 原因是没有指定模块
 - Android笔记(adb命令--reboot loader)
			
Android 的机器通过adb进入升级模式的方法 # adb shell # reboot loader 通过上面两个命令就进入升级模式了,通过工具升级就好了 为什么会写这简单的一篇呢?因为今天干了 ...
 - caffe中protobuf问题
			
安装caffe时,protobuf在使用import caffe时,python版的会提示protobuf的问题,原因是因为protobuf的安装是用python-proto,而在安装anaconda ...