高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘IO上
MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接受的读写吞吐量时,可以通过在多台服务器上分割数据,使得数据库系统能存储和处理更多的数据
分片为应对高吞吐量与大数据量提供了方法
使用分片减少了每个分片需要处理的请求数,因此,通过水平扩展,群集可以提高自己的存储容量和吞吐量。比如,当插入一条数据时,应用只需要访问存储这条数据的分片
使用分片减少每个分片存储的数据
分片的优势在于提供类似线性增长的架构,提高数据可用性,提高大型数据库查询服务器的性能。当MongoDB单点数据库服务器存储成为瓶颈、单点数据库服务器的性能成为瓶颈或者需要部署大型应用以充分利用内存时,可以使用分片技术
Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server 角色可以由几台服务器组成一个Peplica Set 承担,防止主机单点故障。
Config Server:配置服务器,存储了整个分片群集的配置信息,其中包括chunk信息。
Routers:前端路由,客户端由此接入,且让整个群集看上去像单一数据库,前端应用可以透明使用。
[root@localhost ~]# yum -y install gcc gcc-c++ openssl-devel
2、解压MongoDB[root@localhost ~]# tar xvfz mongodb-linux-x86_64-3.2.1.tgz #免配置,免编译
[root@localhost ~]# mv mongodb-linux-x86_64-3.2.1 /usr/local/mongodb
[root@localhost ~]# cd /usr/local/mongodb/
[root@localhost mongodb]# mkdir etc #创建配置文件目录
[root@localhost mongodb]# mkdir log #创建日志文件目录
[root@localhost ~]# mkdir -p /usr/local/mongodb/data/mongodb1 #创建相关数据目录
[root@localhost ~]# mkdir -p /usr/local/mongodb/data/mongodb2
[root@localhost ~]# mkdir -p /usr/local/mongodb/data/mongodb3
[root@localhost ~]# mkdir -p /usr/local/mongodb/data/mongodb4
[root@localhost ~]# touch /usr/local/mongodb/etc/mongodb{1,2,3,4}.conf #创建配置文件
[root@localhost ~]# touch /usr/local/mongodb/log/mongodb{1,2,3,4}.log #创建日志文件
[root@localhost ~]# chmod 777 /usr/local/mongodb/log/*.log #修改日志权限
4、修改内核资源限制ulimit -n 25000 #指定同一时间最多可开启的文件数
ulimit -u 25000 #用户最多可开启的程序数目
[root@localhost ~]# ln -s /usr/local/mongodb/etc/ /etc/
[root@localhost ~]# ln -s /usr/local/mongodb/bin/ /usr/bin/
[root@localhost ~]# vim /etc/mongodb1.conf
port=37017
dbpath=/usr/local/mongodb/data/mongodb1
logpath=/usr/local/mongodb/log/mongodb1.log
logappend=true #日志追加
fork=true #工作模式
maxConns=5000 #最大连接数
storageEngine=mmapv1 #存储引擎
configsvr=true #指定配置服务器角色
[root@localhost ~]# mongod -f /etc/mongodb1.conf
[root@localhost ~]# netstat -anpt | grep '37017'
[root@localhost ~]# vim /etc/init.d/mongodb
#!/bin/bash
# descript:Mongodb Server Control Script
# Author: GuiHaiYiDao TEL:139741741741
# date:long long ago
instance=$1
action=$2
case "$action" in
'start')
mongod -f /etc/"$instance".conf
;;
'stop')
mongod -f /etc/"$instance".conf --shutdown
;;
'restart')
mongod -f /etc/"$instance".conf --shutdown
mongod -f /etc/"$instance".conf
;;
esac
[root@localhost ~]# chmod +x /etc/init.d/mongodb
[root@localhost ~]# /etc/init.d/mongodb mongodb1 start #启动
源码包安装已经配置过了,端口号37017,略……
2、部署分片服务器[root@localhost ~]# vim /etc/mongodb2.conf #部署第1个分片服务器