国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MongoDB > 正文

詳解MongoDB4.0構(gòu)建分布式分片群集

2020-10-29 18:43:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

MongoDB分片簡(jiǎn)述

高數(shù)據(jù)量和吞吐量的數(shù)據(jù)庫(kù)應(yīng)用會(huì)對(duì)單機(jī)的性能造成較大壓力,大的查詢量會(huì)將單機(jī)的 CPU 耗盡,大的數(shù)據(jù)量對(duì)單機(jī)的存儲(chǔ)壓力較大,最終會(huì)耗盡系統(tǒng)的內(nèi)存而將壓力轉(zhuǎn)移到磁盤 IO 上。

MongoDB 分片是使用多個(gè)服務(wù)器存儲(chǔ)數(shù)據(jù)的方法,以支持巨大的數(shù)據(jù)存儲(chǔ)和對(duì)數(shù)據(jù)進(jìn)行操作。分片技術(shù)可以滿足 MongoDB 數(shù)據(jù)量大量增長(zhǎng)的需求,當(dāng)一臺(tái) MongoDB 服務(wù)器不足以存儲(chǔ)海量數(shù)據(jù)或不足以提供可接受的讀寫吞吐量時(shí),我們就可以通過在多臺(tái)服務(wù)器上分割數(shù)據(jù),使得數(shù)據(jù)庫(kù)系統(tǒng)能存儲(chǔ)和處理更多的數(shù)據(jù)。

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

分片為應(yīng)對(duì)高吞吐量與大數(shù)據(jù)量提供了方法:

  1. 使用分片減少了每個(gè)分片需要處理的請(qǐng)求數(shù),因此,通過水平擴(kuò)展,群集可以提高自己的存儲(chǔ)容量。比如,當(dāng)插入一條數(shù)據(jù)時(shí),應(yīng)用只需要訪問存儲(chǔ)這條數(shù)據(jù)的分片。
  2. 使用分片減少了每個(gè)分片村存儲(chǔ)的數(shù)據(jù)。

分片的優(yōu)勢(shì)在于提供類似線性增長(zhǎng)的架構(gòu),提高數(shù)據(jù)可用性,提高大型數(shù)據(jù)庫(kù)查詢服務(wù)器的性能。當(dāng)MongoDB單點(diǎn)數(shù)據(jù)庫(kù)服務(wù)器存儲(chǔ)成為瓶頸、單點(diǎn)數(shù)據(jù)庫(kù)服務(wù)器的性能成為瓶頸或需要部署大型應(yīng)用以充分利用內(nèi)存時(shí),可以使用分片技術(shù)。

MongoDB分片群集的組成

MongoDB分片群集主要有如下三個(gè)組件:

  • Shard:分片服務(wù)器,用于存儲(chǔ)實(shí)際的數(shù)據(jù)塊,實(shí)際生產(chǎn)環(huán)境中一個(gè)shard server 角色可以由幾臺(tái)服務(wù)器組成一個(gè)Peplica Set 承擔(dān),防止主機(jī)單點(diǎn)故障。
  • Config Server:配置服務(wù)器,存儲(chǔ)了整個(gè)分片群集的配置信息,其中包括chunk信息。
  • Routers:前端路由,客戶端由此接入,且讓整個(gè)群集看上去像單一數(shù)據(jù)庫(kù),前端應(yīng)用可以透明使用。

系統(tǒng)環(huán)境

系統(tǒng):CentOS 7.4 x86_64

軟件版本:4.0

關(guān)閉防火墻及selinux

IP地址 路由服務(wù)器(Routers) 配置服務(wù)器(Config Server) Shard1 Shard2 Shard3
192.168.125.119 27017 27018 27001 27002 27003
192.168.125.120 27017 27018 27001 27002 27003
192.168.125.121 27017 27018 27001 27002 27003

部署分片群集

三臺(tái)物理服務(wù)器安裝及配置

1、下載解壓MongoDB

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgztar zxvf mongodb-linux-x86_64-4.0.0.tgz -C /optmv /opt/mongodb-linux-x86_64-4.0.0/ /usr/local/mongodb

2、創(chuàng)建路由、配置、分片服務(wù)器的數(shù)據(jù)存放目錄及日志管理

路由服務(wù)器不存儲(chǔ)數(shù)據(jù),因此不需要?jiǎng)?chuàng)建數(shù)據(jù)存儲(chǔ)目錄,日志文件創(chuàng)建完成還需給予權(quán)限。

