共计 8648 个字符,预计需要花费 22 分钟才能阅读完成。
随着互联网 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,如下:
##
### Basic Defaults
##
bind_ip = 127.0.0.1
port = 27017
fork = true
pidfilepath = /var/run/mongodb/mongodb.pid
logpath = /var/log/mongodb/mongodb.log
dbpath =/data/mongodata
journal = true
# Enables periodic logging of CPU utilization and I/O wait
#cpu = true
# Turn on/off security. Off is currently the default
#noauth = true
#auth = true
# Verbose logging output.
#verbose = true
# Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck = true
# Enable db quota management
#quota = true
# Set oplogging level where n is
# 0=off (default)
# 1=W
# 2=R
# 3=both
# 7=W+some reads
#oplog = 0
# Diagnostic/debugging option
#nocursors = true
# Ignore query hints
#nohints = true
# Disable the HTTP interface (Defaults to port+1000).
nohttpinterface = true
# Turns off server-side scripting. This will result in greatly limited
# functionality
#noscripting = true
# Turns off table scans. Any query that would do a table scan fails.
#notablescan = true
# Disable data file preallocation.
#noprealloc = true
# Specify .ns file size for new databases.
# nssize = <size>
# Accout token for Mongo monitoring server.
#mms-token = <token>
# Server name for Mongo monitoring server.
#mms-name = <server-name>
# Ping interval for Mongo monitoring server.
#mms-interval = <seconds>
# Replication Options
# in replicated mongo databases, specify here whether this is a slave or master
#slave = true
#source = master.example.com
# Slave only: specify a single database to replicate
#only = master.example.com
# or
#master = true
#source = slave.example.com
# Address of a server to pair with.
#pairwith = <server:port>
# Address of arbiter server.
#arbiter = <server:port>
# Automatically resync if slave data is stale
#autoresync
# Custom size for replication operation log.
#oplogSize = <MB>
# Size limit for in-memory storage of op ids.
#opIdMem = <bytes>
配置好后第一次启动后会生成相应的数据文件
[root@localhost mongodb]# /etc/init.d/mongod start
正在启动 mongod:[确定]
[root@localhost mongodb]# mongo#Mongodb 客户端启动
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2
Server has startup warnings:
2017-02-15T10:42:11.888+0800 I STORAGE [initandlisten]
2017-02-15T10:42:11.888+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-02-15T10:42:11.888+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten]
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten]
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten]
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten] ** We suggest setting it to ‘never’
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten]
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten] ** We suggest setting it to ‘never’
2017-02-15T10:42:12.850+0800 I CONTROL [initandlisten]
> show dbsshow dbs
admin 0.000GB
local 0.000GB
# 有 2 个默认库
如此 Mongodb 的初步介绍使用结束。
更多 MongoDB 相关教程见以下内容:
CentOS 编译安装 MongoDB 与 mongoDB 的 php 扩展 http://www.linuxidc.com/Linux/2012-02/53833.htm
CentOS 6 使用 yum 安装 MongoDB 及服务器端配置 http://www.linuxidc.com/Linux/2012-08/68196.htm
Ubuntu 13.04 下安装 MongoDB2.4.3 http://www.linuxidc.com/Linux/2013-05/84227.htm
MongoDB 入门必读(概念与实战并重) http://www.linuxidc.com/Linux/2013-07/87105.htm
Ubunu 14.04 下 MongoDB 的安装指南 http://www.linuxidc.com/Linux/2014-08/105364.htm
《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF] http://www.linuxidc.com/Linux/2012-07/66735.htm
Nagios 监控 MongoDB 分片集群服务实战 http://www.linuxidc.com/Linux/2014-10/107826.htm
基于 CentOS 6.5 操作系统搭建 MongoDB 服务 http://www.linuxidc.com/Linux/2014-11/108900.htm
MongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140858.htm