mongodb 安裝配置實踐

  1. 首先從官網下載mongodb的安裝包http://www.mongodb.org/downloads我的系統是redhat5.8所有選擇相應的版本包就ok現在最新版是3.0.3

  2. 解壓mongodb-linux-x86_64-rhel55-3.0.3.tgz

[root@mongodb ~]# tar zxvf mongodb-linux-x86_64-rhel55-3.0.3.tgz -C /opt/
mongodb-linux-x86_64-rhel55-3.0.3/README
mongodb-linux-x86_64-rhel55-3.0.3/THIRD-PARTY-NOTICES
mongodb-linux-x86_64-rhel55-3.0.3/GNU-AGPL-3.0
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongodump
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongorestore
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongoexport
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongoimport
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongostat
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongotop
mongodb-linux-x86_64-rhel55-3.0.3/bin/bsondump
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongofiles
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongooplog
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongoperf
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongod
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongos
mongodb-linux-x86_64-rhel55-3.0.3/bin/mongo
[root@mongodb opt]# ln -sv mongodb-linux-x86_64-rhel55-3.0.3/ mongodb
create symbolic link `mongodb' to `mongodb-linux-x86_64-rhel55-3.0.3/'

3.創建mongodb用戶

[root@mongodb /]# useradd mongodb

4.創建相應文件目錄並修改權限

[root@mongodb /]# mkdir /data/db -p
[root@mongodb /]# chown mongodb:mongodb /data/ -R
[root@mongodb opt]# chown -R mongodb:mongodb /opt/*

5.添加PATH環境變量在shell下正常訪問mongodb的應用工具

[root@mongodb bin]# vim /etc/profile.d/mongodb.sh
export    PATH=$PATH:/opt/mongodb/bin
[root@mongodb bin]# source /etc/profile.d/mongodb.sh 
[root@mongodb bin]# echo $PATH 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/mongodb/bin

6.創建mongodb的PID存放目錄

[root@mongodb run]# mkdir /var/run/mongodb
[root@mongodb run]# chown mongodb:mongodb /var/run/mongodb/ -R
[root@mongodb opt]# mongod --dbpath /data/db/ --logpath /var/log/mongodb.log --logappend --port 27017 --pidfilepath /var/run/mongodb/mongodb.pid --maxConns 250 --rest --httpinterface --fork
about to fork child process, waiting until server is ready for connections.
forked process: 4060
child process started successfully, parent exiting
--maxConns 250 :表示最大連接數是250個
--rest --httpinterface : web接口,指定這項28017端口才能啓用
--fork :後臺運行

7.安裝過程中遇見的問題

裝好之後連接出現以下警告

(1).[root@mongodb ~]# mongo
MongoDB shell version: 3.0.3
connecting to: test
Server has startup warnings: 
2015-06-15T20:27:49.892+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2015-06-15T20:27:49.892+0800 I CONTROL  [initandlisten]

出現這個問題就查看關於mongodb的文件權限,主要是/opt /data/db/ /var/run/mongodb/ /var/log/mongodb.log的權限因爲啓動初始化時以root用戶的權限在運行,所以這些目錄下的權限可能會變成root root

(2).[mongodb@mongodb db]$  mongod --dbpath /data/db/ --logpath /var/log/mongodb.log --logappend --port 27017 --pidfilepath /var/run/mongodb/mongodb.pid --maxConns 250 --rest --httpinterface --fork


2015-06-15T17:41:25.721+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 

'always'.
2015-06-15T17:41:25.721+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-06-15T17:41:25.721+0800 I CONTROL  [initandlisten] 
2015-06-15T17:41:25.721+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 

'always'.
2015-06-15T17:41:25.721+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'

修改兩個參數即可

echo "never" > /sys/kernel/mm/transparent_hugepage/enabled 
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag

 8.安裝成功並登錄

 [root@mongodb ~]# ss -tanlp | grep mongod
0      0                              *:27017                         *:*      users:(("mongod",4095,6))
0      0                              *:28017                         *:*      users:(("mongod",4095,8))
 [root@mongodb ~]# mongo
