免费注册 查看新帖 |

Chinaunix

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

数据库服务器上,删除超大的日志文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-29 09:46 |只看该作者 |倒序浏览
我的一台mysql 服务器上的mysql.log(mysql访问日志)不经意之间已经达到40G了。 根据以前积累的经验, 删除大文件的时候, DB的性能会受到极大的影响, 很多读写操作都会延时很多。  现在求一办法, 看是否每次只删除这个文件的一部分, 比如说每次只删这个文件的前1W行, 或者后1W行。   
BTW: 是线上的业务

论坛徽章:
0
2 [报告]
发表于 2010-01-29 11:03 |只看该作者

用脚本,下面的例子是保留最后一万行

#!/bin/sh
#保留最后一万行
tail -10000 messages > mesg.temp # 保存message日志文件最后面几行日志信息到临时文件.
mv mesg.temp messages          # 然后用临时文件覆盖messages日志文件

论坛徽章:
0
3 [报告]
发表于 2010-01-29 13:17 |只看该作者

回复 #2 万里北国 的帖子

如果mysql.log的文件句柄一直被mysql打开的,  用你这种方法还可行么??  
mv mesg.temp messages     如果可行,  在这个步骤, 我估计在销毁真正的数据的时候, 还是会占用大量的磁盘io吧?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2010-01-29 13:19 |只看该作者
这样速度依然会很慢。



cat /dev/null > log

是否会快些

没测试过,不过建议写一个 crontab ,定期清理一下日至文件。

论坛徽章:
0
5 [报告]
发表于 2010-01-29 13:50 |只看该作者
没有用logrotate处理日志吗?

招聘 : 技术支持/维
论坛徽章:
0
6 [报告]
发表于 2010-01-29 14:13 |只看该作者

回复 #2 万里北国 的帖子

难道mv,原来的文件就不删除了吗?

论坛徽章:
0
7 [报告]
发表于 2010-01-29 14:37 |只看该作者
原帖由 snow888 于 2010-1-29 13:19 发表
这样速度依然会很慢。



cat /dev/null > log

是否会快些

没测试过,不过建议写一个 crontab ,定期清理一下日至文件。


> mysql.log 跟 cat /dev/null > log
这个我用自己模拟的一个27G的文件试过, 在一台空负载的机器上, 约3-5秒就执行完了。
其他的, 之前在配置的时候没有考虑logrotate, 呵呵, 已经造成现在这个样子了。  又不想停服务维护, 呵呵

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
8 [报告]
发表于 2010-01-29 15:10 |只看该作者
mysql 可以限制只保留多久的,这样可以稍微控制下。

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
9 [报告]
发表于 2010-01-29 21:08 |只看该作者
logrotate还是加上吧,免得日后还有这么大的log

论坛徽章:
0
10 [报告]
发表于 2010-01-29 21:20 |只看该作者
原帖由 binary_XY.Z 于 2010-1-29 14:37 发表


> mysql.log 跟 cat /dev/null > log
这个我用自己模拟的一个27G的文件试过, 在一台空负载的机器上, 约3-5秒就执行完了。
其他的, 之前在配置的时候没有考虑logrotate, 呵呵, 已经造成现在这个样子 ...



如果lz还想保留部分日志的话,就将下面的命令放到crontab吧。。。。当然,要删多少你自己决定。。。这里是删除前500行的。。。。

sed -i '1,500d' mysql.log


我们也用mysql,不过当初规划好了,所以不会有这种问题。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP