日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

【學(xué)習(xí)筆記】MongoDB分布式學(xué)習(xí)筆記2

 CevenCheng 2011-07-11

學(xué)習(xí)文檔:Oreilly.Scaling.MongoDB.Jan.2011.pdf

學(xué)習(xí)內(nèi)容:

第一章:

1.1 Sharding是什么

Sharding是MongoDB中使用的一種將大的collection分配到幾個(gè)服務(wù)器(cluster)中的方法。

MongoDB與以往數(shù)據(jù)庫(kù)分表方法的最主要的區(qū)別就是MongoDB的每一項(xiàng)任務(wù)都是自動(dòng)運(yùn)行的。

Mongo完成分片的步驟很簡(jiǎn)單:數(shù)據(jù)庫(kù)管理員告知mongoDB增加新的服務(wù)器mongod,MongoDB會(huì)自動(dòng)完成在幾個(gè)服務(wù)器之間均衡負(fù)載。

1.2 Sharding的目的

封裝集群(make the cluster invisible)

確保隨時(shí)讀寫(xiě)集群(make the cluster always available for reads and writes)

集群易擴(kuò)展(let the cluster grow easily)

第二章:

2.1 分割數(shù)據(jù)

一個(gè)分片指的是集群當(dāng)中的一個(gè)或者多個(gè)服務(wù)器,負(fù)責(zé)存儲(chǔ)數(shù)據(jù)集合當(dāng)中的某些子集。

如果一個(gè)分片當(dāng)中包含了多個(gè)服務(wù)器mongod,那么每一個(gè)mongod中的數(shù)據(jù)信息都是相同的。

因此可以將一個(gè)分片看作是一個(gè)備份數(shù)據(jù)集合。

MongoDB中存儲(chǔ)的數(shù)據(jù)一般以[a,b)的形式出現(xiàn),范圍是“最小從a開(kāi)始包括a,最大到b不包括b”。

2.2 分割數(shù)據(jù)(Distributing Data)

需要考慮的問(wèn)題:良好的可擴(kuò)展性、均衡負(fù)載

使用的分片方法:多范圍分片

具體簡(jiǎn)單描述:假設(shè)原來(lái)分為[a,f) [f,n) [n,p) [p,z]若增加了一個(gè)新的服務(wù)器,分為[a,d) [f,j) [n,p) [p,z] {[d,f)+[j,n)}

2.3 chunks是如何被創(chuàng)建的

我們把處于某個(gè)特定范圍內(nèi)的數(shù)據(jù)叫做一個(gè)chunk。

shard key是用來(lái)分割范圍也就是創(chuàng)建chunk的關(guān)鍵字。

2.4 將collections分片

當(dāng)?shù)谝淮螢槟硞€(gè)collection分片的時(shí)候,MongoDB創(chuàng)建一個(gè)chunk,這個(gè)chunk的范圍是從最小的值,到最大的值。

如果以collection中的age為shard key,且初始chunk為[1,30],且年齡在20歲以下的占總數(shù)的一半

第一次分片會(huì)被分為[1,20] [20,30]

2.5 均衡負(fù)載

由均衡負(fù)載器(balancer)負(fù)責(zé)均衡負(fù)載的問(wèn)題?!堵浴?/p>

2.6 路由服務(wù)器 mongos

mongos是負(fù)責(zé)用戶和集群交互的。它的工作就是負(fù)責(zé)隱藏集群內(nèi)部的分片信息,并且向用戶展現(xiàn)一個(gè)整齊的但服務(wù)器接口。

當(dāng)客戶使用一個(gè)mongo集群的時(shí)候,客戶所有的讀寫(xiě)操作都要通過(guò)mongos。mongos負(fù)責(zé)轉(zhuǎn)發(fā)所有用戶的請(qǐng)求到正確分片。

2.7 配置服務(wù)器 config server

2.8 集群架構(gòu)解析

典型地,一個(gè)MongoDB汲取包含三個(gè)過(guò)程:shards負(fù)責(zé)存儲(chǔ)數(shù)組,mongos負(fù)責(zé)路由請(qǐng)求信息,config server負(fù)責(zé)維持集群狀態(tài)。


========   學(xué)習(xí)筆記2  =============

轉(zhuǎn)載自 chenliying01
最終編輯 chenliying01

創(chuàng)建一個(gè)MongoDB Cluster

學(xué)習(xí)資料:Oreilly.Scaling.MongoDB.Jan.2011.pdf

第一步:選擇Shard Key

這一步很關(guān)鍵,對(duì)以后集群的可擴(kuò)展性有深刻的影響,所以Shard Key的選取一定要謹(jǐn)慎。

這部分內(nèi)容多且雜,不在這里細(xì)說(shuō),具體參看學(xué)習(xí)資料第三章。

第二步:將一個(gè)已經(jīng)存在的collections分片

 

具體的部署步驟見(jiàn)下

