虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > DB2数据库 > mongodb学习笔记09--shard分片

mongodb学习笔记09--shard分片
类别:DB2数据库   作者:码皇   来源:billvsme的专栏     点击:

概述 shard 分片 就是 把不同的数据分在不同的服务器 模型其中: 用户对mongodb的操作都是向mongs请求的 configsvr 用于保存,某条数据保存在哪个shard的上 如何

概述

shard 分片 就是 把不同的数据分在不同的服务器

模型

这里写图片描述

其中:<喎"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjxiciAvPg0K08O7p7bUbW9uZ29kYrXEstnX97a8ysfP8m1vbmdzx+vH87XEPGJyIC8+DQpjb25maWdzdnIg08PT2rGjtOajrMSzzPXK/b7dsaO05tTaxMS49nNoYXJktcTJzzxiciAvPg0KJm5ic3A7PC9wPg0KPGgxIGlkPQ=="如何使用分片">如何使用分片

先启动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}
    )
相关热词搜索: 笔记