<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] > [超簡單mongodb 4.2分片集群搭建指南](https://blog.csdn.net/newCheng/article/details/104972150?tdsourcetag=s_pctim_aiomsg) ## 概述 ![UTOOLS1587438926980.png](http://yanxuan.nosdn.127.net/1cbcbbdc45fa3e1477dd747f5220bf26.png) ## 步驟 1. 創建配置服務器 2. 創建多個切片服務器,每個切片本身又可搭建服務服務器 3. 搭建mongos 路由服務器,用于關聯配置服務器與切片服務器 ``` //連接 mongos //添加兩個分片 sh.addShard("rep_shard1/10.0.4.6:27018,10.0.4.7:27018,10.0.4.8:27018") sh.addShard("rep_shard2/10.0.4.6:27019,10.0.4.7:27019,10.0.4.8:27019") //驗證集群狀態 sh.status() /* shards: { "_id" : "rep_shard1", "host" : "rep_shard1/10.0.4.6:27018,10.0.4.7:27018,10.0.4.8:27018", "state" : 1 } { "_id" : "rep_shard2", "host" : "rep_shard2/10.0.4.6:27019,10.0.4.7:27019,10.0.4.8:27019", "state" : 1 } */ ``` ## 概念 ### Shard Key(分片鍵) * **基于 Hashed 的分片**:MongoDB 會計算分片鍵字段值的哈希值,用以確定該文檔存于哪個 chunk(參見下文 "[Chunk(塊)](https://www.ibm.com/developerworks/cn/opensource/os-mongodb-sharded-cluster/index.html#1Chunk%E5%9D%97outline)"的介紹),插入效率高,如果漁獲取范圍數據,則效率較低。 * **基于 Ranged 的分片**:MongoDB 會將相似的值放到一個 chunk 中,查詢時帶上分片鍵的范圍條件,則效率非常高 ### Chunk(塊) **chunk**(塊)是均衡器遷移數據的最小單元,默認大小為 64MB,取值范圍為 1-1024MB。一個塊只存在于一個分片,每個塊由片鍵特定范圍內的文檔組成,塊的范圍為左閉又開即`[start,end)`。一個文檔屬于且只屬于一個塊,當一個塊增加到特定大小的時候,會通過拆分點(split point)被拆分成 2 個較小的塊。在有些情況下,chunk 會持續增長,超過 ChunkSize,官方稱為[jumbo chunk](https://www.ibm.com/developerworks/cn/opensource/os-mongodb-sharded-cluster/Maximum-Number-of-Documents-Per-Chunk-to-Migrate),該塊無法被 MongoDB 拆分,也不能被均衡器(參見下文 "[blancer(均衡器)](https://www.ibm.com/developerworks/cn/opensource/os-mongodb-sharded-cluster/index.html#1Balancer%E5%9D%87%E8%A1%A1%E5%99%A8outline)" 的介紹)遷移,故久而久之會導致 chunk 在分片服務器上分布不均勻,從而成為性能瓶頸,表現之一為 insert 數據變慢。 #### Chunk 的拆分 mongos 會記錄每個塊中有多少數據,一旦達到了閾值就會檢查是否需要對其進行拆分,如果確實需要拆分則可以在配置服務器上更新這個塊的相關元信息。 chunk 的拆分過程如下: 1. mongos 接收到客戶端發起的寫請求后會檢查當前塊的拆分閾值點。 2. 如果需要拆分,mongos 則會像分片服務器發起一個拆分請求。 3. 分片服務器會做拆分工作,然后將信息返回 mongos。 注意,相同的片鍵只能保存在相同的塊中,如果一個相同的片鍵過多,則會導致一個塊過大,成為 jumbo chunk,所以具有不同值的片鍵很重要。 遷移過程可確保一致性,并在平衡期間最大化塊的可用性。 #### 修改 chunk 大小的注意事項 修改 chunk 大小需要注意以下幾點: 1. chunk 的自動拆分操作僅發生在插入或更新的時候。 2. 如果減少 chunk size,將會耗費一些時間將原有的 chunk 拆分到新 chunk,并且此操作不可逆。 3. 如果新增 chunk size,已存在的 chunk 只會等到新的插入或更新操作將其擴充至新的大小。 4. chunk size 的可調整范圍為 1-1024MB ### Balancer(均衡器) MongoDB 的 balancer(均衡器)是監視每個分片的 chunk 數的一個后臺進程。當分片上的 chunk 數達到特定遷移閾值時,均衡器會嘗試在分片之間自動遷移塊,使得每個分片的塊的數量達到平衡。分片群集的平衡過程對用戶和應用程序層完全透明,但在執行過程時可能會對性能產生一些影響。 從 MongoDB 3.4 開始,balancer 在配置服務器副本集(CSRS)的主服務器上運行, 在 3.4 版本中,當平衡器進程處于活動狀態時,主配置服務器的的 locks 集合通過修改 _id: "balancer" 文檔會獲取一個 balancer lock,該 balancer lock 不會被釋放,是為了保證只有一個 mongos 實例能夠在分片集群中執行管理任務。從 3.6 版本開始,均衡器不再需要 balancer lock。 均衡器可以動態的開啟和關閉,也可以針對指定的集合開啟和關閉,還可以手動控制均衡器遷移 chunk 的時間,避免在業務高峰期的時候遷移 chunk 從而影響集群性能。以下命令將均衡器的遷移 chunk 時間控制在凌晨 02 點至凌晨 06 點:
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看