1. <i id="s6b2k"><small id="s6b2k"></small></i>
    <b id="s6b2k"><bdo id="s6b2k"></bdo></b>
  2. <wbr id="s6b2k"></wbr>

    MongoDB 主分片(primary shard)相關總結_MongoDB

    來源:腳本之家  責任編輯:小易  

    01 主分片是什么?

      分片集群中的每一個數據庫都有一個主分片,這個主分片上保存了當前數據庫中沒有被分片的集合的數據,主分片(primary shard)和主節點(primary)之間沒有任何關聯。

       主分片是由mongos選擇出來的,選擇的依據是每當創建新數據庫的時候,mongos會從集群中選擇包含數據最少的分片作為新數據庫的主分片。具體的選擇方式是:

    選擇listDatabase命令返回的totalSize字段作為選擇的準則。如下:

    mongos> db.adminCommand("listDatabases")
    {
      "databases" : [
        {
          xxxx
        },
        {
          xxxx
        },
        {
          xxxx
        }
      ],
      "totalSize" : 2842624,
      "totalSizeMb" : 2,
      "ok" : 1,
      "operationTime" : Timestamp(1610982469, 1),
      "$clusterTime" : {
        "clusterTime" : Timestamp(1610982469, 1),
        "signature" : {
          "hash" : BinData(0,"knqdZrxpyGFdSi0gljxCQG4LJ9U="),
          "keyId" : NumberLong("6894922308364795934")
        }
      }
    }

       如果我們想手工的選擇某個數據庫的主分片,可以使用movePrimary命令,遷移主分片的過程會耗費一定的時間,在遷移完成之前,不應該對數據庫或者對應的集合進行訪問。遷移過程可能會影響整個集群的操作,所以這個命令一般不要主動去使用,如果必須使用,請務必考慮對網絡負載的影響。

       如果你部署的一個分片集群是由一個副本集修改配置而來的,那么副本集上原來的那些數據庫的主分片將會繼續留在原來的副本集上,之后創建的數據庫才可以將主分片設置在其他分片上。

    02 如何遷移主分片

       下面我們演示如何使用movePrimary命令來遷移數據庫的主分片。

    首先,我們來看,當前new數據庫的test集合的主分片在sharding_yeyz這個分片上。它就是new.test的主分片,如下:

    mongos> sh.status()
    --- Sharding Status --- 
     shards:
      { "_id" : "sharding_yeyz", "host" : "sharding_yeyz/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020", "state" : 1, "tags" : [ "1_1000" ] }
      { "_id" : "sharding_yeyz1", "host" : "sharding_yeyz1/127.0.0.1:27024,127.0.0.1:27025,127.0.0.1:27026", "state" : 1, "tags" : [ "1000_", "1000_2000" ] }
     
     databases:
       ...
      { "_id" : "new", "primary" : "sharding_yeyz", "partitioned" : true, "version" : { "uuid" : UUID("68c70c64-f732-4478-8851-06dad4b94d6b"), "lastMod" : 1 } }
        new.test
          shard key: { "number" : 1 }
          unique: false
          balancing: true
          chunks:
            sharding_yeyz 3
            sharding_yeyz1 1
          { "number" : { "$minKey" : 1 } } -->> { "number" : 1 } on : sharding_yeyz Timestamp(2, 1) 
          { "number" : 1 } -->> { "number" : 1000 } on : sharding_yeyz Timestamp(1, 2) 
          { "number" : 1000 } -->> { "number" : 2000 } on : sharding_yeyz1 Timestamp(2, 0) 
          { "number" : 2000 } -->> { "number" : { "$maxKey" : 1 } } on : sharding_yeyz Timestamp(1, 5) 
           tag: 1_1000 { "number" : 1 } -->> { "number" : 1000 }
           tag: 1000_2000 { "number" : 1000 } -->> { "number" : 2000 }

    接下來我們使用movePrimary命令,使用之前,我們需要知道它的執行過程:

    1、首先在集群元數據中修改主分片信息

    2、然后移動所有的沒有分片的集合到指定的主分片中

    **它只能在mongos上執行。

    命令的用法是:

    db.adminCommand( { movePrimary: <databaseName>, to: <newPrimaryShard> } )
    
    舉例:
    db.adminCommand( { movePrimary : "new", to : "sharding_yeyz1" } )

    我們執行完:

    db.adminCommand( { movePrimary : "new", to : "sharding_yeyz1" } )

    之后,結果如下:

    mongos> sh.status()
    --- Sharding Status --- 
     shards:
      { "_id" : "sharding_yeyz", "host" : "sharding_yeyz/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020", "state" : 1, "tags" : [ "1_1000" ] }
      { "_id" : "sharding_yeyz1", "host" : "sharding_yeyz1/127.0.0.1:27024,127.0.0.1:27025,127.0.0.1:27026", "state" : 1, "tags" : [ "1000_", "1000_2000" ] }
    
     databases:
      { "_id" : "new", "primary" : "sharding_yeyz1", "partitioned" : true, "version" : { "uuid" : UUID("68c70c64-f732-4478-8851-06dad4b94d6b"), "lastMod" : 2 } }
        new.test
          shard key: { "number" : 1 }
          unique: false
          balancing: true
          chunks:
            sharding_yeyz 3
            sharding_yeyz1 1
          { "number" : { "$minKey" : 1 } } -->> { "number" : 1 } on : sharding_yeyz Timestamp(2, 1) 
          { "number" : 1 } -->> { "number" : 1000 } on : sharding_yeyz Timestamp(1, 2) 
          { "number" : 1000 } -->> { "number" : 2000 } on : sharding_yeyz1 Timestamp(2, 0) 
          { "number" : 2000 } -->> { "number" : { "$maxKey" : 1 } } on : sharding_yeyz Timestamp(1, 5) 
           tag: 1_1000 { "number" : 1 } -->> { "number" : 1000 }
           tag: 1000_2000 { "number" : 1000 } -->> { "number" : 2000 }

    可以看到,主分片已經遷移完成了。

    以上就是MongoDB 主分片(primary shard)相關總結的詳細內容,更多關于MongoDB 主分片(primary shard)的資料請關注真格學網其它相關文章!

    您可能感興趣的文章:如何為MongoDB添加分片副本集分布式文檔存儲數據庫之MongoDB分片集群的問題MongoDB搭建高可用集群的完整步驟(3個分片+3個副本)Mongodb副本集和分片示例詳解MongoDB分片集群部署詳解MongoDB分片在部署與維護管理中常見的事項總結大全詳解MongoDB4.0構建分布式分片群集MongoDB分片鍵的選擇和案例實例詳解MongoDB分片詳解mongodb分片技術_動力節點Java學院整理mongodb3.4集群搭建實戰之高可用的分片+副本集深入理解MongoDB分片的管理Mongodb 刪除添加分片與非分片表維護

  3. 本文相關:
  4. mongodb3.0.5 副本集搭建及spring和java連接副本集配置詳細介紹
  5. mongodb副本集丟失數據的測試實例教程
  6. mongodb設置ttl索引自動清除數據與過期數據的方法
  7. ubuntu系統中安裝mongodb及其啟動命令mongod的教程
  8. mac中mongodb的安裝與卸載步驟詳解
  9. 關于mongotemplate通過id查詢為null的問題
  10. mongodb操作的模塊手動封裝
  11. db.serverstatus()命名執行時報無權限問題的解決方法
  12. mongodb基礎命令以及操作示例詳解
  13. mongodb在不同主機間復制數據庫和集合的教程
  14. mongodb多個collection及shard的問題
  15. mongodb分片結束,主片中數據重復
  16. mongodb分片后怎么取數據
  17. 如何部署MongoDB分片集群
  18. mongodb的副本集和分片集群有什么區別
  19. mongodb 多少數據適合shard
  20. 如何選擇MongoDB的分片字段
  21. mongodb 按什么規則分片
  22. 查看mongodb集群中是否有掛掉的shard
  23. mongodb分片數據庫指定問題
  24. 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess數據庫文摘數據庫其它首頁如何為mongodb添加分片副本集分布式文檔存儲數據庫之mongodb分片集群的問題mongodb搭建高可用集群的完整步驟(3個分片+3個副本)mongodb副本集和分片示例詳解mongodb分片集群部署詳解mongodb分片在部署與維護管理中常見的事項總結大全詳解mongodb4.0構建分布式分片群集mongodb分片鍵的選擇和案例實例詳解mongodb分片詳解mongodb分片技術_動力節點java學院整理mongodb3.4集群搭建實戰之高可用的分片+副本集深入理解mongodb分片的管理mongodb 刪除添加分片與非分片表維護mongodb3.0.5 副本集搭建及spring和java連接副本集配置詳細介紹mongodb副本集丟失數據的測試實例教程mongodb設置ttl索引自動清除數據與過期數據的方法ubuntu系統中安裝mongodb及其啟動命令mongod的教程mac中mongodb的安裝與卸載步驟詳解關于mongotemplate通過id查詢為null的問題mongodb操作的模塊手動封裝db.serverstatus()命名執行時報無權限問題的解決方法mongodb基礎命令以及操作示例詳解mongodb在不同主機間復制數據庫和集合的教程mongodb常用操作命令大全mongodb各種查詢操作詳解mongodb數據庫插入、更新和刪除操mongodb 數據庫操作--備份 還原 mongodb插入數據的3種方法mongodb中使用distinct去重的簡單淺談mysql和mariadb區別(mariadbmongodb整庫備份與還原以及單個cmongodb查詢操作限制返回字段的方mongodb 實現遠程連接php中安裝使用mongodb數據庫老生常談mongodb數據庫基礎操作mongodb中mapreduce編程模型使用實例centos7安裝和卸載mongodb數據庫的方法mongodb的查詢方法將mongodb加入到windows的本地服務項的方mongodb中方法limit和skip的使用mongodb 語法使用小結mongodb的基本操作實例詳解【服務端啟動,基于morphia實現mongodb按小時、按天聚合
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.yu113.com All Rights Reserved
    战天txt全集下载