欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年08月10日 09:55:31   作者:你講多次  
這篇文章主要介紹了詳解MongoDB4.0構(gòu)建分布式分片群集,詳細(xì)的介紹了什么是MongoDB分片和具體使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

MongoDB分片簡述

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

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

MongoDB分片優(yōu)勢

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

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

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

MongoDB分片群集的組成

MongoDB分片群集主要有如下三個組件:

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

部署分片群集

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

1、下載解壓MongoDB

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

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

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

mkdir -p /data/mongodb/config
mkdir -p /data/mongodb/shard{1,2,3}
mkdir -p /data/mongodb/logs
touch /data/mongodb/logs/shard{1,2,3}.log
touch /data/mongodb/logs/mongos.log
touch /data/mongodb/logs/config.log
chmod 777 /data/mongodb/logs/*.log

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

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

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

echo 'export MONGODB_HOME=/usr/local/mongodb' >> /etc/profile
echo 'export PATH=$PATH:$MONGODB_HOME/bin' >> /etc/profile
source /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)存不足時,從其他節(jié)點分配內(nèi)存
# 從CentOS7開始,MongoDB會建議關(guān)閉系統(tǒng)的THP特性,否則可能會導(dǎo)致性能下降
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag //*注意*這些優(yōu)化都是臨時的,重啟失效

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

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

# vim config.conf
dbpath=/data/mongodb/config //數(shù)據(jù)文件存放位置
logpath=/data/logs/config.log  //日志文件
port=27018  //端口號
logappend=true
fork=true
maxConns=5000 
storageEngine=mmapv1
replSet=configs //復(fù)制集名稱
configsvr=true  //設(shè)置參數(shù)為true
# mongod -f config.conf //啟動config實例
scp /usr/local/mongodb/bin/config.conf root@192.168.125.120:/usr/local/mongodb/bin
scp /usr/local/mongodb/bin/config.conf root@192.168.125.121:/usr/local/mongodb/bin

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

mongo --port 27018
config={_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,啟動分片服務(wù)器

# vim shard1.conf
dbpath=/data/mongodb/shard1
logpath=/data/logs/shard1.log
port=27001
logappend=true
fork=true
maxConns=5000 
storageEngine=mmapv1
shardsvr=true
# mongod -f shard1.conf
# 與另外兩臺配置實例配置文件相同,僅端口、數(shù)據(jù)文件存放及日志文件要改,只需配置完成后啟動即可

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

mongo --port 27001
use admin
config={_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ù)制集

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

部署路由服務(wù)器

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

# vim mongos.conf
logpath=/data/mongodb/logs/mongos.log
logappend = true
port = 27017
fork = true
configdb = configs/192.168.125.119:27018,192.168.125.120:27018,192.168.125.121:27018
maxConns=20000

啟動mongos實例

mongs -f /usr/local/mongodb/bin/mongos.conf
# 注意,這邊啟動mongos實例用的是mongos命令

啟動分片功能

mongo //默認(rèn)進(jìn)入27017端口
mongos> use admin
mongos> 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)
# 此處為添加兩臺分片服務(wù)器,后續(xù)添加的也會均勻分配分片數(shù)據(jù)

實現(xiàn)分片功能

設(shè)置分片chunk大小

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

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

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

啟動數(shù)據(jù)庫分片

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MongoDB系列教程(六):java操作mongodb實例

    MongoDB系列教程(六):java操作mongodb實例

    這篇文章主要介紹了MongoDB系列教程(六):java操作mongodb實例,本文講解了java中操作mongodb數(shù)據(jù)增加、刪除、修改、查詢數(shù)據(jù)等代碼實例,需要的朋友可以參考下
    2015-05-05
  • Mongodb解決不能連接到服務(wù)器的錯誤問題

    Mongodb解決不能連接到服務(wù)器的錯誤問題

    這篇文章主要介紹了Mongodb解決不能連接到服務(wù)器的錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Centos系統(tǒng)搭建MongoDB數(shù)據(jù)庫

    Centos系統(tǒng)搭建MongoDB數(shù)據(jù)庫

    這篇文章介紹了Centos系統(tǒng)搭建MongoDB數(shù)據(jù)庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 如何對 MongoDB 進(jìn)行性能優(yōu)化(五個簡單步驟)

    如何對 MongoDB 進(jìn)行性能優(yōu)化(五個簡單步驟)

    MongoDB一直是最流行的NoSQL,而根據(jù)DB-Engines Ranking最新的排行,時下MongoDB已經(jīng)擊敗PostgreSQL躍居數(shù)據(jù)庫總排行的第四位,僅次于Oracle、MySQL和Microsoft SQL Server。本文給大家介紹MongoDB性能優(yōu)化的簡單總結(jié)。
    2015-10-10
  • MongoDB 查詢操作的實例詳解

    MongoDB 查詢操作的實例詳解

    這篇文章主要介紹了MongoDB 查詢操作的實例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 詳解MongoDB的角色管理

    詳解MongoDB的角色管理

    這篇文章主要介紹了詳解MongoDB的角色管理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • MongoDB使用指南--基本操作

    MongoDB使用指南--基本操作

    上篇文章,我們講訴了MongoDB數(shù)據(jù)庫的用戶操作,本文將介紹如何基本操作MongoDB數(shù)據(jù)庫,當(dāng)然是基本的,最基本的操作,需要的朋友可以參考下
    2014-08-08
  • Mongodb 啟動命令mongod參數(shù)說明(中文翻譯)

    Mongodb 啟動命令mongod參數(shù)說明(中文翻譯)

    這篇文章主要介紹了Mongodb 啟動命令mongod參數(shù)說明(中文翻譯)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • MongoDB常用數(shù)據(jù)類型分享

    MongoDB常用數(shù)據(jù)類型分享

    這篇文章主要介紹了MongoDB常用數(shù)據(jù)類型,???JSON是一種簡單的數(shù)據(jù)表示方式,它易于理解、易于解析、易于記憶,?BSON是一種類JSON的二進(jìn)制形式的存儲格,更多類型需要的小伙伴可以參考下文詳細(xì)介紹
    2022-04-04
  • mongodb在windows下的安裝步驟分享

    mongodb在windows下的安裝步驟分享

    MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的
    2011-10-10

最新評論