我用的是mysql5.0.37+linux
我mysql中的一个log表,一个多月的数据量到了1.6G大小
这样下去不是办法,有什么好的办法?
我想的办法有,定时做数据导出或数据删除,想用mysql自有的功能来实现,不知道可不可以?
不知道有没有更好的办法
再不解决数据库要爆炸了
我mysql中的一个log表,一个多月的数据量到了1.6G大小
这样下去不是办法,有什么好的办法?
我想的办法有,定时做数据导出或数据删除,想用mysql自有的功能来实现,不知道可不可以?
不知道有没有更好的办法
再不解决数据库要爆炸了
解决方案 »
- MySQL导入*.sql文件出错
- 要删除一个mysql的表的数据(十万级别),直接delete好还是drop再create好?
- 40个表里面有150万条数据转移 效率难题!跪求 解决方案
- 2G多的表,我想新增一个字段,可是很慢,执行不了.请问怎么办?
- 一个查询语句执行了1个小时多
- 事务处理语句执行失败回滚不了,求助~
- 一万个文本文件,如何导入到mysql中,一个字段path是文本的地址,另外一个字段content是文本的内容
- postgresql如何移值到MYSQL
- 是否是 mysql 数据库的问题
- 为什么我在启动MYSQL时,他提示我无法启动进程
- 定期计算数据库表中增加和修改的数据条数
- 事务处理语句执行失败回滚不了,求助~
备份后,删除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;