mongodb分片羣集

  • 簡介:大數據量和吞吐量的數據庫會對單機的性能 造成較大壓力,大量的數據查詢會將單機的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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章