设为首页 收藏本站
查看: 1330|回复: 0

[经验分享] shell定期清理mongodb数据

[复制链接]

尚未签到

发表于 2015-12-22 14:47:42 | 显示全部楼层 |阅读模式
  需求
  每天定时清除mongodb中某一天之前的数据
  思路
  采用shell脚本调用mongodb的命令执行js脚本即可。
  步骤
  1.编写email.js文件,作用:清除mongodb某天之前数据,具体代码如下:




  • Date.prototype.format = function(format)

  • {
  •     var o =
  •     {
  •         "M+" : this.getMonth()+1, //month
  •         "d+" : this.getDate(), //day
  •         "h+" : this.getHours(), //hour
  •         "m+" : this.getMinutes(), //minute
  •         "s+" : this.getSeconds(), //second
  •         "q+" : Math.floor((this.getMonth()+3)/3), //quarter
  •         "S" : this.getMilliseconds() //millisecond
  •     }
  •     if(/(y+)/.test(format))
  •         format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
  •     for(var k in o)
  •         if(new RegExp("("+ k +")").test(format))
  •             format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
  •     return format;
  • }

  • function getDay(day){
  •     var today = new Date();
  •     var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;
  •     today.setTime(targetday_milliseconds); //注意,这行是关键代码
  •     var tYear = today.getFullYear();
  •     var tMonth = today.getMonth();
  •     var tDate = today.getDate();
  •     tMonth = doHandleMonth(tMonth + 1);
  •     tDate = doHandleMonth(tDate);
  •     return tYear+"-"+tMonth+"-"+tDate+" 00:00:00";
  •     }

  • function doHandleMonth(month){
  •     var m = month;
  •     if(month.toString().length == 1){
  •         m = "0" + month;
  •         }
  •     return m;
  •     }


  • var myDate = new Date();
  • var datetime = myDate.format("yyyy-MM-dd 00:00:00");
  • var pre7day = getDay(-7);
  • print("today="+datetime+"deleteday="+pre7day);
  • datetime= new Date(datetime);
  • pre7day= new Date(pre7day);
  • var count=db.Mail.find({'updateTime':{'$lt':pre7day}}).count();
  • print("count="+count);
  • db.Mail.remove({'updateTime':{'$lt':pre7day}});
  • print('前7天邮件清理完毕...');
  • exit

2. 编写shell脚本mongo_clean.sh代码如下:




  • #!/bin/bash

  • #清空mongodb中的前7天邮件: guoxin.ai@renren-inc.com

  • /data/web/mongodb/mongodb-linux-x86_64-2.4.5/bin/mongo 10.3.18.80:27017/mail -quiet /data/web/email.js
  3.加入crontab中:
  10 0 * * * sh /data/web/agx/mongo_clean.sh
  

即完成shell操作mongodb执行定时任务,根据任务不同,修改对应的js文件。

参考文章:http://blog.csdn.net/alen1985/article/details/12712111
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-154874-1-1.html 上篇帖子: mongod日志切割 下篇帖子: mongo常用命令操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表