我用的是mysql5.0.37+linux
我mysql中的一个log表,一个多月的数据量到了1.6G大小
这样下去不是办法,有什么好的办法?
我想的办法有,定时做数据导出或数据删除,想用mysql自有的功能来实现,不知道可不可以?
不知道有没有更好的办法
再不解决数据库要爆炸了
我mysql中的一个log表,一个多月的数据量到了1.6G大小
这样下去不是办法,有什么好的办法?
我想的办法有,定时做数据导出或数据删除,想用mysql自有的功能来实现,不知道可不可以?
不知道有没有更好的办法
再不解决数据库要爆炸了
解决方案 »
- mysql 5.0.41无法启动问题
- 求一个SQ语句
- 怎样得到这个结果
- 服务器上部署了2个Mysql数据库,修改了其中一个端口后,怎么还报错呢?
- SUN/MySQL 学习大会,机会难得
- 求助:mysql图像存储
- SUSE 11下tomcat部署应用无法连接MYSQL问题
- :请问谁有通过客户端来修改远程数据库的例子,或建议~~,谢谢,数据库最好是:mysql的,谢谢(up者谢谢,有分)
- mysql-cluster搭建完导入数据库是报the table is full
- mysql prepare from excute 出错
- 定期计算数据库表中增加和修改的数据条数
- 事务处理语句执行失败回滚不了,求助~
备份后,删除log的数据,根据需要保留一周或一个月的数据还有一种办法就是把log表的数据根据时间备份到其他表,不过这种方法会使数据库的数据越来越大。
----------------
select * from log where logtime <= CURDATE() - 7 INTO OUTFILE 'file_name'; 备份到文件。
delete from log where logtime <= CURDATE() - 7; #仅保留一周
commit;
quit;
然后把这个文件 在操作系统中用命令改名。
如果楼主的MYSQL版本更高一点,也可以用MYSQL的EVENT功能来解决,EVENT就是一个定时执行一段SQL代码的机制。不过现在看来,linux的crontab更可行一些。crontab也是定时执行,可以把脚本写为每次删除最前面50%的数据之类的。
导出文件后入linux 的 shell script 把文件重命名为当天日期的就行了。 这些日志如果你需要保存总是要占地方的。 一般是在 数据库中保存 7 天记录,在本地磁盘保留 30天,在磁带上保存20年的。
不知道一个1.6G的表,如果要导出,再删除,不知道要耗费多长时间?
还有,导出的数据,可不可以用程序再打开查询?
INTO OUTFILE 'file_name'
请在mySQL手册中查一下这个语法,你可以导出为你指定的格式。比如文本文件。
select * into outfile 'e:\\data\\25.txt' from device_monitor.operator;