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

mongodb?數(shù)據(jù)塊的遷移流程分析

 更新時間:2022年04月18日 11:07:42   作者:xinghebuluo  
這篇文章主要介紹了mongodb?數(shù)據(jù)塊的遷移流程介紹,包括數(shù)據(jù)塊遷移對集群性能的影響,建議設置平衡器的活躍時間窗口,設置為業(yè)務低估時進行,具體操作步驟文中有介紹,需要的朋友可以參考下

1. 基本概念

1.1 Chunk(數(shù)據(jù)塊)

表示特定服務器上面,連續(xù)范圍的分片鍵值所包含的一組數(shù)據(jù),是一個邏輯概念。

例如,某數(shù)據(jù)塊記錄如下:

{
    "_id" : "chunk-a",  // 數(shù)據(jù)塊Id
    "ns" : "user.address",  // 該數(shù)據(jù)塊對應的數(shù)據(jù)庫名和表名
    "min" : {               // 該數(shù)據(jù)塊對應的分片鍵值的起始值(包含),是“Shi Jiazhuang”
        "city" : "Shi Jiazhuang"
    },
    "max" : {               // 該數(shù)據(jù)塊對應的分片鍵值的結束值(不包含),是“Nanjjing”
        "city" : "Nan Jing"
    },
    "shard" : "repa"        // 該數(shù)據(jù)塊存儲在repa分片服務器               
}
// 即該數(shù)據(jù)塊記錄表示,數(shù)據(jù)庫user中的表address中的“city”字段中,其值從“Shi Jiazhuang”(包含)到“Nan Jing”(不包含)這段連續(xù)區(qū)間的數(shù)據(jù),都存儲在名為repa的分片服務器。

1.2 Chunk Size(數(shù)據(jù)塊大小)

數(shù)據(jù)塊所對應的數(shù)據(jù),如果超過64M(默認值),則會被系統(tǒng)自動切分為兩個數(shù)據(jù),即數(shù)據(jù)塊會從1塊切分為2塊,圖示如下:

1.3 Migration(數(shù)據(jù)塊遷移)

mongodb有一個后臺的平衡器進程,它會監(jiān)控各個分片服務器上面的數(shù)據(jù)塊的數(shù)量,如果發(fā)現(xiàn)不同的分片服務器上面數(shù)據(jù)塊的數(shù)量差異,超過閾值,則會啟動數(shù)據(jù)塊遷移任務,

直至不同的分片服務器之間的數(shù)據(jù)塊的數(shù)量差異落在閾值之內,圖示如下:

1.4 Migration Thresholds(遷移閾值)

數(shù)據(jù)塊的遷移閾值,是和該表的數(shù)據(jù)塊總數(shù)相關的,具體如下:

數(shù)據(jù)塊總數(shù)量閾值
小于202
20-794
大于等于808

2. 遷移流程

數(shù)據(jù)塊的遷移對于用戶和應用層來說是透明的,當然可能會有些性能的損失,整個遷移流程有7個步驟,圖示如下

各個步驟的內容如下:

1. 平衡器發(fā)送遷移命令給源節(jié)點。

2. 源節(jié)點啟動了一個內部的數(shù)據(jù)塊遷移命令給目標節(jié)點,同時在數(shù)據(jù)塊遷移期間,對于該數(shù)據(jù)塊的請求依然路由到源節(jié)點。

3. 目標節(jié)點首先創(chuàng)建該數(shù)據(jù)塊上缺失的索引(如果需要的話)。

4. 目標節(jié)點到源節(jié)點拉取數(shù)據(jù)。

5. 目標節(jié)點需要到源節(jié)點再請求在步驟4執(zhí)行期間的增量變更數(shù)據(jù)(新增、更新和刪掉),如果有則跳轉到步驟4,直到?jīng)]有增量數(shù)據(jù)。

6. 數(shù)據(jù)全部遷移成功后,源節(jié)點會向配置服務器(config server)發(fā)送請求,更新該數(shù)據(jù)塊的元數(shù)據(jù)中的"分片服務器(shard)"的值為目標節(jié)點。

7. 源節(jié)點刪除本地的該數(shù)據(jù)塊對應的數(shù)據(jù)。

3. 最佳實踐

以上分享了數(shù)據(jù)塊和數(shù)據(jù)塊遷移的一些基本概念和流程,下面是一些最佳實踐。

3.1 關于數(shù)據(jù)塊大小的選擇

數(shù)據(jù)塊的大小,默認是64M,通常情況下是不需要修改它的,但是有時候該值的大小根據(jù)不同的業(yè)務場景會帶來不同的影響,需要綜合多方面的因素來設置該值。

數(shù)據(jù)塊大小太?。和ǔG闆r下,較小的數(shù)據(jù)塊大小,會帶來更頻繁的數(shù)據(jù)塊遷移,數(shù)據(jù)在集群間的分布會更加均衡,但是如果分片鍵設置的不夠合理,則會產生很多無法切分(split)的大數(shù)據(jù)塊,太大的數(shù)據(jù)塊無法在分片之間遷移,從而導致數(shù)據(jù)分布的不均衡性,此時需要把數(shù)據(jù)塊大小調大。

