mongodb 學習筆記 09,mongodb學習筆記

來源:互聯網
上載者:User

mongodb 學習筆記 09,mongodb學習筆記
概述

     shard 分區 就是 把不同的資料分在不同的伺服器

模型

其中:
    使用者對mongodb的操作都是向mongs請求的
    configsvr 用於儲存,某條資料儲存在哪個shard的上

如何使用分區

先啟動2個節點作為shard

mongd --dbpath ~/db/mongo1/databse --logpath ~/db/mongo1/log/mongo.log --port 27017 --fork --smallfilesmongd --dbpath ~/db/mongo2/databse --logpath ~/db/mongo2/log/mongo.log --port 27018 --fork --smallfiles

啟動 configsvr,就是比前面的多加了 –configsvr

mongd --dbpath ~/db/mongo3/databse --logpath ~/db/mongo3/log/mongo.log --port 27019 --fork --smallfiles --configsvr

啟動mongos,注意–configdb 指定configsvr

mongos --logpath ~/db/mongo4/log/mongs.log --port 27020  --configdb 127.0.0.1:27020 --fork

連到mongos

mongo --port 27020

把前面啟動並執行2個節點,添加進來

sh.addShard("127.0.0.1:27017")sh.addShard("127.0.0.1:27018")

查看狀態

sh.status()

定義分區規則:比如 先聲明test庫可以分區,然後定義依據my表的my_id來分區

sh.enableSharding('test')sh.shardCollection('test.my',{'my_id':1})

分區原理
    n篇文檔,形成一個“chunk”,先放到某個shard上,當這片shard的上的chunk數,比其它shard上的chunk數區別大時,就移動chunk到另一個shard上。

修改chunk的大小:比如修改到4m
預設某個chunk的大小是64m

use configdb.setting.save({_id:'chunksize',value:4m})
手動預先分區

前面的分區方法中,根據chunk數來分區,這樣會帶來影響IO的問題。
可以手動預製分區,例如定義my_id 0~1000 放在shard1中,1001~2000 放在shard2中,2001~3000 中放在shard3中

sh.enableSharding('test')sh.shardCollection('test.my',{'my_id':1})sh.splitAt('my',{my_id:1000})sh.splitAt('my',{my_id:2000})sh.splitAt('my',{my_id:3000})

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

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.