1.首先需要安装相关软件包
wget [https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.1.tgz](https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.1.tgz)
tar zxf mongodb-linux-x86_64-rhel62-4.0.2.tgz
mv mongodb-linux-x86_64-rhel62-4.0.2 /usr/local/mongodb
2.创建MongoDB的数据存储目录/data/mogodb1,日志存储目录/data/logs,以及日志文件/data/logs/mongodb/mongodb1.log
mkdir -p /data/mongodb1
mkdir -p /data/logs/mongodb
touch /data/logs/mongodb/mongodb1.log
chmod -R 777 /data/logs/mongodb/mongodb1.log
当MongoDB处于频繁访问的状态时,如果shell启动进程所占用的资源设置过低的话,将会产生错误导致无法连接到MongoDB实例。需设置ulimit -n和ulimit -u的值大于20000。
ulimit -n 25000
ulimit -u 25000
3.创建MongoDB配置文件,定义启动所需相关参数
cd /usr/local/mongodb/bin/
vim mongodb.conf
#!/bin/bash
port=27017 #默认服务器端口号
dbpath=/data/mongodb1 #数据存储目录
logpath=/data/logs/mongodb/mongodb1.log #日志文件
logappend=true #使用追加的方式写日志
fork=true #后台运行
maxConns=5000 #最大同时连接数,默认2000
storageEngine=mmapv1 #指定存储引擎为内存映射文件
bind_ip=0.0.0.0 #默认是127.0.0.1,开启远程访问
#auth=true(这项暂时不动,因为涉及到auth认证,调试好所有的mongodb的问题后在来弄权限)
需要注意:在之前编写MongoDB启动所需的配置文件时,要指定storageEngine为内存映射文件,才会出现.ns文件,如果没有添加storageEngine=mmapv1这行,会被记录为.wt文件。
4.添加防火墙规则
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT
service iptables save
5.设置内核参数,关闭NUMA
echo 0 >/proc/sys/vm/zone_reclaim_mode //当某个节点可用内存不足时系统会从其他节点分配内存
sysctl -w vm.zone_reclaim_mode=0 //永久设置
添加mongodb环境:
cd /etc/profile
在文件最后一行添加:
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
source /etc/profile(立即生效)
启动MongoDB
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf
netstat -anpt | grep mongod
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 33475/mongod
停止MongoDB的方法
ps aux | grep mongod
root 33475 0.3 10.0 1537520 100864 ? Sl 04:29 0:00 /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf
kill -2 33475
或者
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf –shutdown
设置为开机自动启动
vim /etc/rc.local
rm -rf /data/mongodb1/mongod.lock
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf
尝试访问MongoDB
/usr/local/mongodb/bin/mongo 就是MongoDB的客户端
/usr/local/mongodb/bin/mongo
进入MongoDB之后也可以这样关闭mongoDB
use admin;
db.shutdownServer();
启动多实例
在单台服务器资源充分的情况下,可以使用多实例,以便充分使用服务器资源。
cd /usr/local/mongodb/bin/
cp mongodb.conf mongodb2.conf
vim /usr/local/mongodb/bin/mongodb2.conf
#!/bin/bash
port=27018 //定义第二个实例服务端口号
dbpath=/data/mongodb2 //定义第二个实例数据存储目录
logpath=/data/logs/mongodb/mongodb2.log //定义第二个实例日志文件
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
创建相关目录
mkdir /data/mongodb2
touch /data/logs/mongodb/mongodb2.log
chmod -R 777 /data/logs/mongodb/mongodb2.log
cd /usr/local/mongodb/bin/
./mongod -f mongodb.conf
./mongod -f mongodb2.conf
netstat -anpt | grep mongod
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2708/./mongod
tcp 0 0 127.0.0.1:27018 0.0.0.0:* LISTEN 2729/./mongod
为了便于运维人员管理,编写一个MongoDB数据库的控制脚本
vim /etc/init.d/mongod
#!/bin/bash
# chkconfig: - 99 20
PROG="/usr/local/mongodb/bin/mongod"
CONFIG=$1
CONF="/usr/local/mongodb/bin/$CONFIG.conf"
case "$2" in
start)
$PROG -f $CONF
;;
stop)
$PROG -f $CONF --shutdown
;;
restart)
$0 stop
$0 start
;;
*)
echo "用法: $0 {start|stop|restart}"
exit 2
esac
exit 0
chmod +x /etc/init.d/mongod
chkconfig --add mongod
service mongod mongodb start
service mongod mongodb2 start
网友评论