在进行操作系统和数据库系统管理时,经常会遇到在日志文件中查找某个字符,或者按照时间截取某个时间段的日志进行分析。
今天早上就遇到一个MySQL数据库上的问题,mysql数据库在0-3点的时候,数据库会话连接,tps,cpu和iowait等都比平时大了许多。
为了定位这个时间段内,到底发生了那些慢查询,消耗了资源,就需要在slow.log慢查询日志进行查询,截取和分析。
在处理过程中,对几种常用的日志截取方法进行了汇总和测试:
截取日志段的的方法汇总与测试
方式一: 确定时间段的行号,使用head和tail命令截取
搜索时间: Time: 151212 00:00:00
先到gg,到文件最前面,然后搜索 /Time: 151212 ,得到:
1979016 # Time: 151212 0:00:15
文件总行数为:
# wc -l slow-query-169-1212.log
1999422 slow-query-169-1212.log
1999422 limit 0,20;
然后在到文件最后面,G, 搜索4点之后开始的文件 /Time: 151212 4 ,得到:
1987392 # Time: 151212 4:00:05
确定需要查询的时间段行号后,使用head和tail命令进行截取:
>>> 1987392 - 1979016;
8376