MySQL 5.6大查询和大事务监控脚本(Python 2)
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,可以配置在Zabbix里面,作为监控的模版#!/usr/bin/env python#import MySQLdb,MySQLdb.cursorsimport sys,timefrom datetim
千家信息网最后更新 2025年11月09日MySQL 5.6大查询和大事务监控脚本(Python 2)
可以配置在Zabbix里面,作为监控的模版
#!/usr/bin/env python#import MySQLdb,MySQLdb.cursorsimport sys,timefrom datetime import datetimeinnodb_lock_output_file = '/tmp/innodb_lock_output.log'# socket_dir = '/var/lib/mysql/mysql.sock'time_step = 1db_host = '127.0.0.1'db_port = 23306db_user = 'zabbix'db_pass = 'l8ka65'f = open(innodb_lock_output_file,'a')current_time_stamp = int(time.time()) - time_stepcurrent_time = time.ctime()result = ''# print sys.argvif len(sys.argv) <> 2: print "Usage: %s current_lock | current_running" % sys.argv[0] exit()db = MySQLdb.connect(host=db_host, user=db_user, passwd=db_pass, charset='utf8', port = db_port # unix_socket=socket_dir )conn = db.cursor(MySQLdb.cursors.DictCursor)db.select_db('information_schema')now_time_sql = 'select now() as now_time;'conn.execute(now_time_sql)current_time = conn.fetchall()[0]['now_time']result += str(current_time)result += '\n'lock_sql = ''' SELECT * FROM INNODB_TRX where TIMESTAMPDIFF(SECOND, trx_started, now()) > 1 ORDER BY trx_started LIMIT 1 '''running_sql = '''select user,host,db,time,State,info from PROCESSLIST where TIME > 30 and COMMAND <> 'Sleep' and COMMAND <> 'Binlog Dump' and user <> 'system user' and lower(info) not like '%alter%table%' order by TIME DESC LIMIT 1 '''if sys.argv[1] == 'current_lock': conn.execute(lock_sql) query_result = conn.fetchall() locks = conn.rowcount if locks > 0: cur_time = datetime.now() print (cur_time - query_result[0]['trx_started']).seconds else: print 0 # print result for item in query_result: for each in item: # print each result += str(each) result += '\t' result += ':==>>>>\t' result += str(item[each]) result += '\n' result += '\n' result += '\n' # print result if locks > 0: f.write(result)elif sys.argv[1] == 'current_running': conn.execute(running_sql) query_result = conn.fetchall() thread_count = conn.rowcount if thread_count > 0 : f.write(result) for item in conn.fetchall(): f.write(str(item) + '\n') f.write('\n\n\n\n') print query_result[0]['time'] else: print 0else: print "Usage: %s current_lock | current_running" % sys.argv[0]conn.close()db.close()f.close()执行脚本
# python innodb_lock_monitor.py current_running# python innodb_lock_monitor.py current_lock
慢查询语句会记录在文本文件中
]# tail -300 /tmp/innodb_lock_output.logblocking_trx_state :==>>>> RUNNINGrequesting_SQL :==>>>> delete who_cart,who_cart_ext from who_cart left join who_cart_ext on who_cart.rec_id = who_cart_ext.cart_id where who_cart.rec_id=1469638027
脚本
查询
监控
文件
文本
模版
语句
配置
事务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
地理空间数据库字段
海宁手机应用软件开发
软件开发专业学院
一个服务器多少个G
3年软件开发跳槽薪资
英雄联盟重新登陆无法连接服务器
迪普防墙日志服务器搭建
金蝶安装数据库服务器
山东综合软件开发定制价格
软件开发培训厦门
网络安全师社会实践
如何写数据库实体
图片显示软件开发
生命周期法是软件开发
asp数据库连接不上网
4m宽带能当服务器租出去吗
黄浦区软件开发服务
r720服务器嵌入式视频怎么关
数据库运维岗位
数据库应用体系结构是什么
池州点餐系统软件开发定制公司
replace数据库用法
数据库技术与应用课程标准
服务器安全日志评审
广州软件开发上涨原因
怀旧服服务器装备栏不见了
数据库中的与操作
软件开发报班有周末班吗
sqlyog数据库连接报
荥阳公安局采血数据库