Mongodb叢集與分區 1

來源:互聯網
上載者:User

標籤:os   io   strong   資料   for   ar   cti   div   

分區叢集

 Mongodb中資料分區叫做chunk,它是一個Collection中的一個連續的資料記錄,但是它有一個大小限制,不可以超過200M,如果超出產生新的分區。 下面是一個簡單的分區叢集執行個體  分區叢集的構成:
  • Shard server:mongod執行個體,用於儲存實際的資料區塊
  • Config server:mongod執行個體,用於儲存整個Cluster Metadata,其中包括chunk資訊。
  • Route server:mongos執行個體,做為整個叢集的前端路由,整個叢集由此接入。從而讓整個叢集看著像單一進程資料庫。
  • 備忘:route做為路由會將請求轉寄到實際的目標服務進程,並將多個結果合并並回傳用戶端。在route並不儲存任何的資料和狀態,所有的資訊都是啟動的時候從Config server上擷取,當Config server上有資訊更新,也會同步到route server上。 
  構建一個簡單的叢集 叢集目錄:總共有四個mongodb,目錄分別為/home/scotte.ye/mongo1,mongo2,mongo3,mongo4其中mongo1,mongo2做為shard servermongo3做為config servermongo4做為route server  1、啟動Shard server // 啟動shard server 1 $ cd /home/scotte.ye/mongo1$ ./mongo -shardsvr -port 10000 -dbpath=/home/data/10000/ -fork -logpath=/home/log/10000/null$ all output going to: /home/log/10000/null$ fork process: 10657 //啟動shard server 2 $ cd /home/scotte.ye/mongo2$ ./mongo -shardsvr -port 10011 -dbpath=/home/data/10011/ -fork -logpath=/home/log/10011/null$ all output going to: /home/log/10011/null$ fork process: 10661 //啟動Config server $ cd /home/scotte.ye/mongo3$ ./mongo -configsvr -port 20000 -dbpath=/home/data/20000/ -fork -logpath=/home/log/20000/null$ all output going to: /home/log/20000/null$ fork process: 10857 //啟動Route server $ cd /home/scotte.ye/mongo4$ ./mongos -configdb 192.168.35.106:20000 -fork -logpath=/home/log/20000/null$ all output going to: /home/log/20000/null$ fork process: 10900 //注在啟動Route server的時候,還可以通過-chunksize參數來進行配置分塊的大小  2、配置相關 配置相關命令說明:
  • addshard:添加shard server到叢集。相類似的命令還有,listshards和removeshard
  • enablesharding:用於設定那些資料庫可以被分布儲存
  • shardcollection:用於設定具體被分區的集合的名稱,且必須指定 share key,系統會自動建立索引
  • 註:shardcollection的集合必須只有一個unique index且必須是shard key
開始配置: $ cd /home/scotte.ye/mongo3/bin$ ./mongo$ >use admin$#只有在admin資料庫才可以操作$ switched to db admin$ >db.runCommand({addshard:‘192.168.35.106:10000‘})$ {"shardAdded":"shard0000","OK":1}$ >db.runCommand({addshard:‘192.168.35.106:10011‘})$ {"shardAdded":"shard0001","OK":1}$#添加相應到shard server到shard cluster$ >db.runCommand({enablesharding:‘test‘})$#使相應的資料庫表test可以分布儲存,test可以更換成相應的其它資料庫名字$ >db.runCommand({sahrdcollection:‘test.user‘,key:{_id:1}})$ {"OK":1}$#指明相應的集合和shard key$ {"collectionsharded":"test.user","OK":1} 3、常用的狀態查詢命令
  • printShardingStatus():查看Sharding資訊
  • db.<collection_name>.stats():查看具體shard儲存資訊
  • isdbgrid:用於確認當前是否是sharding cluster
  • ismaster:判斷是不是master
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.