【工具】利用python 发送MySQL 慢日志邮件

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 一 需求     因为开发针对某系统做稳定性建设,需要对数据库系统的慢日志进行审计,检查优化。和开发沟通选择定期发送慢查询到开发的邮箱的方式,每日汇总,然后一起评估 优化slow query 。
一 需求
    因为开发针对某系统做稳定性建设,需要对数据库系统的慢日志进行审计,检查优化。和开发沟通选择定期发送慢查询到开发的邮箱的方式,每日汇总,然后一起评估 优化 slow query 。

二 工具实现
mail.py   脚本
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # mail.py
  4. import os.path
  5. import time
  6. import sys
  7. import os
  8. import json
  9. import string
  10. import random
  11. import smtplib
  12. import time
  13. from datetime import date
  14. from email.mime.multipart import MIMEMultipart
  15. from email.mime.text import MIMEText
  16. from email.mime.image import MIMEImage
  17. from email.Header import Header
  18. from email.MIMEText import MIMEText
  19. from email.MIMEMultipart import MIMEMultipart

  20. mail_user="xxx@xxxx.com";
  21. mail_pass="xxxxx";
  22. mail_smtp_server="smtp.xxxxx.com";
  23. mail_smtp_port= 25

  24. def sendMail(contents,subject,attach,mail_to):
  25.     lTime=str(time.strftime('%Y%m%d_%H',time.localtime(time.time())))
  26.     msg = MIMEMultipart('related');
  27.     if subject=="":
  28.         subject='test';
  29.     msg['Subject'] = subject+" Time:"+ lTime;
  30.     msg['From'] = mail_user;
  31.     msg['To'] = ";".join(mail_to) ;
  32.     html="";
  33.     for cont in contents:
  34.         html = html+cont[0];
  35.     msgHtml = MIMEMultipart('alternative');
  36.     msgHtml.set_charset('UTF-8');
  37.     msgAtt = MIMEText(open(attach,'rb').read(),'base','gbk');
  38.     msgAtt["Content-Type"] = 'application/octet-stream'
  39.     msgAtt["Content-Disposition"] = 'attachment; filename="'+subject+'"'
  40.     msg.attach(msgAtt);

  41.     try:
  42.         smtp = smtplib.SMTP();
  43.         smtp.connect(mail_smtp_server,mail_smtp_port)
  44.         smtp.login(mail_user,mail_pass);
  45.         smtp.sendmail(mail_user,mail_to,msg.as_string());
  46.         smtp.close();
  47.     except Exception,e:
  48.         print str(e)
 sendSlowlog.py
 
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import mail ##使用了上述脚本
  4. import sys
  5. import time
  6. import os
  7. import datetime

  8. from datetime import date
  9. from os.path import join, getsize

  10. def sendSlowlog(subject_info,attach,mail_to):
  11.     size = os.path.getsize(attach)
  12.     if(size > 1):
  13.        mail.sendMail("",subject_info,attach,mail_to)


  14. if __name__ == '__main__':
  15.    mail_to=["qilong.yangql@xxxx.com"]
  16.    lDate=str(time.strftime('%Y%m%d',time.localtime(time.time())))
  17.    lTime=str(time.strftime('%Y%m%d_%H',time.localtime(time.time())))
  18.    subject_info="Slowlog of DBname" + lTime
  19.    attach="/u01/my3306/log/slow_"+ lDate +"/slow.log."+lTime
  20.    sendSlowlog(subject_info,attach,mail_to)


   本系统已经每小时将slow log 进行分割,关于如何切割,各位可以思考一下。 



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
152 6
|
5月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
424 10
|
6月前
|
运维 安全 数据可视化
日志审查安排工具实战攻略:中小团队如何通过日志审查安排工具建立可控、安全的审查机制?
在审计敏感时代,日志审查安排工具成为安全运维与合规管理的关键利器。它实现审查任务的流程化、周期化与可视化,支持多系统协作、责任到人,确保“可控、可查、可追”的日志治理。工具如板栗看板、Asana、Monday 等提供任务调度、问题闭环与合规对接能力,助力企业构建高效、透明的日志审查体系,提升安全与合规水平。
|
8月前
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
335 23
|
8月前
|
canal 关系型数据库 MySQL
MySQL 自动同步开源工具
本文介绍了几种开源工具用于实现 MySQL 数据库的自动同步。
|
7月前
|
JavaScript API 开发工具
HarmonyOS NEXT实战:日志工具
本文介绍了在HarmonyOS Next应用开发中,如何封装一个简单易用的日志工具LoggerKit。通过使用系统提供的HiLog API,开发者可以灵活输出不同级别的日志信息(DEBUG、INFO、WARN、ERROR、FATAL),用于分析应用运行状态和调试逻辑问题。文章详细说明了日志级别、参数配置及使用注意事项,并提供了完整的TypeScript封装示例代码,便于实际项目集成与应用调试。
177 0
|
9月前
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
10月前
|
SQL 存储 关系型数据库
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
1181 0
|
SQL 关系型数据库 MySQL
Python怎么操作Mysql数据库
Python怎么操作Mysql数据库
241 0
|
SQL 关系型数据库 MySQL
python如何操作mysql数据库
python如何操作mysql数据库
146 0

推荐镜像

更多