最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB分片在部署與維護(hù)管理中常見的事項(xiàng)總結(jié)大全

 更新時(shí)間:2018年09月10日 16:37:40   作者:東山絮柳仔  
分片(sharding)是指將數(shù)據(jù)拆分,將其分散存放在不同的機(jī)器上的過程。下面這篇文章主要給大家總結(jié)介紹了關(guān)于MongoDB分片在部署與維護(hù)管理中常見事項(xiàng)的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

分片(sharding)是MongoDB將大型集合分割到不同服務(wù)器(或者說集群)上所采用的方法,主要為應(yīng)對高吞吐量與大數(shù)據(jù)量的應(yīng)用場景提供了方法。

將數(shù)據(jù)分散到不同的機(jī)器上,不需要功能強(qiáng)大的服務(wù)器就可以存儲更多的數(shù)據(jù)和處理更大的負(fù)載。基本思想就是將集合切成小塊,這些塊分散到若干片里,每個(gè)片只負(fù)責(zé)總數(shù)據(jù)的一部分,最后通過一個(gè)均衡器來對各個(gè)分片進(jìn)行均衡(數(shù)據(jù)遷移)。通過一個(gè)名為mongos的路由進(jìn)程進(jìn)行操作,mongos知道數(shù)據(jù)和片的對應(yīng)關(guān)系(通過配置服務(wù)器)。大部分使用場景都是解決磁盤空間的問題,對于寫入有可能會變差(+++里面的說明+++),查詢則盡量避免跨分片查詢。

使用分片的時(shí)機(jī):

1,機(jī)器的磁盤不夠用了。使用分片解決磁盤空間的問題。

2,單個(gè)mongod已經(jīng)不能滿足寫數(shù)據(jù)的性能要求。通過分片讓寫壓力分散到各個(gè)分片上面,使用分片服務(wù)器自身的資源。

3,想把大量數(shù)據(jù)放到內(nèi)存里提高性能。和上面一樣,通過分片使用分片服務(wù)器自身的資源。

和既有的分庫分表、分區(qū)方案相比,MongoDB的最大區(qū)別在于它幾乎能自動完成所有事情,只要告訴MongoDB要分配數(shù)據(jù),它就能自動維護(hù)數(shù)據(jù)在不同服務(wù)器之間的均衡。

一. 分片的集群組件

1.Mongos 【路由】

作為請求的訪問入口,所有的請求都由mongos來路由、分發(fā)、合并,這些動作對客戶端driver透明,用戶連接mongos就像連接mongod一樣使用。Mongos會根據(jù)請求類型及shard key將請求路由到對應(yīng)的Shard。

2.Config Server 【配置服務(wù)器】

存儲Sharding Cluster 的所有元數(shù)據(jù),所有的元數(shù)據(jù)都存儲在config數(shù)據(jù)庫;

*保存每個(gè)分片上的chunk的信息 * 保存chunk上的片鍵范圍。

3. Shard 【分片】

存儲應(yīng)用數(shù)據(jù)記錄。

二. 分片優(yōu)勢

1.對集群進(jìn)行抽象,讓集群“不可見”,分片對應(yīng)用系統(tǒng)是透明的。

Mongos是專有路由進(jìn)程,其會將客戶端發(fā)來的請求準(zhǔn)確無誤的路由到集群中的一個(gè)或者一組服務(wù)器上,同時(shí)會把接收到的響應(yīng)拼裝起來發(fā)回到客戶端。

2.保證集群總是可讀寫

將MongoDB的分片和復(fù)制集功能結(jié)合使用,在確保數(shù)據(jù)分片到多臺服務(wù)器的同時(shí),也確保了每分?jǐn)?shù)據(jù)都有相應(yīng)的備份,可以確保有服務(wù)器壞掉時(shí),其他的從庫可以立即接替壞掉的部分繼續(xù)工作。提高了集群的可用性和可靠性。

3.使集群易于擴(kuò)展

當(dāng)系統(tǒng)需要更多的空間和資源的時(shí)候,MongoDB使我們可以按需方便的擴(kuò)充系統(tǒng)容量。

三. 分片部署注意事項(xiàng)(常見錯誤)

1.配置可復(fù)制集作為分片節(jié)點(diǎn)與配置單獨(dú)使用的可復(fù)制集基本一樣。但啟動參數(shù)中需指定—shardsvr參數(shù)。

