首先最近想自动化实现mongodb的管理,因为现在维护mongodb每天要记录总的记录数和每天新增的记录数,无非就是两条查询语句: db.videos.count() 和 db.vid_add.count(),不过每天都要进入mongodb的shell里,执行这两条语句,接着记录日期,复制数据到一个文本文件里,每天都这样重复的操作。所以想写个脚本,在Linux下通过crontab自动维护。
这里用的是mongodb 1.6.4,64位,linux版
网上的mongodb的中文资料少得可怜,只能自己试。首先查询mongo命令的参数,发现有个--shell的参数,在mongodb的官网里有说明,mongodb可以通过这个参数运行js脚本,再通过官网的一个例子:https://github.com/mdirolf/shell_presentation/blob/master/slides.js,发现也不是很难。接着就在linux服务器上写了个简单的脚本,
mongo.js
print("all count:" + db.videos.count() );
print("add count:" + db.vid_add.count() );
接着在linux 试了一下:
/mongo localhost/myCollections --shell /home/bosshida/mongo.js
发现真的可以了:输出
MongoDB shell version: 1.6.4
connecting to: localhost/crawler
type "help" for help
all count:113358593
add count:2940633
不过这时是进入了mongodb 的 shell 控制台,这样就需要再写个脚本来关闭此进程
根据经验就知道是通过ps 列出全部进程,再通过grep找出进程ID, 接着kill掉
因为要去掉grep本身这个进程,又上网查了下资料,可以通过grep -v 'grep'来排除含有grep的进程,最后通过管道怎样kill掉找出的进程,脚本如下:
ps -ef| grep '/home/mongodb/bin/mongo local/myCollection --shell mongo.js' | grep -v 'grep'| awk '{print $2}' | xargs kill
其中awk是提取出进程号,xargs kill 是网上找来的,在man kill也没找到说明,我猜应该是对传过来的参数做为pid,接着kill掉。
其中对awk不熟悉,通过一些资料,大概用法也了解,主要是掌握 awk '/pattern/{action}' 这个规则,就是通过pattern找出符合的(正则),再执行action。
Kill掉进程后,还没完事,还要抽取数据写入文件,
其中要抽取的数据只是
all count:113358593
add count:2940633
这两行,所以我另外写一个脚本来抽取数据并写入到另外的文件
echo `date`>> result.txt | sed -n '4,5p' stat.txt | awk -F : '{print $2}' >> result.txt
说明一下:
脚本的流程是先把日期写入result.txt文件,再通过sed把stat.txt文件的第4,5行抽取出来,通过awk抽取每行的数据追加到result.txt文件。
sed -n '4,5p' stat.txt 的意思是从文件的第4行开始到第5行,截取其内容。
awk -F : '{print $2}'的意思是以冒号":"为分隔符,打印第二个数值。
这样工作就大概完成了,最后写个crontab,每天定时运行脚本,就自动记录Mongodb的数据了。
分享到:
相关推荐
资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...
scrapy-mongodb - 用于Scrapy的MongoDB管道
视觉中国的MongoDB应用实践 视觉中国的MongoDB应用实践
MongoDB在性能监控领域的应用 熊掀,讲述了MongoDB的性能监控、数据存储、 数据库监控方案。
mongoDB数据库WEB远程维护管理软件,mongoDB客户端工具,mongoDB可视化工具
spring data mongodb 聚合 管道
Mongodb的使用语法以及同传统sql语句的对比
深入浅出MongoDB应用实战开发视频教学,里面包含笔记和资料
《Node应用程序构建:使用MongoDB和Backbone》 源码,里面有git地址
C#\MongoDB应用开发实战\MongoDB
MongoDB 聚合管道(Aggregation Pipeline) - 张善友 - 博客园
MongoDB应用设计模式 高清中文版
MongoDB应用 Java应用 纯java mongodb操作 mongodb 通用dao
本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》,教程侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB...
MongoDB应用设计模式:MongoDB Applied Design Patterns 中英文打包两本合集
MongoDB简介与实践
Node应用程序构建——使用MongoDB和Backbone
1、mongodb常规操作 2、测试数据多线程生产 3、单元测试查询效率
一、MongoDB 聚合管道(Aggregation Pipeline) 二、MongoDB Aggregation 管道操作符与表达式 三、 数据模拟
这篇文章就是展示如何使用Java基于MongoDB和Spring Data创建一个CRUD应用。 Spring Data for MongoDB提供了一个类似于基于Sping编程模型的NoSQL数据存储。Spring Data for MongoDB提供了很多特性,它使很多MongoDB的...