【轉(zhuǎn)自】http://blog.csdn.net/daizhj/archive/2010/09/07/5868360.aspx

 模擬2個(gè)shard服務(wù)和一個(gè)config服務(wù), 均運(yùn)行在10.0.4.85機(jī)器上,只是端口不同
       Shard1:27020
       Shard2:27021
       Config:27022
       Mongos啟動(dòng)時(shí)默認(rèn)使用的27017端口

       在C,D,E磁盤(pán)下分別建立如下文件夾:

               mongodb\bin 

               mongodb\db

       然后用CMD命令行依次打開(kāi)相應(yīng)文件夾下的mongd文件:

       c:\mongodb\bin\mongod --dbpath c:\mongodb\db\ --port 27020

       d:\mongodb\bin\mongod --dbpath d:\mongodb\db\ --port 27021

       e:\mongodb\bin\mongod --configsvr --dbpath e:\mongodb\db\ --port 27022          (注:config配置服務(wù)器)

      啟動(dòng)mongos時(shí),默認(rèn)開(kāi)啟了27017端口

      e:\mongodb\bin\mongos --configdb 10.0.4.85:27022

      然后打下mongo:

      E:\mongodb\bin>mongo   回車  (有時(shí)加端口會(huì)造成下面的addshard命令出問(wèn)題)

      > use admin
          switched to db admin
      > db.runCommand( { addshard : "10.0.4.85:27020", allowLocal : 1, maxSize:2 , minKey:1, maxKey:10} )  

         --添加sharding,maxsize單位是M,此處設(shè)置比較小的數(shù)值只為演示sharding效果

         { "shardAdded" : "shard0000", "ok" : 1 }
      > db.runCommand( { addshard : "10.0.4.85:27021", allowLocal : 1, minKey:1000} )
         { "shardAdded" : "shard0001", "ok" : 1 }      

          注:如果要移除sharding,可用下面寫(xiě)法

          db.runCommand( { removeshard : "localhost:10000" } );

      > db.runCommand({listshards:1});   查看shard節(jié)點(diǎn)列表     

      {
        "shards" : [
                {
                        "_id" : "shard0000",
                        "host" : "10.0.4.85:27020"
                },
                {
                        "_id" : "shard0001",
                        "host" : "10.0.4.85:27021"
                }
        ],
        "ok" : 1
      }

       接下來(lái)創(chuàng)建相應(yīng)數(shù)據(jù)庫(kù)并設(shè)置其"可以sharding",新建自動(dòng)切片的庫(kù)user001:

       > config = connect("10.0.4.85:27022")
       > config = config.getSisterDB("config")
       > dnt_mongodb=db.getSisterDB("dnt_mongodb");
           dnt_mongodb
       > db.runCommand({enablesharding:"dnt_mongodb"})
          { "ok" : 1 }
 
       注:一旦enable了個(gè)數(shù)據(jù)庫(kù),mongos將會(huì)把數(shù)據(jù)庫(kù)里的不同數(shù)據(jù)集放在不同的分片上。除非數(shù)據(jù)集被分片(下面會(huì)設(shè)置),否則一個(gè)數(shù)據(jù)集的所有數(shù)據(jù)將放在一個(gè)分片上。

       > db.printShardingStatus();
   --- Sharding Status ---
  sharding version: { "_id" : 1, "version" : 3 }
  shards:
      { "_id" : "shard0000", "host" : "10.0.4.85:27020" }
      { "_id" : "shard0001", "host" : "10.0.4.85:27021" }
  databases:
        { "_id" : "admin", "partitioned" : false, "primary" : "config" }
        { "_id" : "dnt_mongodb", "partitioned" : true, "primary" : "shard0000" }
  
       > db.runCommand( { shardcollection : "dnt_mongodb.posts1", key : {_id : 1}, unique: true } )  
          { "collectionsharded" : "dnt_mongodb.posts1", "ok" : 1 } 
    
        --使用shardcollection 命令分隔數(shù)據(jù)集,key自動(dòng)生成。 

        如果要進(jìn)行GridFS sharding,則需進(jìn)行如下設(shè)置:
            db.runCommand( { shardcollection : "test.fs.chunks", key : { _id : 1 } } )
            {"ok" : 1} ,更多內(nèi)容參見(jiàn)http://eshilin.blog.163.com/blog/static/13288033020106215227346/
      
       > db.printShardingStatus()
   --- Sharding Status ---
  sharding version: { "_id" : 1, "version" : 3 }
  shards:
      { "_id" : "shard0000", "host" : "localhost:27020" }
      { "_id" : "shard0001", "host" : "localhost:27021" }
  databases:
        { "_id" : "admin", "partitioned" : false, "primary" : "config" }
        { "_id" : "user001", "partitioned" : true, "primary" : "shard0000" }
                dnt_mongodb.posts1e chunks:
                        { "name" : { $minKey : 1 } } -->> { "name" : { $maxKey :
 1 } } on : shard0000 { "t" : 1000, "i" : 0 



 

 


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多