MongoDB shell version: 3.0.3
connecting to: test
> help
    db.help()                    help on db methods
    db.mycoll.help()             help on collection methods
    sh.help()                    sharding helpers
    rs.help()                    replica set helpers
    help admin                   administrative help
    help connect                 connecting to a db help
    help keys                    key shortcuts
    help misc                    misc things to know
    help mr                      mapreduce

    show dbs                     show database names
    show collections             show collections in current database
    show users                   show users in current database
    show profile                 show most recent system.profile entries with time >= 1ms
    show logs                    show the accessible logger names
    show log [name]              prints out the last segment of log in memory, 'global' is default
    use <db_name>                set current database
    db.foo.find()                list objects in collection foo
    db.foo.find( { a : 1 } )     list objects in foo where a == 1
    it                           result of the last line evaluated; use to further iterate
    DBQuery.shellBatchSize = x   set default number of items to display on shell
    exit                         quit the mongo shell

登錄web接口 28017端口

wKioL1V-Z8OwoPTiAAdSMuA5uvk007.jpg

9.關閉服務器

(1).[root@mongodb ~]# mongod --shutdown 
killing process with pid: 3936
(2).[root@mongodb ~]# killall mongod

10.給mongodb編寫配置文件/etc/mongodb.conf

[root@mongodb ~]# grep -v ^# /etc/mongodb.conf 
logpath=/var/log/mongodb.log
logappend=true
fork = true
dbpath=/data/db
pidfilepath = /var/run/mongodb/mongodb.pid
rest = true
httpinterface = true

啓動

[root@mongodb ~]# mongod -f /etc/mongodb.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 4169
child process started successfully, parent exiting
[root@mongodb ~]# ss -tanlp | grep mongod
0      0                              *:27017                         *:*      users:(("mongod",4169,6))
0      0                              *:28017                         *:*      users:(("mongod",4169,8))

11.用service mongodb * 來啓動mongodb
啓動腳本:/etc/rc.d/init.d/mongod

#!/bin/bash

# mongod - Startup script for mongod

# chkconfig: 35 85 15
# description: Mongo is a scalable, document-oriented database.
# processname: mongod
# config: /etc/mongod.conf
# pidfile: /var/run/mongo/mongod.pid

. /etc/rc.d/init.d/functions

# things from mongod.conf get there by mongod reading it

CONFIGFILE="/etc/mongodb.conf"
OPTIONS=" -f $CONFIGFILE"
SYSCONFIG="/etc/sysconfig/mongod"

DBPATH=`awk -F= '/^dbpath=/{print $2}' "$CONFIGFILE"`
PIDFILE=`awk -F= '/^dbpath\s=\s/{print $2}' "$CONFIGFILE"`
mongod=${MONGOD-/opt/mongodb/bin/mongod}

MONGO_USER=mongodb
MONGO_GROUP=mongodb

if [ -f "$SYSCONFIG" ]; then
    . "$SYSCONFIG"
fi

# Handle NUMA access to CPUs (SERVER-3574)
# This verifies the existence of numactl as well as testing that the command works
NUMACTL_ARGS="--interleave=all"
if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
then
    NUMACTL="numactl $NUMACTL_ARGS"
else
    NUMACTL=""
fi

start()
{
  echo -n $"Starting mongod: "
  daemon --user "$MONGO_USER" $NUMACTL $mongod $OPTIONS
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}

stop()
{
  echo -n $"Stopping mongod: "
  killproc -p "$PIDFILE" -d 300 /opt/mongodb/bin/mongod
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mongod
}

restart () {
    stop
    start
}

ulimit -n 12000
RETVAL=0

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload|force-reload)
    restart
    ;;
  condrestart)
    [ -f /var/lock/subsys/mongod ] && restart || :
    ;;
  status)
    status $mongod
    RETVAL=$?
    ;;
  *)
    echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
    RETVAL=1
esac

exit $RETVAL

測試啓動

[root@mongodb ~]# service mongod start
Starting mongod: about to fork child process, waiting until server is ready for connections.
forked process: 4426
child process started successfully, parent exiting
                                                           [  OK  ]
[root@mongodb init.d]# ss -tanlp | grep mongod
0      0                              *:27017                         *:*      users:(("mongod",4426,6))
0      0                              *:28017                         *:*      users:(("mongod",4426,8))                                                    
[root@mongodb ~]# mongo
MongoDB shell version: 3.0.3
connecting to: test
> 
[root@mongodb ~]# service mongod start
Starting mongod: about to fork child process, waiting until server is ready for connections.
forked process: 4426
child process started successfully, parent exiting
                                                           [  OK  ]

[root@mongodb ~]# service mongod stop
Stopping mongod:                                           [  OK  ]


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章