否則,在啟動數(shù)據(jù)庫分片時(shí)報(bào)錯: {"code" : 193,"ok" : 0, "errmsg" : "Cannot accept sharding commands if not started with --shardsvr“} 。

2.創(chuàng)建配置服務(wù)器集群時(shí),不能設(shè)置見證節(jié)點(diǎn)。

否則,報(bào)錯 "errmsg" :  "Arbiters are not allowed in replica set configurations being used for config servers" 。

3.配置Mongos 實(shí)例時(shí),請不要配置dbpath參數(shù)。

否則,設(shè)置dbpath參數(shù),服務(wù)無法正常啟動,報(bào)錯:Error parsing INI config file: unrecognised option 'dbpath'。

4.配置Mongos 實(shí)例時(shí),需設(shè)置Keyfile。

否則,不設(shè)置Keyfile,Service無法正常啟動, 報(bào)錯:2018-05-10T15:30:26.791+0800 W SHARDING [mongosMain] Error initializing sharding state, sleeping for 2 seconds and trying again :: caused by :: Unauthorized: Error loading clusterID :: caused by :: not authorized on config to execute command { find: “version”, readConcern: { level: “majority”, afterOpTime: { ts: Timestamp 1525937413000|2, t: 1 } }, maxTimeMS: 30000

5.分片集合設(shè)置。

分片不會默認(rèn)生成,需要先在數(shù)據(jù)庫中啟動分片(sh.enableSharding(“DBName”) ),然后再設(shè)置集合分片(sh.shardCollection(“Collection”{片鍵})

四. 分片管理的注意事項(xiàng)(常用命令)

1.檢查shards 配置及狀態(tài)

db.runCommand({listshards:1})

2. 檢查數(shù)據(jù)庫主片的地址以及是否分區(qū)

db.getSiblingDB("config").databases.find()

3. 檢查數(shù)據(jù)塊的數(shù)量

db.chunks.count() --需切換到配置數(shù)據(jù)庫(config

4. 查看分片的詳細(xì)信息,包括數(shù)據(jù)庫信息和范圍信息

sh.status()

5. 索引是優(yōu)化查詢性能的重要手段。當(dāng)在分片集合上聲明索引時(shí),每個(gè)分片都會為自己的集合部分定義單獨(dú)的索引。分片集合只允許在_id字段和分片鍵上建立唯一索引。

6. 分割和遷移 MongoDB底層依賴2個(gè)機(jī)制來保持集群的平衡:分割和遷移。

分割是把一個(gè)大的數(shù)據(jù)塊分割為2個(gè)更小的數(shù)據(jù)塊的過程。遷移就是在分片之間移動數(shù)據(jù)塊的過程。當(dāng)某些分片服務(wù)器包含的數(shù)據(jù)塊數(shù)據(jù)量大大超過其他分片服務(wù)器時(shí)就會觸發(fā)遷移的過程,這個(gè)觸發(fā)器叫做遷移回合(migration round)

6.1 遷移觸發(fā)條件

6.2 查看Balancer 進(jìn)程是否開啟 sh.getBalancerState()

6.3 停Balancer 進(jìn)程 sh.stopBalancer()開啟Balancer 進(jìn)程

6.4. 默認(rèn)情況下 Balancer 進(jìn)程一直在運(yùn)行,為了降低Balancer進(jìn)程對系統(tǒng)的運(yùn)行,可以為Balancer進(jìn)程設(shè)置運(yùn)行時(shí)間窗口,讓Balancer進(jìn)程在指定的時(shí)間窗口操作。

6.4.1 例如設(shè)置Balancer進(jìn)程在23:00到6:00時(shí)間窗口內(nèi)執(zhí)行。

db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "23:00", stop : "6:00" } } }, true ) ;

6.4.2 刪除Balancer進(jìn)程運(yùn)行時(shí)間窗口

6.5. 查看塊的范圍

6.5.1 如果集合數(shù)據(jù)量較小,可以直接通過sh.status()查看

6.5.2 如果集合數(shù)據(jù)量較大,sh.status()無法反應(yīng)此集合的分塊信息。此時(shí),可通過執(zhí)行以下命令查看printShardingStatus(db.getSisterDB("config"),1);

6.5.3 也可將命令切換到config數(shù)據(jù)庫下,執(zhí)行db.chunks.find()查看??梢暂斎胫贫▍?shù),例如,查看分片repsms2,集合cloud-docs.PushMessageRecord的塊情況(cloud-docs為數(shù)據(jù)庫名稱)

db.chunks.find({"shard" : "repsms2","ns" : "cloud-docs.PushMessageRecord"}).pretty()

五. 備注

