一、MongoDB 支持的平台
MongoDB 服务端可运行在 Linux、Windows 或 OS X 平台,支持 32 位和 64 位应用,默认端口为 27017。推荐运行在 64 位平台,因为 MongoDB 在 32 位模式运行时支持的最大文件尺寸为 2GB。
下图是官方提供的 MongoDB 3.2 支持的各系统版本。
二、MongoDB 的 RPM 包介绍
MongoDB官方提供的包如下,并且这些包也支持yum方式安装,Mongo提供了自己的yum库。
- mongodb-org
这个包是一个元包(metapackage),自动安装以下四个包。
- mongodb-org-server
这个包中包含mongod守护进程和相关的配置和初始化脚本。
- mongodb-org-mongos
这个包中包含mongos进程。
- mongodb-org-shell
这个包中包含mongo shell程序。
- mongodb-org-tools
这个包中包含mongo的工具,有如下: mongoimport bsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat和mongotop。
CentOS6 64位系统
YUM安装MongoDB-3.2.0
1)首先创建文件 /etc/yum.repos.d/mongodb.repo 来保存下面的 MongoDB 软件库配置信息:
1 2 3 4 5 |
[mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpgcheck=0 enabled=1 |
2)安装MongoDB
安装最新的稳定版MongoDB, 使用下列命令:
1 |
$ yum install -y mongodb-org |
安装指定版本的MongoDB , 需要单独安装每个元件包,并在包名后面加上版本号,下面的例子安装 3.20` 版本的 MongoDB:
1 |
$ yum install -y mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools |
3)运行MongoDB
1 2 |
$ service mongod start $ chkconfig mongod on |
或
1 2 3 4 |
$ mongod -f /etc/mongod.conf about to fork child process, waiting until server is ready for connections. forked process: 100780 child process started successfully, parent exiting |
通过启动MongoDB的服务mongod运行起来之后可以通过netstat查看服务端口(mongodb运行在TCP的27017端口上)
1 2 |
$ netstat -anplt | grep mongod tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 49746/mongod |
4)关闭MongoDB
1 2 3 |
$ service mongod stop 或 $ killall mongod |
除了用killall命令还可以使用pkill命令都可以把mongdb关闭了,但是注意不能用kill -9来关闭mongodb,否则就会发现下次无法成功启动mongod了。我尝试之后发现当service mongod stop启动不了时,直接使用mongod -f /etc/mongod.conf可以启动。
5)MongoDB的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 配置文件; /etc/mongod.conf # 服务文件; /etc/rc.d/init.d/mongod # 日志文件; /var/log/mongodb/mongod.log # PID文件; /var/run/mongodb/mongod.pid # 数据目录; /var/lib/mongo |
6)MongoDB工具集
MongoDB在bin目录下提供了一系列有用的工具,这些工具提供了MongoDB在运维管理上的方便,mongodb 3.0官方使用GO语言全部重写了这些工具。
Bsondump – 将bson格式的文件转储为json格式的数据。
Mongo – 客户端命令行工具,其实也是一个javascript解释器,支持js语法。
Mongod – 数据库服务器端,每个实例启动一个进程,可以fork为后台运行。
Mongodump/mongorestore – 数据库备份和恢复工具。
Mongoexport/mongoimport – 数据导出和导入工具。
Mongofiles – GridFS管理工具,可实现二进制文件的存储。
Mongos – 分片路由,如果是用来sharding功能,则应用程序连接的是mongos而不是mongod。
Mongostat – 实例统计信息。
Mongotop – 数据库磁盘I/O实时分析工具。
Mongooplog – 日志分析工具。
Mongoopperf – 性能测试工具。
7)MongoDB后台管理 Shell
当MongoDB安装好并启动之后,如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ mongo MongoDB shell version: 3.2.0 connecting to: test Server has startup warnings: [initandlisten] [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. [initandlisten] ** We suggest setting it to 'never' [initandlisten] [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. [initandlisten] ** We suggest setting it to 'never' [initandlisten] [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files. [initandlisten] > > |
上面通过mongo客户端进入到了mongodb shell交互式接口,但是会有三个警告信息,前两个警告信息是关于Linux中hugepage的。
MongoDB警告信息就是要求关闭hugepage,Oracle也要求关闭,HDFS会因为这个性能严重受影响。就是允许hugepage可以动态分配,而不是系统启动时预先分配,看上去对内存消耗很大的服务都不喜欢它。对于hugepage可以看这篇文章“hugepage详解”
以下操作是临时关闭hugepage开机自动分配:
1 2 |
$ echo "never" > /sys/kernel/mm/transparent_hugepage/enabled $ echo "never" > /sys/kernel/mm/transparent_hugepage/defrag |
第三个警告是关于Linux的ulimit设置,Linux默认ulimit最多允许单进程打开文件的个数为1024个,MongoDB会要求改变ulimit。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ ulimit -a -t: cpu time (seconds) unlimited -f: file size (blocks) unlimited -d: data seg size (kbytes) unlimited -s: stack size (kbytes) 8192 -c: core file size (blocks) 0 -m: resident set size (kbytes) unlimited -u: processes 192276 -n: file descriptors 21000 -l: locked-in-memory size (kb) 40000 -v: address space (kb) unlimited -x: file locks unlimited -i: pending signals 192276 -q: bytes in POSIX msg queues 819200 -e: max nice 30 -r: max rt priority 65 -N 15: unlimited |
ulimit问题(官网):http://docs.mongodb.org/manual/reference/ulimit/
以下参数的设置是MongoDB官方建议的设置
1 2 3 4 5 6 7 |
$ ulimit -f unlimited $ ulimit -t unlimited $ ulimit -v unlimited $ ulimit -n 64000 $ ulimit -m unlimited $ ulimit -u 64000 $ service mongod restart |
都修改完毕之后再次进入Mongodb Shell就不会有警告信息了,如下:
1 2 3 4 |
$ mongo MongoDB shell version: 3.2.0 connecting to: test > |