您的位置:首页 > 数据库 > Mongodb

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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: