Python葵花宝典-mysql日志分析

#!/usr/bin/python
# -*- coding:utf-8 -*-

import re
import sys
import time
import MySQLdb

def create_table():
db=MySQLdb.connect(host="localhost", user="root", passwd="mysql", db="slow_log")
cursor=db.cursor()
cursor.execute("DROP TABLE IF EXISTS `mysql_slow_log`;")
sql="""CREATE TABLE `mysql_slow_log` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`IP_HOST` varchar(150) NOT NULL,
`Query_time` float(11,6) NOT NULL,
`Lock_time` char(11) NOT NULL,
`Rows_sent` int(11) NOT NULL,
`Rows_examined` int(11) NOT NULL,
`sql_time` datetime NOT NULL,
`slow_sql` LongText NOT NULL,
PRIMARY KEY (`id`),
KEY `Query_time` (`Query_time`),
KEY `Rows_examined` (`Rows_examined`),
KEY `sql_time` (`sql_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;"""
cursor.execute(sql)
db.close()
def insert_table():
log_file=open(‘mysql-slow.log‘)
db=MySQLdb.connect("localhost","root","mysql","slow_log")
cursor=db.cursor()
content=‘‘
for line in log_file.readlines():
line=line.strip(‘\n‘)
content=content+line
re_mysql = re.findall(‘#.*[email protected]: (.*?)#.*?Query_time: (.*?) Lock_time: (.*?) Rows_sent: (.*?) Rows_examined: (.*?)SET.*?timestamp=(.*?);(.*?);‘, content, re.I);
for record in re_mysql:
IP_HOST=record[0].strip()
Query_time=record[1].strip()
Lock_time=record[2].strip()
Rows_sent=record[3].strip()
Rows_examined=record[4].strip()
timestamp=int(record[5])
timeArray=time.localtime(timestamp)
sql_time=time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
slow_sql=record[6].strip()
set_charset="set names utf8"
sql = """INSERT INTO mysql_slow_log(IP_HOST,Query_time,Lock_time,Rows_sent,Rows_examined,sql_time,slow_sql)
VALUES (‘"""+IP_HOST+"""‘,"""+Query_time+""",‘"""+Lock_time+"""‘,"""+Rows_sent+""","""+Rows_examined+""",‘"""+sql_time+"""‘,\""""+slow_sql+"""\;\")""";
try:
cursor.execute(set_charset)
cursor.execute(sql)
print sql
db.commit()
except:
db.rollback()
log_file.close()
db.close()
def main():
create_table()
insert_table()
main()

原文地址:https://blog.51cto.com/sedawk/2448859

时间: 2024-10-04 20:36:57

Python葵花宝典-mysql日志分析的相关文章

Python葵花宝典-nginx日志分析

#!/usr/bin/python # -*- coding:utf-8 -*- __author__ = 'lvnian' #!/usr/bin env python # coding: utf-8 import MySQLdb as mysql import sys,os,re db = mysql.connect(user="root",passwd="mysql",db="nginx_log",host="192.168.11.

5种mysql日志分析工具比拼

5种mysql日志分析工具比拼 摘自: linux.chinaitlab.com  被阅读次数: 79 由 yangyi 于 2009-08-13 22:18:05 提供 mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具. 启用 slow log 有两种启用方式: 1, 在my.cnf 里 通过 log-slow-queries[=file_name] 2, 在mysqld进程启动时,指定–log-slow-queries[=fi

python 经典语句日志分析

#!/usr/bin/python import re def buffer_line(): buf = open("/etc/sae/buffer_1").read() if not buf: return 0 else: return int(re.findall("^\d*", buf)[0]) def set_last_pos(pos): open("/etc/sae/buffer_1", "w").write(str

(3.14)mysql基础深入——mysql 日志分析工具之pt-querty-digest【待完善】

关键字:Mysql日志分析工具.mysqlsla 常用工具 [1]mysqldumpslow:官方提供的慢查询日志分析工具 [2]mysqlbinlog:二进制日志分析工具 [3]myprofi:对于只想看sql语句及执行次数的用户来说,比较推荐. [4]mysql-explain-slow-log:德国人写的一个Perl脚本,功能上有点瑕疵.不建议使用. [5]mysql-log-filter:生成简介报表日志分析,可以尝试使用一下. [6]pt-querty-digest(支持高级统计):是

Python写WEB日志分析程序的一些思路

1.背景 刚到一家公司需要写一个实时分析tshark捕捉到的数据,tshark一直往文本里面写数据,写一个程序要实时获取到添加的数据并进行分析处理最后入库.此时思绪狂飞,想了一些比较挫的方法. 本人想到的方法: 1.每隔一定时间去查看下文件的mtime,如果有改动则读取数据,并记录读取的行数.下次再去读这个文件的数据则上次记录的行数开始继续读.当文件行数太大的时候这个程序的效率就很慢了,也可以记录上次读取的字节数,然后使用linux下的open系统系统中的seek从指定位置处读取.但是要是用C语

mysql日志分析

由于日志文件是掌握数据库运行状态的重要参考,因此日志文件的维护也有十分重要的意义. mysql的日志类型有二进制日志,错误日志,通用日志,慢查询日志. 模块中添加日志分析log-bin=mysql_bin // 二进制日志log-error=/usr/local/mysql/data/mysql_error.log // 错误日志general_log=ON //开启通用日志general_log_file=/usr/local/mysql/data/mysql_general.log //通用

#IT明星不是梦#利用Python进行网站日志分析

网站的访问日志是一个非常重要的文件,通过分析访问日志,能够挖掘出很多有价值的信息.本文介绍如何利用Python对一个真实网站的访问日志进行分析,文中将综合运用Python文件操作.字符串处理.列表.集合.字典等相关知识点.本文所用的访问日志access_log来自我个人的云服务器,大家可以从文末的附件中下载. 1.提取指定日期的日志 下面是一条典型的网站访问日志,客户端访问网站中的每个资源都会产生一条日志. 193.112.9.107 - - [25/Jan/2020:06:32:58 +080

【DB_MySQL】MySQL日志分析

MySQL数据库常见的日志有:错误日志(log_error).慢查询日志(slow_query_log).二进制日志(bin_log).通用日志(general_log) 开启慢查询日志并分析 开启慢查询日志: set global slow_query_log=1; 在线开启.如果MySQL发生重启,就会失效,如果要永久生效,就必选修改配置文件. slow-query-log-file:新版(5.6及以上)MySQL数据库慢查询日志存储路径.可以不设置该参数,系统则会默认给一个缺省的文件hos

python 写的日志分析

#coding=utf-8 #!/usr/bin/python import string import re import sys file =  sys.argv[1] f = open(file, 'r') ip_url = [] ip = [] url_url = [] while True: line = f.readline() if not line:break line1 = line.split() clientIP = line1[0] status = line1[8] u