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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一 需求     因为开发针对某系统做稳定性建设,需要对数据库系统的慢日志进行审计,检查优化。和开发沟通选择定期发送慢查询到开发的邮箱的方式,每日汇总,然后一起评估 优化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 进行分割,关于如何切割,各位可以思考一下。 



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
118 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1634 14
|
6天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL的撤销日志文件和错误日志文件
本文介绍了MySQL的物理存储结构,重点讲解了InnoDB存储引擎中的撤销日志文件(undo log)和错误日志文件。从MySQL 8.0开始,默认生成两个10MB的undo表空间文件,并支持动态扩容和收缩。错误日志文件记录了MySQL启动、运行、关闭过程中的问题,通过示例展示了如何查看和使用这些日志。
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
61 1
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
52 3
|
1月前
|
SQL 存储 关系型数据库
Mysql主从同步 清理二进制日志的技巧
Mysql主从同步 清理二进制日志的技巧
28 1
|
1月前
|
关系型数据库 MySQL 数据库
DZ社区 mysql日志清理 Discuz! X3.5数据库可以做定期常规清理的表
很多站长在网站日常维护中忽略了比较重要的一个环节,就是对于数据库的清理工作,造成数据库使用量增加必须多的原因一般有2个:后台站点功能开启了家园,此功能现在很少有论坛会用到,但是灌水机会灌入大量垃圾信息致使站长长时间未能发觉;再有就是程序默认的一些通知类表单会存放大量的、对于网站日常运行并无意义的通知信息。
75 2
|
28天前
|
存储 关系型数据库 MySQL
MySQL中的Redo Log、Undo Log和Binlog:深入解析
【10月更文挑战第21天】在数据库管理系统中,日志是保障数据一致性和完整性的关键机制。MySQL作为一种广泛使用的关系型数据库管理系统,提供了多种日志类型来满足不同的需求。本文将详细介绍MySQL中的Redo Log、Undo Log和Binlog,从背景、业务场景、功能、底层实现原理、使用措施等方面进行详细分析,并通过Java代码示例展示如何与这些日志进行交互。
63 0
|
9天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
24 1
|
11天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
27 4