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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 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 进行分割,关于如何切割,各位可以思考一下。 



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
162 90
|
2天前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
27 16
|
19天前
|
关系型数据库 MySQL 数据库
图解MySQL【日志】——两阶段提交
两阶段提交是为了解决Redo Log和Binlog日志在事务提交时可能出现的半成功状态,确保两者的一致性。它分为准备阶段和提交阶段,通过协调者和参与者协作完成。准备阶段中,协调者向所有参与者发送准备请求,参与者执行事务并回复是否同意提交;提交阶段中,若所有参与者同意,则协调者发送提交请求,否则发送回滚请求。MySQL通过这种方式保证了分布式事务的一致性,并引入组提交机制减少磁盘I/O次数,提升性能。
40 4
图解MySQL【日志】——两阶段提交
|
1天前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
15 4
|
17天前
|
关系型数据库 MySQL 数据库
MySQL日志
本文介绍了MySQL中三个重要的日志:binlog、redolog和undolog。binlog记录数据库更改操作,支持数据恢复、复制和审计;redolog保证事务的原子性和持久性,实现crash-safe;undolog用于事务回滚及MVCC的实现。每个日志都有其独特的作用和应用场景,确保数据库的稳定性和数据一致性。
|
19天前
|
关系型数据库 MySQL
图解MySQL【日志】——磁盘 I/O 次数过高时优化的办法
当 MySQL 磁盘 I/O 次数过高时,可通过调整参数优化。控制刷盘时机以降低频率:组提交参数 `binlog_group_commit_sync_delay` 和 `binlog_group_commit_sync_no_delay_count` 调整等待时间和事务数量;`sync_binlog=N` 设置 write 和 fsync 频率,`innodb_flush_log_at_trx_commit=2` 使提交时只写入 Redo Log 文件,由 OS 择机持久化,但两者在 OS 崩溃时有丢失数据风险。
37 3
|
10月前
|
SQL 关系型数据库 MySQL
Python怎么操作Mysql数据库
Python怎么操作Mysql数据库
110 0
|
10月前
|
SQL 关系型数据库 MySQL
python如何操作mysql数据库
python如何操作mysql数据库
74 0
|
9月前
|
SQL 关系型数据库 MySQL
Python 操作 MySQL 数据库
Python 操作 MySQL 数据库
|
10月前
|
SQL 关系型数据库 MySQL
Python 操作 MySQL 数据库
Python 操作 MySQL 数据库
104 0