數(shù)據(jù)塊大小太大:較大的數(shù)據(jù)塊,意味著更少的數(shù)據(jù)塊遷移,數(shù)據(jù)在集群間的分布容易出現(xiàn)不平衡,同時也容易產生讀寫熱點(可手動切分),此時需要把數(shù)據(jù)塊大小調小。

3.2 關于數(shù)據(jù)塊遷移對集群性能的影響

數(shù)據(jù)塊遷移除了占用目標節(jié)點和源節(jié)點的帶寬和磁盤讀寫資源外,在遷移流程中的步驟6會短暫阻塞對該數(shù)據(jù)塊的訪問,影響應用的訪問,因此建議設置平衡器的活躍時間窗口,設置為業(yè)務低估時進行,步驟如下:

1. 連接到mongos。

2. 切換到config數(shù)據(jù)庫

use config

3. 啟動平衡器

如果平衡器是關閉狀態(tài),則設置活躍時間窗口也是不會做數(shù)據(jù)遷移的,命令如下:

sh.startBalancer()

4. 修改活躍時間窗口

db.settings.updateOne(
   { _id: "balancer" },
   { $set: { activeWindow : { start : "01:00", stop : "06:00" } } },  // start和stop的格式為"HH:MM",其中HH的取值范圍是0到23,MM的取值范圍是00到59
   { upsert: true }
)

https://github.com/tomliugen

到此這篇關于mongodb 數(shù)據(jù)塊的遷移流程介紹的文章就介紹到這了,更多相關mongodb 數(shù)據(jù)遷移內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何利用MongoDB存儲Docker日志詳解

    如何利用MongoDB存儲Docker日志詳解

    這篇文章主要給大家介紹了關于如何利用MongoDB存儲Docker日志的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友沒呢下面隨著小編來一起學習學習吧
    2018-09-09
  • MongoDB日常使用的技巧與注意事項匯總

    MongoDB日常使用的技巧與注意事項匯總

    這篇文章主要給大家總結介紹了關于MongoDB日常使用的一些技巧與注意事項,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MongoDB具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • MongoDB配置用戶名和密碼的操作步驟

    MongoDB配置用戶名和密碼的操作步驟

    這篇文章主要給大家介紹了關于MongoDB配置用戶名和密碼的操作步驟,包括啟動MongoDB服務、創(chuàng)建管理員用戶、創(chuàng)建數(shù)據(jù)庫用戶、退出并重新連接以及配置MongoDB以允許身份驗證,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • MongoDB中UPDATE操作$pullAll的方法

    MongoDB中UPDATE操作$pullAll的方法

    與$pull有所不同,$pull操作通過指定一個查詢條件或單個值來刪除數(shù)組中的元素, 而$pullAll刪除所有在指定列表中的數(shù)組元素,本文介紹Mongodb UPDATE操作中的$pullAll, 用來從數(shù)組中刪除多個元素,感興趣的朋友一起看看吧
    2024-06-06
  • 淺析MongoDB 全文檢索

    淺析MongoDB 全文檢索

    這篇文章主要介紹了MongoDB 全文檢索的相關資料,文中講解非常細致,幫助大家更好的學習了解MongoDB,感興趣的朋友可以了解下
    2020-07-07
  • MongoDB如何查看版本信息詳解

    MongoDB如何查看版本信息詳解

    這篇文章主要給大家介紹了關于MongoDB如何查看版本信息的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • MongoDB中的bson介紹和使用實例

    MongoDB中的bson介紹和使用實例

    這篇文章主要介紹了MongoDB中的bson介紹和使用實例,本文講解了什么是bson、bson在MongoDB中的使用、幾個BSON的例子等內容,需要的朋友可以參考下
    2015-05-05
  • MongoDB數(shù)據(jù)庫安裝配置、基本操作實例詳解

    MongoDB數(shù)據(jù)庫安裝配置、基本操作實例詳解

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫安裝配置、基本操作,結合實例形式詳細分析了MongoDB數(shù)據(jù)庫安裝配置具體步驟、相關命令與基本操作實現(xiàn)技巧,需要的朋友可以參考下
    2020-01-01
  • 分享MongoDB修改oplog大小的4種方法

    分享MongoDB修改oplog大小的4種方法

    這篇文章主要介紹了分享MongoDB修改oplog大小的4種方法,文章基于MongoDB修改oplog大小展開其方法的介紹,需要的小伙伴可以參考一下
    2022-04-04
  • mongo中模糊查詢的綜合應用

    mongo中模糊查詢的綜合應用

    這篇文章主要給大家介紹了關于mongo中模糊查詢的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mongodb具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04

最新評論

赤壁市| 湟源县| 博乐市| 呼玛县| 开封市| 郓城县| 贵南县| 巴青县| 浪卡子县| 肃北| 拜城县| 靖州| 阿鲁科尔沁旗| 剑河县| 江陵县| 平遥县| 麻江县| 永泰县| 本溪| 怀化市| 新昌县| 石柱| 河北区| 隆安县| 盐山县| 汕尾市| 昔阳县| 临武县| 普陀区| 蒲城县| 九台市| 淅川县| 平阳县| 大足县| 苗栗市| 阜阳市| 万州区| 财经| 慈溪市| 合江县| 康乐县|