免费注册 查看新帖 |

Chinaunix

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

Mysql数据每5分钟自动备份到新表并删除原有数据? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-21 16:36 |只看该作者 |倒序浏览
我刚刚学习数据库,现管理一台网络日记服务器(将网络上的访问日记存在MYSQL数据库里),由于网络访问量很多,日记数据表非常大,现要实现:每5分钟将表的内容另荐为新表(用日期来做表名)并清空原表的数据。初步考虑用MYSQL的定时器来执行,但担心访问日记非常多,会不会在执行期间引起数据的丢失?

论坛徽章:
0
2 [报告]
发表于 2010-06-21 16:37 |只看该作者
怎么锁定?

论坛徽章:
0
3 [报告]
发表于 2010-06-21 17:11 |只看该作者
SHELL即可

论坛徽章:
0
4 [报告]
发表于 2010-06-21 17:21 |只看该作者
小木,可以给个样本吗?先谢谢。这个事情比较急着要解决。

论坛徽章:
0
5 [报告]
发表于 2010-06-21 18:12 |只看该作者
本帖最后由 squall1 于 2010-06-21 18:13 编辑

1.先导出表结构
mysqldump -uroot -p123456 -d logs > /tmp/logs.sql

2.day=`date +%y%m%d%H%M%S`

3.mysql -uroot -p123456 -e "use test;alter table logs rename logs${day}"

4.mysql -uroot -p123456 <  /tmp/logs.sql

5.写入crontab里

思路是这样,具体你改改即可。

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
6 [报告]
发表于 2010-06-21 20:40 |只看该作者
5楼这样做会有问题吧。
在3和4的间隔内,会发生没有logs表的情况,导致写入失败,严重的可能会导致程序瘫痪。
建议用一句rename搞定

create table log_temp like logs;
rename table logs to log_xxxx, log_temp to logs;

论坛徽章:
0
7 [报告]
发表于 2010-06-21 21:46 |只看该作者
回复 1# 若水

1。可以存储日志到多台mysql的多个表里,没必要存到一个Mysql的一个表里。
2。可以存放在各web server上的文件里,空闲时间再导入到Mysql里。
3。如果只是insert而没有查询,不清楚多大的量可能引起你所说的这个问题。

论坛徽章:
0
8 [报告]
发表于 2010-06-22 09:34 |只看该作者
本帖最后由 若水 于 2010-06-22 09:36 编辑

谢谢各位的帮助。我可能没有讲清楚:原来项目设计是将WEB服务器的访问日记发送到这个日记服务器(MYSQL)。程序不是我们设计的,现领导要求我将访问日记作个统计分析。访问日记数据表就一个log表,里面记录着访问的时间,IP地址,访问的目录等。为了方便查询和统计,我要将这个日记表每5分钟备份出来,并清空原有的数据。查询和统计就可以从这几个小表进行。
你给出的方法我将做下实验。

论坛徽章:
0
9 [报告]
发表于 2010-06-22 09:48 |只看该作者
本帖最后由 小木虫子 于 2010-06-22 09:50 编辑

每5分钟备份一次log表?然后把log表清空吗???


#!/bin/bash
T=$(date +"%k:%M:%S")
/usr/local/mysql/bin/mysqldump -uroot -p123456 log > /bak/log_$T.sql
/usr/local/mysql/bin/mysql -uroot -p123456 -e "use yourdatabase;truncate table log;"

------------------------------------------------------
crontab -e

*/5 * * * * bak.sh

论坛徽章:
0
10 [报告]
发表于 2010-06-22 10:05 |只看该作者
我会将实验结果公布给各位大侠
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP