CentOS7上的mongodb分片群集

CentOS7的MongoDB分片群集

簡(jiǎn)介

高數(shù)據(jù)量和吞吐量的數(shù)據(jù)庫(kù)應(yīng)用會(huì)對(duì)單機(jī)的性能造成較大的壓力,大的查詢(xún)量會(huì)將單機(jī)的CPU耗盡,大的數(shù)據(jù)量對(duì)單機(jī)的存儲(chǔ)壓力較大,最終會(huì)耗盡系統(tǒng)的內(nèi)存而將壓力轉(zhuǎn)移到磁盤(pán)IO上。
mongodb分片是使用多個(gè)服務(wù)器存儲(chǔ)數(shù)據(jù)的方法,以支持巨大的數(shù)據(jù)存儲(chǔ)和對(duì)數(shù)據(jù)進(jìn)行操作。分片技術(shù)可以滿(mǎn)足Mongodb數(shù)據(jù)量大量增長(zhǎng)的需求。,當(dāng)一臺(tái)mongodb服務(wù)器不足以存儲(chǔ)海量數(shù)據(jù)或不足以提供可接受的讀寫(xiě)吞吐量時(shí),就可以通過(guò)在多臺(tái)服務(wù)器上分割數(shù)據(jù),使得數(shù)據(jù)庫(kù)系統(tǒng)能存儲(chǔ)和處理更多的數(shù)據(jù)。

為疏附等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及疏附網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站制作、疏附網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

分片的優(yōu)勢(shì)

  • 使用分片減少了每個(gè)分片需要處理的請(qǐng)求數(shù),通過(guò)水平擴(kuò)展,群集可以提高自己的存儲(chǔ)容量和吞吐量。

  • 使用分片減少了每個(gè)分片存儲(chǔ)的數(shù)據(jù)

分片群集的組成

  1. Shard:分片服務(wù)器,用于存儲(chǔ)實(shí)際的數(shù)據(jù)塊
  2. configserver:配置服務(wù)器,存儲(chǔ)整個(gè)分片群集的配置信息
  3. routers:路由服務(wù)器

分片群集管理的實(shí)驗(yàn)

CentOS7上的mongodb分片群集

實(shí)驗(yàn)配置圖如上

下面開(kāi)始實(shí)驗(yàn),這里我在一臺(tái)機(jī)器上開(kāi)啟多個(gè)實(shí)例來(lái)代替多臺(tái)服務(wù)器

安裝mongodb3.2版本(手工編譯安裝)

  • 安裝軟件環(huán)境包

yum -y install openssl-devel

  • 解壓縮mongodb軟件包

tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt

  • 移動(dòng)軟件包至系統(tǒng)識(shí)別的目錄下

mv mongodb-linux-x86_64-3.2.1/ /usr/local/mongodb

  • 創(chuàng)建mongodb的數(shù)據(jù)存儲(chǔ)(/data/mongodb1、2、3、4、)和日志存儲(chǔ)目錄(/data/logs)

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

CentOS7上的mongodb分片群集

  • 設(shè)置ulimit -n和ulimit -u 的值

當(dāng)mongodb處于頻繁訪問(wèn)的狀態(tài),如果shell啟動(dòng)進(jìn)程所占用的資源設(shè)置過(guò)低,將會(huì)產(chǎn)生錯(cuò)誤導(dǎo)致無(wú)法連接mongodb實(shí)例,所以這里需要設(shè)置ulimit -n和ulimit -u 的值大于20000
ulimit -n 25000
ulimit -u 25000

CentOS7上的mongodb分片群集

  • 創(chuàng)建配置服務(wù)器的配置文件

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ù)器的模式
  • 設(shè)置內(nèi)核參數(shù)
    當(dāng)某節(jié)點(diǎn)內(nèi)存不足時(shí),系統(tǒng)會(huì)從其他節(jié)點(diǎn)分配內(nèi)存

sysctl -w vm.zone_reclaim_mode=0 #永久設(shè)置
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

  • 創(chuàng)建軟鏈接,方便管理

ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod

  • 開(kāi)啟第一個(gè)實(shí)例(配置服務(wù)器)

CentOS7上的mongodb分片群集

  • 配置分片服務(wù)器的實(shí)例
    復(fù)制生成配置文件

    cp -p mongodb1.conf mongodb2.conf #復(fù)制配置服務(wù)器的配置文件生成實(shí)例2的配置文件
    cp -p mongodb1.conf mongodb3.conf #復(fù)制配置服務(wù)器的配置文件生成實(shí)例2的配置文件

  • 修改實(shí)例2、3的配置文件

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
  • 開(kāi)啟兩個(gè)分片服務(wù)器的實(shí)例

mongod -f mongodb2.conf
mongod -f mongodb3.conf

CentOS7上的mongodb分片群集

  • 啟動(dòng)路由服務(wù)器

./mongos --port 27017 --fork --logpath=/usr/local/mongodb/bin/route.log --configdb 192.168.234.177:37017 --chunkSize 1

CentOS7上的mongodb分片群集

這里關(guān)于mongos命令不知道該怎么使用,可以查看幫助信息

CentOS7上的mongodb分片群集

  • 啟用分片服務(wù)器

mongo

CentOS7上的mongodb分片群集

  • 添加分片服務(wù)器

sh.addShard("192.168.234.177:47017")
sh.addShard("192.168.234.177:47018")

添加分片服務(wù)器之后再次查看

CentOS7上的mongodb分片群集

  • 測(cè)試分片功能

    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

CentOS7上的mongodb分片群集

  • 開(kāi)啟分片功能

sh.enableSharding("kgc")

CentOS7上的mongodb分片群集

  • 對(duì)數(shù)據(jù)庫(kù)中的集合開(kāi)啟分片

db.users.createIndex({"id":1}) #對(duì)users表創(chuàng)建索引
sh.shardCollection("kgc.users",{"id":1}) #表分片
sh.status() #此時(shí)再次查看,就可以已經(jīng)進(jìn)行分片處理了

CentOS7上的mongodb分片群集

CentOS7上的mongodb分片群集

到這里mongodb分片群集管理的介紹就全部完成了,如果覺(jué)得有幫助記得點(diǎn)贊、打賞下小弟哦?。?!

名稱(chēng)欄目:CentOS7上的mongodb分片群集
新聞來(lái)源:http://muchs.cn/article32/pdjhsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、App設(shè)計(jì)、網(wǎng)站內(nèi)鏈、微信公眾號(hào)、全網(wǎng)營(yíng)銷(xiāo)推廣、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)