分片集群管理的數(shù)據(jù)量比較大,并且分片的架構(gòu)相對比較復(fù)雜。所以,一定在業(yè)務(wù)需求需要上分片時(shí),再上分片,且不可準(zhǔn)求“炫”的技術(shù)而上分片。另外,上線后,相關(guān)的監(jiān)控一定要部署,逐漸完善。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 給MongoDB添加用戶權(quán)限方法分享

    給MongoDB添加用戶權(quán)限方法分享

    這篇文章主要介紹了給MongoDB添加用戶權(quán)限方法分享,十分的細(xì)致全面,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • MongoDB快速入門筆記(三)之MongoDB插入文檔操作

    MongoDB快速入門筆記(三)之MongoDB插入文檔操作

    這篇文章主要介紹了MongoDB快速入門筆記(三)之MongoDB插入文檔操作 的相關(guān)資料,非常不錯具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Windows系統(tǒng)下安裝Mongodb 3.2.x的步驟詳解

    Windows系統(tǒng)下安裝Mongodb 3.2.x的步驟詳解

    mongodb3.x版本有好多新功能,關(guān)于這方面參考官網(wǎng)即可,下面這篇文章主要給大家介紹了在Windows系統(tǒng)下安裝Mongodb 3.2.x的詳細(xì)步驟,文中介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面來一起看看吧。
    2017-03-03
  • MongoDB部署超詳細(xì)步驟記錄

    MongoDB部署超詳細(xì)步驟記錄

    這篇文章主要介紹了MongoDB部署超詳細(xì)步驟的相關(guān)資料,包括了MongoDB的安裝配置、MongoDB?Shell的安裝、常用命令操作及備份與恢復(fù)方法,需要的朋友可以參考下
    2025-03-03
  • MongoDB聚合分組取第一條記錄的案例與實(shí)現(xiàn)方法

    MongoDB聚合分組取第一條記錄的案例與實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于MongoDB聚合分組取第一條記錄的案例與實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • mongodb命令行連接及基礎(chǔ)命令總結(jié)大全

    mongodb命令行連接及基礎(chǔ)命令總結(jié)大全

    大家可能平時(shí)在開發(fā)過程中都使用客戶端工具來連接和查詢mongodb,但是一般生產(chǎn)當(dāng)中的數(shù)據(jù)庫是不允許本地客戶端連接的,下面這篇文章主要給大家介紹了關(guān)于mongodb命令行連接及基礎(chǔ)命令總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • MongoDB批量將時(shí)間戳轉(zhuǎn)為通用日期格式示例代碼

    MongoDB批量將時(shí)間戳轉(zhuǎn)為通用日期格式示例代碼

    這篇文章主要給大家介紹了關(guān)于MongoDB批量將時(shí)間戳轉(zhuǎn)為通用日期格式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • MongoDB 監(jiān)控工具mongostat和mongotop的使用

    MongoDB 監(jiān)控工具mongostat和mongotop的使用

    這篇文章主要介紹了MongoDB 監(jiān)控工具mongostat和mongotop的使用方法,幫助大家更好的理解和學(xué)習(xí)使用MongoDB,感興趣的朋友可以了解下
    2021-03-03
  • MongoDB為用戶設(shè)置訪問權(quán)限

    MongoDB為用戶設(shè)置訪問權(quán)限

    MongoDB已經(jīng)使用很長一段時(shí)間了,基于MongoDB的數(shù)據(jù)存儲也一直沒有使用到權(quán)限訪問 MongoDB默認(rèn)設(shè)置為無權(quán)限訪問限制
    2012-11-11
  • 詳解MongoDB管理命令

    詳解MongoDB管理命令

    MongoDB是一個(gè)NoSQL數(shù)據(jù)庫系統(tǒng):一個(gè)數(shù)據(jù)庫可以包含多個(gè)集合(Collection),每個(gè)集合對應(yīng)于關(guān)系數(shù)據(jù)庫中的表;而每個(gè)集合中可以存儲一組由列標(biāo)識的記錄,列是可以自由定義的,非常靈活,由一組列標(biāo)識的實(shí)體的集合對應(yīng)于關(guān)系數(shù)據(jù)庫表中的行
    2016-01-01

最新評論

遂宁市| 阳泉市| 上虞市| 周口市| 衡山县| 永登县| 宜兴市| 汝南县| 思茅市| 贵州省| 咸阳市| 那坡县| 新郑市| 象山县| 资中县| 江山市| 特克斯县| 白山市| 博白县| 尼玛县| 霍邱县| 南和县| 北安市| 勐海县| 万年县| 龙陵县| 都江堰市| 乐山市| 察哈| 新泰市| 黑水县| 天台县| 平乐县| 昆明市| 家居| 滁州市| 香格里拉县| 永川市| 开平市| 平乡县| 罗城|