高數(shù)據(jù)量和吞吐量的數(shù)據(jù)庫應(yīng)用會(huì)對單機(jī)的性能造成較大的壓力,大的查詢量會(huì)將單機(jī)的CPU耗盡,大的數(shù)據(jù)量對單機(jī)的存儲(chǔ)壓力較大,最終會(huì)耗盡系統(tǒng)的內(nèi)存而將壓力轉(zhuǎn)移到磁盤IO上。
創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為新鄉(xiāng)等服務(wù)建站,新鄉(xiāng)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為新鄉(xiāng)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
mongodb分片是使用多個(gè)服務(wù)器存儲(chǔ)數(shù)據(jù)的方法,以支持巨大的數(shù)據(jù)存儲(chǔ)和對數(shù)據(jù)進(jìn)行操作。分片技術(shù)可以滿足Mongodb數(shù)據(jù)量大量增長的需求。,當(dāng)一臺(tái)mongodb服務(wù)器不足以存儲(chǔ)海量數(shù)據(jù)或不足以提供可接受的讀寫吞吐量時(shí),就可以通過在多臺(tái)服務(wù)器上分割數(shù)據(jù),使得數(shù)據(jù)庫系統(tǒng)能存儲(chǔ)和處理更多的數(shù)據(jù)。
使用分片減少了每個(gè)分片需要處理的請求數(shù),通過水平擴(kuò)展,群集可以提高自己的存儲(chǔ)容量和吞吐量。
實(shí)驗(yàn)配置圖如上
下面開始實(shí)驗(yàn),這里我在一臺(tái)機(jī)器上開啟多個(gè)實(shí)例來代替多臺(tái)服務(wù)器
yum -y install openssl-devel
tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt
mv mongodb-linux-x86_64-3.2.1/ /usr/local/mongodb
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
當(dāng)mongodb處于頻繁訪問的狀態(tài),如果shell啟動(dòng)進(jìn)程所占用的資源設(shè)置過低,將會(huì)產(chǎn)生錯(cuò)誤導(dǎo)致無法連接mongodb實(shí)例,所以這里需要設(shè)置ulimit -n和ulimit -u 的值大于20000
ulimit -n 25000
ulimit -u 25000
cd /usr/local/mongodb/bin/
vim mongodb1.conf
port=37017 #端口
dbpath=/data/mongodb/mongodb1 #數(shù)據(jù)存儲(chǔ)位置
logpath=/data/mongodb/logs/mongodb1.log #日志存儲(chǔ)位置
logappend=true #錯(cuò)誤日志采用追加模式,配置這個(gè)選項(xiàng)后mongodb的日志會(huì)追加到現(xiàn)有的日志文件,而不是從新創(chuàng)建一個(gè)新文件
fork=true #后臺(tái)運(yùn)行
maxConns=5000 #大同時(shí)連接數(shù)
storageEngine=mmapv1 #指定存儲(chǔ)引擎為內(nèi)存映射文件
configsvr=true #指定配置服務(wù)器的模式
sysctl -w vm.zone_reclaim_mode=0 #永久設(shè)置
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod
配置分片服務(wù)器的實(shí)例
復(fù)制生成配置文件
cp -p mongodb1.conf mongodb2.conf #復(fù)制配置服務(wù)器的配置文件生成實(shí)例2的配置文件
cp -p mongodb1.conf mongodb3.conf #復(fù)制配置服務(wù)器的配置文件生成實(shí)例2的配置文件
vim mongodb2.conf
port=47017 #修改端口號(hào)
dbpath=/data/mongodb/mongodb2 #修改數(shù)據(jù)存放目錄
logpath=/data/mongodb/logs/mongodb2.log #修改日志存放目錄
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true #指定分片服務(wù)器的模式
vim mongodb3.conf
port=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.234.177:37017 --chunkSize 1
這里關(guān)于mongos命令不知道該怎么使用,可以查看幫助信息
mongo
sh.addShard("192.168.234.177:47017")
sh.addShard("192.168.234.177:47018")
添加分片服務(wù)器之后再次查看
測試分片功能
mongos> show dbs
config 0.031GB
mongos> use kgc #進(jìn)入并創(chuàng)建一個(gè)use的集合
switched to db kgc
mongos> db.users.insert({"id":1,"name":"zhangsan"}) #添加一條數(shù)據(jù)
WriteResult({ "nInserted" : 1 })
mongos> for(var i=2;i<=20000;i++)db.users.insert({"id":i,"name":"zyc"+i}) #使用for循環(huán)添加20000條數(shù)據(jù)
WriteResult({ "nInserted" : 1 })
mongos> show dbs #查看表空間就會(huì)有一個(gè)kgc
config 0.031GB
kgc 0.078GB
mongos> show tables #查看表信息也可以看到users表
system.indexes
users
sh.enableSharding("kgc")
db.users.createIndex({"id":1}) #對users表創(chuàng)建索引
sh.shardCollection("kgc.users",{"id":1}) #表分片
sh.status() #此時(shí)再次查看,就可以已經(jīng)進(jìn)行分片處理了
到這里mongodb分片群集管理的介紹就全部完成了,如果覺得有幫助記得點(diǎn)贊、打賞下小弟哦!??!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。