Linux下MongoDB简介及部署使用

随着互联网web2.0兴起,传统的SQL已经不能满足海量数据查询所带来的缺点和不足,所以人们为了克服相应的问题而出现了NoSQL,而NoSQL中有四个分类,它们分别是:键值数据库(hash)、列式存储数据库、文档型数据库、图形数据库。而其中文档型数据库中最为典型的就是Mongodb,它是由C++编写的,用于为WEB应用提供可扩展的高性能数据存储解决方案,它的特点是高性能、易部署、易使用,存储数据非常方便,它支持动态查询、完全索引、自动分片、文件是使用Bson的格式等,其中使用的语法类似于Json的语法,可适用于网站数据、缓存、大尺寸、低价值的数据、用于对象及JSON 数据的存储等,不足是不能提供的对SQL的支持,支持的特性不够丰富,现在的产品相比关系型数据库还不够成熟,不过由于其良好的性能已经被大量使用与生产环境中。

具体的其他特性在这里就不做过多的赘述了,现在说说Linux下Mongodb简单的部署,在这里为了快速部署使用就使用了官网的最新二进制包去快速部署,当然如果要用的不是最新的可以用官网上的rpm包,Mongodb的官网:https://www.mongodb.com

[root@localhost src]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.2.tgz
[root@localhost src]# tar zxvf mongodb-linux-x86_64-rhel62-3.4.2.tgz -C /usr/local/mongodb/
[root@localhost src]# cd /usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.4.2
[root@localhost src]# mv ./* ../
[root@localhost mongodb]# rm -rf mongodb-linux-x86_64-rhel62-3.4.2
[root@localhost mongodb]# groupadd -r mongodb
[root@localhost mongodb]# useradd -M -g mongodb -r -s /sbin/nologin -d /data/mongodata mongodb
#设置mongodb用户的家目录为Mongodb的dbpath路径
[root@localhost mongodb]# chown -R mongodb:mongodb /usr/local/mongodb
#修改Mongodb的basedir文件的属组
[root@localhost mongodb]# mkdir /var/log/mongodb
[root@localhost mongodb]# chown mongodb:mongodb /var/log/mongodb
#创建Mongodb的log路径及修改属组
[root@localhost mongodb]# mkdir /var/run/mongodb/
[root@localhost mongodb]# chown mongodb:mongodb /var/run/mongodb
#创建Mongodb的pid文件路径及修改属组
[root@localhost mongodb]# vim /etc/profile.d/mongo.sh
export PATH=$PATH:/usr/local/mongodb/bin
[root@localhost mongodb]# source /etc/profile.d/mongo.sh
#添加Mongodb的二进制环境路径
#最后的mongod的启动脚本和mongodb.conf配置文件可以从rpm包安装的服务器上下载,修改一下,在这里有一点
#有一个Mongodb默认读取配置文件的配置文件实际是调用mongod执行的:
OPTIONS="--quiet -f /etc/mongodb.conf"
[root@localhost mongodb]# vim /etc/sysconfig/mongod#如果没有需要添加
#当然也可以修改mongod的启动脚本直接添加,下文会提及

Mongodb的启动脚本中需要修改相应的环境路径,启动脚本如下:

#!/bin/sh
#
# mongodb      init file for starting up the MongoDB server
#
# chkconfig:  - 90 10
# description: Starts and stops the MongDB daemon that handles all \
#              database requests.
 
# Source function library.
. /etc/rc.d/init.d/functions
 
exec="/usr/local/mongodb/bin/mongod"
prog="mongod"
logfile="/var/log/mongodb/mongodb.log"
 
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
pidfile=${PIDFILE-/var/run/mongodb/mongodb.pid}
options="$MONGODB_OPTIONS $OPTIONS"
lockfile="/var/lock/subsys/mongod"
#要修改的就是相应的环境路径
# Nicer version of killproc that does not kill mongodb when it takes
# a long time to shut down and does not hang for a long time when mongo
# shuts down quickly
killproc_nice() {
        local RC base pid pid_file= delay i
 
        RC=0; delay=3
        # Test syntax.
        if [ "$#" -eq 0 ]; then
                echo $"Usage: killproc [-p pidfile] [ -d delay] {program} [-signal]"
                return 1
        fi
        if [ "$1" = "-p" ]; then
                pid_file=$2
                shift 2
        fi
        if [ "$1" = "-d" ]; then
                delay=$2
                shift 2
        fi
 
        # Save basename.
        base=${1##*/}
 
        # Find pid.
        __pids_var_run "$1" "$pid_file"
        RC=$?
        if [ -z "$pid" ]; then
                if [ -z "$pid_file" ]; then
                        pid="$(__pids_pidof "$1")"
                else
                        [ "$RC" = "4" ] && { failure $"$base shutdown" ; return $RC ;}
                fi
        fi
 
        # Kill it.
        if [ -n "$pid" ] ; then
                [ "$BOOTUP" = "verbose" -a -z "${LSB:-}" ] && echo -n "$base "
                if checkpid $pid 2>&1; then
                        # TERM first, then KILL if not dead
                        kill -TERM $pid >/dev/null 2>&1
                        usleep 100000
 
                        # Check every one second if the program is stopped.
                        # Do so for a maximum of $delay seconds
                        for ((i = 0 ; i < $delay; i++))
                        do
                                if checkpid $pid; then
                                        sleep 1
                                else
                                        break
                                fi
                        done
 
                        # If the program is not stopped, kill it
                        if checkpid $pid ; then
                                kill -KILL $pid >/dev/null 2>&1
                                usleep 100000
                        fi
                fi
                checkpid $pid
                RC=$?
                [ "$RC" -eq 0 ] && failure $"$base shutdown" || success $"$base shutdown"
                RC=$((! $RC))
        else
                failure $"$base shutdown"
                RC=0
        fi
 
        # Remove pid file if any.
        rm -f "${pid_file:-/var/run/$base.pid}"
        return $RC
}
 
start() {
    [ -x $exec ] || exit 5
    echo -n $"Starting $prog: "
    daemon --pidfile=${pidfile} --user mongodb "$exec $options run >> $logfile 2>&1"
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc_nice -p ${pidfile} -d 300 $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    stop
    start
}
 
reload() {
    restart
}
 
force_reload() {
    restart
}
 
rh_status() {
    # run checks to determine if the service is running or use generic status
    status -p ${pidfile} $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
        exit 2
esac
exit $?

Mongodb的配置文件mongodb.conf,如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7c546a2413ef925fee407e6b9ca32ab3.html