mkdir -p /data/mongodb/configmkdir -p /data/mongodb/shard{1,2,3}mkdir -p /data/mongodb/logstouch /data/mongodb/logs/shard{1,2,3}.logtouch /data/mongodb/logs/mongos.logtouch /data/mongodb/logs/config.logchmod 777 /data/mongodb/logs/*.log

3、創(chuàng)建管理用戶,修改目錄權(quán)限

useradd -M -s /sbin/nologin mongochown -R mongo:mongo /usr/local/mongodbchown -R mongo:mongo /data/mongodb

4、添加環(huán)境變量,便于使用

echo 'export MONGODB_HOME=/usr/local/mongodb' >> /etc/profileecho 'export PATH=$PATH:$MONGODB_HOME/bin' >> /etc/profilesource /etc/profile

5、系統(tǒng)參數(shù)優(yōu)化

ulimit -n 25000  //可以打開的最大文件數(shù)量ulimit -u 25000  //用戶最大可用的進(jìn)程數(shù)sysctl -w vm.zone_reclaim_mode=0 //內(nèi)存不足時(shí),從其他節(jié)點(diǎn)分配內(nèi)存# 從CentOS7開始,MongoDB會(huì)建議關(guān)閉系統(tǒng)的THP特性,否則可能會(huì)導(dǎo)致性能下降echo never > /sys/kernel/mm/transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defrag //*注意*這些優(yōu)化都是臨時(shí)的,重啟失效

部署配置服務(wù)器(三臺(tái)物理服務(wù)器配置步驟相同)

1、寫入配置文件,我們可以用scp命令把配置文件發(fā)到其他兩臺(tái)物理服務(wù)器

# vim config.confdbpath=/data/mongodb/config //數(shù)據(jù)文件存放位置logpath=/data/logs/config.log  //日志文件port=27018  //端口號(hào)logappend=truefork=truemaxConns=5000 storageEngine=mmapv1replSet=configs //復(fù)制集名稱configsvr=true  //設(shè)置參數(shù)為true# mongod -f config.conf //啟動(dòng)config實(shí)例scp /usr/local/mongodb/bin/config.conf root@192.168.125.120:/usr/local/mongodb/binscp /usr/local/mongodb/bin/config.conf root@192.168.125.121:/usr/local/mongodb/bin

2、配置復(fù)制集(任意一臺(tái)物理機(jī)上操作即可)

mongo --port 27018config={_id:"configs",members:[{_id:0,host:"192.168.125.119:27018"},{_id:1,host:"192.168.125.120:27018"},{_id:2,host:"192.168.125.121:27018"}]}  //創(chuàng)建復(fù)制集rs.initiate(config)        //初始化復(fù)制集

部署分片服務(wù)器

編輯shard{1,2,3}.conf配置文件,端口分別為27001,27002,27003,設(shè)置shardsvr=true,啟動(dòng)分片服務(wù)器

# vim shard1.confdbpath=/data/mongodb/shard1logpath=/data/logs/shard1.logport=27001logappend=truefork=truemaxConns=5000 storageEngine=mmapv1shardsvr=true# mongod -f shard1.conf# 與另外兩臺(tái)配置實(shí)例配置文件相同,僅端口、數(shù)據(jù)文件存放及日志文件要改,只需配置完成后啟動(dòng)即可

將shard1配置為復(fù)制集(這里需要注意的是,預(yù)先被設(shè)為仲裁節(jié)點(diǎn)的服務(wù)器上創(chuàng)建復(fù)制集會(huì)報(bào)錯(cuò)。)

mongo --port 27001use adminconfig={_id:"shard1",members:[{_id:0,host:"192.168.125.119:27001"},{_id:1,host:"192.168.125.120:27001"},{_id:2,host:"192.168.125.121:27001"}]}  //創(chuàng)建復(fù)制集rs.initiate(config)        //初始化復(fù)制集

其余兩臺(tái)分片服務(wù)器shard2、shard3設(shè)置相同,注意端口及仲裁節(jié)點(diǎn)的問題即可

部署路由服務(wù)器

創(chuàng)建配置文件,將配置文件發(fā)送到其他物理服務(wù)器。注意,路由服務(wù)器不需要存儲(chǔ)數(shù)據(jù)目錄

# vim mongos.conflogpath=/data/mongodb/logs/mongos.loglogappend = trueport = 27017fork = trueconfigdb = configs/192.168.125.119:27018,192.168.125.120:27018,192.168.125.121:27018maxConns=20000

啟動(dòng)mongos實(shí)例

mongs -f /usr/local/mongodb/bin/mongos.conf# 注意,這邊啟動(dòng)mongos實(shí)例用的是mongos命令

啟動(dòng)分片功能

mongo //默認(rèn)進(jìn)入27017端口mongos> use adminmongos> sh.addShard("shard1/192.168.125.119:27001,192.168.125.120:27001,172.16.10.29:27001")mongos> sh.addShard("shard2/192.168.125.119:27002,192.168.125.120:27002,172.16.10.29:27002")mongos> sh.status()      //查看群集狀態(tài)# 此處為添加兩臺(tái)分片服務(wù)器,后續(xù)添加的也會(huì)均勻分配分片數(shù)據(jù)

實(shí)現(xiàn)分片功能

設(shè)置分片chunk大小

mongos> use configmongos> db.settings.save({"_id":"chunksize","value":1})# 設(shè)置塊大小為1M是方便實(shí)驗(yàn),不然需要插入海量數(shù)據(jù)

模擬寫入數(shù)據(jù)

mongos> use schoolmongos> show collectionsmongos> for(i=1;i<=50000;i++){db.user.insert({"id":i,"name":"jack"+i})}# 在school庫(kù)的user表中循環(huán)寫入五萬(wàn)條數(shù)據(jù)

啟動(dòng)數(shù)據(jù)庫(kù)分片

mongos>sh.enableSharding("school")# 我們可以自定義需要分片的庫(kù)或表

為school庫(kù)中的user集合創(chuàng)建索引,然后對(duì)表進(jìn)行分片

mongos> db.user.createIndex({"id":1})# 以"id"作為索引mongos> sh.shardCollection("school.user",{"id":1})# 根據(jù)"id"對(duì)user表進(jìn)行分片mongos> sh.status()# 查看分片情況mongos> sh.help()# 查看分片相關(guān)的命令

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武陟县| 汨罗市| 应用必备| 星子县| 清新县| 静海县| 兴和县| 乌拉特后旗| 青海省| 烟台市| 临邑县| 通山县| 岳西县| 兴宁市| 萝北县| 宕昌县| 商南县| 长武县| 台中县| 临高县| 许昌市| 平度市| 保定市| 青阳县| 阜新| 襄樊市| 开阳县| 固镇县| 亚东县| 南岸区| 炉霍县| 田林县| 库尔勒市| 文水县| 航空| 天门市| 来凤县| 遂溪县| 吉首市| 平武县| 乌苏市|