免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1742 | 回复: 9
打印 上一主题 下一主题

取最近2天的慢mysql [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-02 15:48 |只看该作者 |倒序浏览
我在 mysql 做了慢查询日志 /var/log/msyql/slow-queries.log

现在要从这个巨大的文件(2g)中仅仅取最近2天的慢mysql ,问该如何取?

论坛徽章:
0
2 [报告]
发表于 2010-09-02 15:57 |只看该作者
slow-queries.log

内容如下 最新的时间在最后面。 按时间依次排序

Time: 100722 19:09:58
# User@Host:  @ b [192.168.10.1]
# Query_time: 2  Lock_time: 0  Rows_sent: 25  Rows_examined: 5272941
select                  。。。。 asc;
# Time: 100722 19:27:00
# User@Host: n] @ a[192.168.10.2]
# Query_time: 22  Lock_time: 0  Rows_sent: 3  Rows_examined: 3
select                  。。。。 asc;# Time: 100722 19:59:22
# User@Host: bain] @ b[192.168.10.2]
# Query_time: 2  Lock_time: 0  Rows_sent: 54  Rows_examined: 5284118
select                  。。。。 asc;;
# Time: 100722 19:59:54
# User@Host: in] @ a[192.168.10.2]
# Query_time: 2  Lock_time: 0  Rows_sent: 5  Rows_examined: 5284128
select                  。。。。 asc;;
# Time: 100722 20:00:42

从这个大文件里取  # Time: 100901第一次出现的地方之后把后面的内容全部放到一个文件里, 用命令应该可以做的

论坛徽章:
0
3 [报告]
发表于 2010-09-02 16:02 |只看该作者
回复 2# liyihongcug


    如果文件格式一样可以这样试试
   grep -A 4 "100901" file
   这只是抓取1天的

论坛徽章:
0
4 [报告]
发表于 2010-09-02 16:05 |只看该作者
回复 2# liyihongcug


  不知道你文件多大
  sed '1,/100901/d' file

论坛徽章:
0
5 [报告]
发表于 2010-09-02 16:06 |只看该作者
2g

论坛徽章:
0
6 [报告]
发表于 2010-09-02 16:08 |只看该作者
本帖最后由 liyihongcug 于 2010-09-02 16:10 编辑

# Time: 100901 这个第一次出现的行之后的所有内容 (包含该行)

grep -A 4 "100901" file  好像做不到这个的??

论坛徽章:
0
7 [报告]
发表于 2010-09-02 16:13 |只看该作者
sed '1,/100901/d' file  验证通过  感谢

论坛徽章:
0
8 [报告]
发表于 2010-09-02 16:21 |只看该作者
grep好像也能做 会议 grep 加参数可以的

论坛徽章:
0
9 [报告]
发表于 2010-09-03 13:41 |只看该作者
文件a.log内容如下 最新的时间在最后面。 按时间依次排序   (他记录了mysql按时间先后依次执行的慢查询)

Time: 100722 19:09:58
# User@Host:  @ b [192.168.10.1]
# Query_time: 2  Lock_time: 0  Rows_sent: 25  Rows_examined: 5272941
select                  。。。。 asc;
# Time: 100722 19:27:00
# User@Host: n] @ a[192.168.10.2]
# Query_time: 22  Lock_time: 0  Rows_sent: 3  Rows_examined: 3
select                  。。。。 asc;# Time: 100722 19:59:22
# User@Host: bain] @ b[192.168.10.2]
# Query_time: 2  Lock_time: 0  Rows_sent: 54  Rows_examined: 5284118
select                  。。。。 asc;;
# Time: 100722 19:59:54
# User@Host: in] @ a[192.168.10.2]
# Query_time: 2  Lock_time: 0  Rows_sent: 5  Rows_examined: 5284128
select                  。。。。 asc;;
# Time: 100722 20:00:42

从这个大文件里取 ' # Time: 100901'第一次出现的地方之后把后面的内容全部放到一个文件里, 用命令应该可以做的

(如果是100901 ,命令如下
  sed '1,/100901/d' file
但后来发现这样不够精确,因为有可能sql语句含有100901
)

请注意 是 整个‘# Time: 100901’ 第1次出现的行 以及他以后的行

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
10 [报告]
发表于 2010-09-03 13:53 |只看该作者
  1. sed '0,/^# Time: 100901/d' urfile
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP