有一个5G的慢SQL文件,需要导出指定时间段内的所有慢SQL记录,因为一些神奇的原因,慢SQL文件没有配置日志轮转(logrotate
),所以决定使用grep和sed命令来完成过滤查询。
1.grep查询指定时间段开始时间的行号
bash
[root@DB-master mysql]# grep -n '# Time: 250824 14:00' slow-master.log | head -1
149623336:# Time: 250824 14:00:03
2.grep查询指定时间段结束时间的行号
bash
[root@DB-master mysql]# grep -n '# Time: 250824 14:30' slow-master.log | head -1
149637005:# Time: 250824 14:30:04
3.sed根据行号过滤导出文件内容
bash
sed -n '149623336,149637005p' slow-master.log >> slow_log_master_1400_1430.log