#!/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('#.*?User@Host: (.*?)#.*?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()