-
简介:大数据量和吞吐量的数据库会对单机的性能 造成较大压力,大量的数据查询会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存,将压力转移到磁盘IO上。
-
优点:1.使用分片减少了每个分片需要处理的请求数。2.使用分片减少了每个分片存储的数据。
-
mongodb分片群集的组成:shard(分片服务器),config server(配置服务器),route(路由服务器)
-
分片服务器:存储数据
-
配置服务器:管理分片服务器
-
路由服务器:作为前端路由
安装mongodb3.2:
安装openssl-devel并解压到/opt下
便于管理mongo和mongod,做个链接
yum install openssl-devel -y
tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt/
mv mongodb-linux-x86_64-3.2.1/ /usr/local/mongodb
ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod
创建四个实例的数据文件和日志文件
mkdir -p /data/mongodb/mongodb{1,2,3,4}
mkdir /data/mongodb/logs
touch /data/mongodb/logs/mongodb{1,2,3,4}.log
chmod -R 777 /data/mongodb/logs/*.log
nlimit -u和ulimit -n的值大于20000
ulimit -n 25000
ulimit -u 25000
配置服务器
cd /usr/local/mongodb/bin/ //在bin目录下
vim mongodb1.conf
port=37017 //添加如下内容
dbpath=/data/mongodb/mongodb1
logpath=/data/mongodb/logs/mongodb1.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
configsvr=true
mongod -f /usr/local/mongodb/bin/mongodb1.conf //启动服务
sysctl -w vm.zone_reclaim_mode=0
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
//某节点内存不足时,从其他节点分配内存
分片服务器
#mongodb2.conf
cp -p mongodb1.conf mongodb2.conf
vim mongodb2.conf //对mongodb2.conf进行配置
port=47017 //端口号为47017
dbpath=/data/mongodb/mongodb2 //数据文件
logpath=/data/mongodb/logs/mongodb2.log //日志文件
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true
#mongodb3.conf
cp -p mongodb1.conf mongodb3.conf
vim mongodb3.conf
port=47018 //端口为47018
dbpath=/data/mongodb/mongodb3
logpath=/data/mongodb/logs/mongodb3.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true
#开启两个服务
mongod -f mongodb2.conf
mongod -f mongodb3.conf
启动路由服务器
./mongos --port 27017 --fork --logpath=/usr/local/mongodb/bin/route.log --configdb 192.168.235.204:37017 --chunkSize 1 //必须在/usr/local/mongodb/bin下
启用分片服务器
mongo
mongos> show dbs
mongos> sh.status() //shards下为空,没有分片服务器
mongos> sh.addShard("192.168.177.133:47017") //添加47017端口的分片服务器
mongos> sh.addShard("192.168.177.133:47018") //添加47018端口的分片服务器
mongos> sh.status()
分片功能
先添加一个数据库,在集合里创建数据
mongos> sh.enableSharding("school") #启用数据库分片
mongos> db.info.createIndex({"id":1}) #对info表创建索引
mongos> sh.shardCollection("school.info",{"id":1}) #表分片
mongos> sh.status()