MongoDB使用——安装和基本操作
2016-12-13 16:00
465 查看
"The palest ink is better than the best memory"——好记性不如烂笔头。2013~2015补记
题记 :
2013.3月时公司用户通讯录记录近8000W(Mysql单表),读写奇慢。考虑到业务应用场景和数据结构形态(用户通讯录、第三方社交平台好友数据)——无固定Schema ,结构松散;且对数据一致性要求不高。
另这些数据适合直接使用JSON存储(当时生产环境Mysql5.1中一些字段硬是存储一个JSON字符串,无法做到修改JSON中某一个节点的数据)。而Mongodb面向集合存储:适合存储对象及JSON形式的数据;支持动态查询,查询指令使用JSON形式标记,可轻易查询文档中内嵌的对象及数组;完整的索引支持:包括文档内嵌对象及数组。
应用场景:
通讯录、名片夹、第三方社交平台好友数据存储附近人脉(Geo特性)
内部API系统
Mongodb安装:
1.在线下载:curl http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.4.2.tgz > mongodb.tgz
2.解压安装:
tar -zxvf mongodb.tgz
3.重命名:
mv mongodb-linux-x86_64-2.4.2 mongodb64_2.4.2
4.随机启动(vi编辑器打开配置文件,并在其中加入):
vi /etc/rc.local
/usr/local/mongodb64_2.4.2/bin/mongod -dbpath=/usr/local/mongodb64_2.4.2/data/db --port 27017 -logpath=/var/log/mongodb_log/log --logappend
5.启动mongodb:
./mongod-dbpath=/usr/local/mongodb64_2.4.2/data/db--logpath=/var/log/mongodb_log/mongodb.log
6.查看端口:
netstat -tnl
7.查看进程:
ps -ef | grep 'mongod'
8.本地测试:
wget http://127.0.0.1:28017/[/code]
9.进入Shell:/bin/mongo另外,我们使用mongo命令登录 MongoDB还要转到mongo命令所在目录再执行./mongo,这样是不是有些麻烦?因此,我们可以简化这点,将该命令文件copy到/usr/bin下,这样就可以在任何目录下使用mongo命令
10.关闭服务:官方文档说明要使用 kill -15或killall mongod或在client的shell里,use admin,执行db.shutdownServer()即可!
11.Mongo运行监控:[root@testServer bin]# ./mongostat connected to: 127.0.0.1 insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn time *0 5 *0 *0 0 1|0 0 448m 1.16g 7m 17 9tong:0.0% 0 0|0 0|0 62b 3k 1 14:11:54 *0 *0 *0 *0 0 1|0 0 448m 1.16g 7m 0 test:0.0% 0 0|0 0|0 62b 3k 1 14:11:55 *0 *0 *0 *0 0 1|0 0 448m 1.16g 7m 0 test:0.0% 0 0|0 0|0 62b 3k 1 14:11:56
12.启动脚本:[root@testServer bin]# cat mongod.conf ################################################################################## # # # Descrition: configuration Options for MongoDB # # Author: Ares.yi # # Createtime: 2013-06-01 # # Reference: http://docs.mongodb.org/manual/reference/program/mongod/ # # # ################################################################################## #auth = true dbpath = /data_pic/mongodata logpath = /data_pic/mongodb_log/mongodb.log fork = true[root@testServer bin]# cat start-mongod.sh #!/bin/bash ################################################################################## # # # Descrition: Start MongoDB # # Author: Ares.yi # # Createtime: 2013-06-01 # # # ################################################################################## /usr/local/server/mongodb64_2.4.2/bin/mongod --config索引管理:
1.查看索引:
db.runCommand({deleteIndexes:”user_contacts”,index:”numberSet_1”})
2.创建索引(后台创建、松散索引):
db.user_contacts.ensureIndex({numberSet:1},{sparse:true},{backgroud:true})
建立组合索引
db.data.ensureIndex({“info.url”:1, “info.city”:1});
创建唯一索引(删除已经重复的数据,保留一条):
db.user_contacts.ensureIndex({“id”:1},{“unique”:true,”dropDups”:true})
3.删除索引:
db.runCommand({deleteIndexes:”user_contacts”,index:”numberSet_1”})
4.命令行下提供了一个命令来返回指定Collection的索引大小:
db.user_contacts.totalIndexSize();重要命令:
1.db.serverStatus():> db.serverStatus().connections; { "current" : 3, "available" : 816, "totalCreated" : NumberLong(1217) }
mongodb最大的连接数是819,在启动里面加参数 –maxConns=3000重启mongodb服务后最大连接数还是819。
最后通过排查发现是linux系统的限制,Linux系统默认一个进程最大文件打开数目为1024。需要修改此限制
因为已经将mongodb添加到开机启动里面,所以需要在rc.local文件下面加ulimit -n 的限制 :[root@testServer bin]# vi /etc/rc.local
2.db.currentOp():
Mongodb 的命令一般很快就完成,但是在一台繁忙的机器或者有比较慢的命令时,你可以通过db.currentOp()获取当前正在执行的操作。
在没有负载的机器上,该命令基本上都是返回空,如下:> db.currentOp(); { "inprog" : [ ] }
一个有负载的机器上得到的返回值样例:{ "opid" : "s4664", "active" : false, "waitingForLock" : false, "op" : "query", "ns" : "sd.userEmail", "query" : { }, "client_s" : "10.121.13.8:34473", "desc" : "conn" }
如果你发现一个操作太长,把数据库卡死的话,可以用这个命令杀死他:
db.killOp(“s4664”)FAQ:
》mongoDB非正常关闭后无法启动问题
解决方法:
1、删除%MONGO_HOME%/db下的.lock文件
2、输入命令 mongod –repair
3、重启mongoDB
》WARN处理:
解决方法:
(http://docs.mongodb.org/manual/administration/production-notes/#production-numa)
(http://blog.nosqlfan.com/html/2772.html)numactl --interleave=all ./mongod -dbpath=/usr/local/mongodb64_2.4.2/data/db -logpath=/var/log/mongodb_log/mongodb.log
》./bin/mongod 启动 MongoDB 服务时,屏幕会输出很多运行信息,并不会回到 shell 提示符。除非 Ctrl + C,但是这样会停止 MongoDB 服务进程。
解决方法(使用Daemon方式):
方法1:使用&符号
如:./mongod -dbpath=/usr/local/mongodb64_2.4.2/data/db -logpath=/var/log/mongodb_log/mongodb.log &
方法2:使用fork参数符号
如:./mongod -dbpath=/usr/local/mongodb64_2.4.2/data/db -logpath=/var/log/mongodb_log/mongodb.log –fork资料参考:
1.MongoDB Shell 常用操作:
http://www.csser.com/board/4f4e9315eb0defac57000129
2.mongodb.conf配置:
http://docs.mongodb.org/manual/reference/configuration-options/
3.博客:
http://chenzhou123520.iteye.com/category/232023
http://xiayuanfeng.iteye.com/category/149973
4.MongoDB基本使用
http://www.cnblogs.com/TankMa/archive/2011/06/08/2074947.html
5.MongoDB监控:
http://tech.lezi.com/archives/290
6.索引:
http://blog.nosqlfan.com/html/3656.html
http://blog.nosqlfan.com/html/271.html
http://www.cnblogs.com/stephen-liu74/archive/2012/08/01/2561557.html
7.权限用户:
http://space.itpub.net/22664653/viewspace-715617
http://hi.baidu.com/ixigua/item/69eabbcc5a078625a0b50a5e
http://www.qttc.net/201304299.html
http://www.cnblogs.com/dennisit/archive/2013/02/22/2922906.html
8.数组查询:
http://blog.csdn.net/drifterj/article/details/7833883
9.备份:
http://blog.chinaunix.net/uid-15795819-id-3381684.html
http://www.netingcn.com/mongodb-start-stop-scripts.html
10.Mongod
http://docs.mongodb.org/manual/reference/program/mongod/
相关文章推荐
- Nosql之Mongodb 1 安装配置与基本操作
- mongodb基本操作,mongodb数据类型,mongodb中ddl和dml语句使用
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(二)
- 安装和使用percona-toolkit来辅助操作MySQL的基本教程
- Linux系统下MongoDB的简单安装与基本操作
- MongoDB安装和基本使用
- MongoCola使用教程 1 - MongoDB的基本操作和聚合功能
- Maven入门:安装使用以及基本操作
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(三)
- MongoDB 安装,启动与基本使用
- MongoDB 安装和即基本操作
- MongoDB使用指南--基本操作
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(四)
- MongoDB入门1――简介、安装及基本使用
- MongoDB安装配置与基本操作
- MongoCola使用教程 1 - MongoDB的基本操作和聚合功能
- MongoDB使用指南--基本操作
- 【window10下python的对elcel表格操作xlrd和xlwt模块的下载与安装及基本的使用】
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(五)
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(一)