码迷,mamicode.com
首页 > 其他好文 > 详细

每个月执行一次任务,保存90天的mongo日志数据

时间:2015-05-20 18:15:40      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:

用mongo 的dump 和 restore实现

shell版 

#!/bin/bash
mongodump --host 127.0.0.1 --port 27017 -d lewifi -c auditOrigData -q {time:{\$gt:1423478000}} -o ~/auditmongologchange
mongo <<EOF
use lewifi
db.auditOrigData.renameCollection(auditOrigData_back)
EOF
echo "restore"
mongorestore -h 127.0.0.1 --port 27017 --db lewifi  ~/auditmongologchange/lewifi/
rm -rf ~/auditmongologchange

 

nodejs版 主要代码

Task.prototype.backandChangeauditOrigData = function(){
    var starttoday=new Date();
    var todayyymmdd=tool.getYYMMDD(starttoday);
    starttoday.setDate(starttoday.getDate()-180);
    var datenum=tool.getDateCurTs(starttoday);
    var yymmdd=tool.getYYMMDD(starttoday);
    var dumpcommand=‘mongodump --host 127.0.0.1 --port 27017 -d lewifi -c auditOrigData -q {time:{\\$gt:‘+datenum+‘}} -o /Users/cdpmac/auditmongologchange‘;
    auditApi.execMonoOperaCommand(dumpcommand,function(dumperr,dumpout){
        console.log(‘dump\n‘+dumperr+‘\n‘+dumpout);
        if(!dumperr){
            shenjiauditlogTestCollection.rename(‘auditOrigData‘+yymmdd+‘-‘+todayyymmdd,function(renameerr,renameinfo){
                console.log(‘rename\n‘+renameerr+‘\n‘+JSON.stringify(renameinfo));
                var restorecommand=‘mongorestore -h 127.0.0.1 --port 27017 --db lewifi  /Users/cdpmac/auditmongologchange/lewifi/‘;
                auditApi.execMonoOperaCommand(restorecommand,function(reserr,resout){
                        console.log(‘restore+\n‘+reserr+‘\n‘+resout);
                        auditApi.execMonoOperaCommand(‘rm -rf /Users/cdpmac/auditmongologchange‘,function(rmerr,rmout){
                        })
                    }
                )
            })
        }
    });
}
execMonoOperaCommand内容
var exec = require(‘child_process‘).exec;

function execMonoOperaCommand(command, callback) {
    child = exec(command, function(error, stdout, stderr) {
        sys.print(‘error: \n‘ + error+"\n");
        sys.print(‘stdout: \n‘ + stdout+"\n");
        sys.print(‘stderr: \n‘ + stderr+"\n");
        callback(error,stdout);
    });
}

 

 

每个月执行一次任务,保存90天的mongo日志数据

标签:

原文地址:http://www.cnblogs.com/zihunqingxin/p/4517723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!