用sed语法将pt-query-digest分析的mysql慢查询转换成html页面,简单转换但是看着方便多了

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

主要练习sed的部分高级语法和正则匹配,不过其实用perl语法更方便。主要sed语法如下

#处理pt-query工具分析后的mysql慢查询

#头部 尾部

#!/bin/bash

echo "used: sh chsqltohtml.sh abc.log,it will create abc.html to the current path"

SLOWLOG=$1

INDEXHTML=`echo $SLOWLOG|cut -d . -f 1`.html

echo $SLOWLOG

echo ${INDEXHTML}

sed  -e '1 s/^$/<html>\n\t<head><meta charset="gbk" \/>\n<title>'$SLOWLOG'慢查询<\/title> \n\t<\/head>\n\t\t<body bgcolor="#87CEEB">\n\t\t<h3 style="color:green;font-size:40px;text-align:cen

ter;"><i>'$SLOWLOG'慢查询<\/i><\/h3>\n<hr color=green>\n<table border="1", bgcolor="#9ACD32">\n<tr><td> /' -e '$a\<hr color=red>\n</body>\n</html> ' -e 's/^#/<br>#/'   ${SLOWLOG} >${INDEXHTML}


sed -i -e    '/^<br># Attribute/i\</td></tr></table>\n<table border="1">'  ${INDEXHTML}

sed -i -e    '/^<br># Query size/a\</table>'   ${INDEXHTML}

sed -i -e    '/^<br># MISC/i\</table>'    ${INDEXHTML}

sed -i -e    '/^<br># Query 1/i\</table>'  ${INDEXHTML}

#sed -i -e    's/^$/<hr color=red>/' ${INDEXHTML}

sed -i -e    '/^<br># Profile/i\<hr color=red>\n' ${INDEXHTML}


#替换

sed -i  -e 's/<br># Exec time/<tr><td>Exec_time/g'  -e 's/<br># Lock time/<tr><td>Lock_time/g'  -e 's/<br># Rows sent/<tr><td>Rows_sent/g' -e 's/<br># Rows examine/<tr><td>Rows_examine/g'  -

e 's/<br># Query size/<tr><td>Query_size/g'  -e 's/<br># Rank Query ID/<table border="1">\n<tr><td>Rank Query ID/g'  ${INDEXHTML} 

#1-20个空格

sed -i -e '/Exec_time/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Exec_time/s/$/<\/td>/g' ${INDEXHTML}

sed -i -e '/Lock_time/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Lock_time/s/$/<\/td>/g' ${INDEXHTML}

sed -i -e '/Rows_sent/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Rows_sent/s/$/<\/td>/g' ${INDEXHTML}

sed -i -e '/Rows_examine/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Rows_examine/s/$/<\/td>/g' ${INDEXHTML}

sed -i -e '/Query_size/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Query_size/s/$/<\/td>/g' ${INDEXHTML}

sed -i -r 's/<tr><td>(Rank\s+)(Query ID\s+)(Response\s+)(time\s+)(Calls\s+)(R\/Call\s+)(V\/M\s+)(Item)/<tr><td>等级<\/td><td>Query ID<\/td><td>响应时间<\/td><td>时间占比<\/td><td>执行次数<\/

td><td>平均响应时间<\/td><td>\7<\/td><td>语句<\/td>/g'  ${INDEXHTML}

#删除多余===

sed -i '/=\{3,20\}/d' ${INDEXHTML} 

sed -i 's/<br># Attribute/<tr><td>Attribute/g' ${INDEXHTML}

sed -i -e '/Attribute/s/[ ]\{1,20\}/<\/td><td>/g'  -e '/Attribute/s/$/<\/td>/g' ${INDEXHTML}

#sed -i -e '/MISC 0xMISC/s/$/<\/td>\n<\/table>/g' ${INDEXHTML}

###超链接

sed -i -r 's/^<br>#(\s+[0-9]{1,2}\s+)(0x[A-Z0-9]+)(\s+[0-9]{1,10}\.[0-9]{1,4}\s+)([0-9]{1,3}\.[0-9]%\s+)([0-9]{1,9}\s+)([0-9]{1,10}\.[0-9]{1,4}\s+)([0-9]{1,9}\.+[0-9]*\s+)(.+)/\<tr><td>\1\<\

/td><td><a href="#\2\">\2<\/a>\<\/td><td>\3\<\/td><td>\4\<\/td><td>\5\<\/td><td>\6\<\/td><td>\7\<\/td><td>\8\<\/td>/g' ${INDEXHTML}

sed -i -r 's/<br># Query(\s+[0-9]+:\s+)([0-9]+\.[0-9]{1,4}\s+)QPS,(\s+[0-9]+\.[0-9]+).*(0x[A-Z0-9]+)(\s+at byte\s+[0-9]+)/\<hr color=red>\n<br># Query\1\2\3\x concurrency, ID <a name="\4\">\

4\<\/a>\5/g' ${INDEXHTML}

echo "over"



b78a3c425c085100b10741d89ae761bc02d49aa3



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
15天前
|
存储 消息中间件 监控
MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
蒋星熠Jaxonic,数据领域技术深耕者。擅长MySQL到ClickHouse链路改造,精通实时同步、数据校验与延迟治理,致力于构建高性能、高一致性的数据架构体系。
MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
|
29天前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
67 3
|
6天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
110 5
|
25天前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
储存过程(Stored Procedures) 和 函数(Functions) : 储存过程和函数允许用户编写 SQL 脚本执行复杂任务.
154 14
|
27天前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
以上概述了MySQL 中常见且重要 的几种 SQL 查询及其相关概念 这些知识点对任何希望有效利用 MySQL 进行数据库管理工作者都至关重要
74 15
|
29天前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
106 6
|
29天前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
92 1
|
2月前
|
存储 关系型数据库 MySQL
深入理解MySQL索引类型及其应用场景分析。
通过以上介绍可以看出各类MySQL指标各自拥有明显利弊与最佳实践情墁,在实际业务处理过程中选择正确型号极其重要以确保系统运作流畅而稳健。
146 12
|
1月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
2月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。

热门文章

最新文章

推荐镜像

更多