mongodb分區實戰

來源:互聯網
上載者:User

標籤:mongodb 分區

分區技術其實就是一個分布式的過程,但是mongodb的負載和其他的負載有所不同,在整個mongodb分布式的叢集中一共有如下角色:

    mongos:mongos就是一個路由伺服器,它會根據管理員設定的“片鍵”將資料分攤到自己管理的mongod叢集,負責和用戶端直接互動

    config:資料和片的對應關係以及相應的配置資訊儲存在"config伺服器"上

    mongodb:負責存放資料的地方,如果不做分區的話,我們會直接連接mongodb

資訊大概如所示:

              650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/92/wKiom1Ph9B3gh67UAAEow0c6rGw678.jpg" title="QQ20140806171424.jpg" alt="wKiom1Ph9B3gh67UAAEow0c6rGw678.jpg" />

連接埠介紹:

        mongodb1 27017

        mongodb2 27018

        config   27027

        mongos   40000

步驟一

    建立mongodb1和mongodb2的db目錄和log目錄,並啟動mongodb1和mongodb2

       mkdir -p /opt/mongodb/data/s1

    mkdir -p /opt/mongodb/data/s2

    mkdir -p /opt/mongodb/log/

    ./mongod --port 27017 --dbpath /opt/mongodb/data/s1 --fork --logpath /opt/mongodb/log/s1.log

    ./mongod --port 27018 --dbpath /opt/mongodb/data/s2 --fork --logpath /opt/mongodb/log/s2.log

步驟二

    建立Config Server的db目錄,啟動Config Server

    mkdir -p /opt/mongodb/data/config

    ./mongod --port 27027 --dbpath /opt/mongodb/data/config --fork --logpath /opt/mongodb/log/config.log

步驟三

    啟動mongos Server

    ./mongos --port 40000 --configdb localhost:27027 --fork --logpath /opt/mongodb/log/mongos.log

步驟四

    服務配置

   串連mongos伺服器,然後將27017,27018的mongod交給mongos,添加分區也就是addshard()

   mongos> db.runCommand({"addshard":"127.0.0.1:27017",allowLocal:true})
   mongos> db.runCommand({"addshard":"127.0.0.1:27018",allowLocal:true})

   片已經叢集了,但是mongos不知道該如何切分資料,在mongodb中設定片鍵來解決此問題

   mongos> db.runCommand({"enablesharding":"weisong"})  對xiaoxin庫進行分區

   設定鍵為weisong庫裡面的user表裡面的name欄位

   mongos> db.runCommand({"shardcollection":"weisong.user","key":{"name":1}})

步驟五

    驗證

   往資料裡面插入1W條資料

   mongos> for(var i=0;i<10000;i++){
           ...db.user.insert({"name":"jack"+i,"age":i})
           ...}

   查看插入結果

   mongos> db.printShardingStatus()

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/96/wKioL1Ph_MKgXnQ7AALZoiUbUkw074.jpg" title="QQ20140806171424.jpg" alt="wKioL1Ph_MKgXnQ7AALZoiUbUkw074.jpg" />

   在返回資訊中我們要注意下面四個地方

    ① shards 我們能清楚的看到叢集分了2個片分別為27017和27018

    ② databases 我們能清楚的看到我們對weisong庫進行了分區

    ③ 我們看到了兩個分區的比例為2:1

    ④ 我們會發現在name值被劃分了3個地區

          無窮小-->name0、name0-->name999、name999-->無窮大

參考文獻

    http://gong1208.iteye.com/blog/1622078

    http://www.cnblogs.com/huangxincheng/archive/2012/03/07/2383284.html


 

本文出自 “精忠報國” 部落格,請務必保留此出處http://xinsir.blog.51cto.com/5038915/1536529

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.