zoukankan      html  css  js  c++  java
  • Mongodb 分片

    mkdir -p /home/m17 /home/m18 /home/m20 /home/mlog

    #声明实例

    ./bin/mongod --dbpath /home/m17/ --logpath /home/mlog/m17.log --fork --port 27017 --smallfiles
    ./bin/mongod --dbpath /home/m18/ --logpath /home/mlog/m18.log --fork --port 27018 --smallfiles
    
    #指定为configsvr
    ./bin/mongod --dbpath /home/m20/ --logpath /home/mlog/m20.log --fork --port 27020 --configsvr
    
    #为路由指定configsvr .
    /bin/mongos --logpath /home/mlog/m30.log --port 30000 --configdb 192.168.119.128:27020 --fork

    #启动了4个进程

    ps aux|grep mongo

    #连接路由

    ./bin/mongo --port 30000

    #添加分片

    sh.addShard('192.168.119.128:27017')
    sh.addShard('192.168.119.128:27018')
    sh.status()

    #指定库分片

    sh.enableSharding('shop')

    #指定集合,以某个键分

    sh.shardCollection('shop.goods',{goods_id:1})

    #查看chunksize默认大小

    use config
    
    show tables
    
    db.settings.find()
    
    #默认为64M,修改为1M
    db.settings.save({_id:'chunksize',value:1})
    #分别查看27017和27018 数据存储情况
    
    use shop 
    db.goods.count();
    
    #查看分片情况
    sh.status();

    既然优先往某个片上插入,当chunk失衡时,再移动chunk,自然,随着数据的增多,shard的实例之间,有chunk来回移动的现象; 服务器之间IO的增加!

    #预先分片 

    for(var i=1;i<=40;i++) { sh.splitAt('shop.user',{userid:i*1000}) }
    以shop.user表为例
    1: sh.shardCollection(‘shop.user’,{userid:1}); //user表用userid做shard key
    
    2: for(var i=1;i<=40;i++) { sh.splitAt('shop.user',{userid:i*1000}) } // 预先在1K 2K...40K这样的界限切好chunk(虽然chunk是空的),
    这些chunk将会均匀移动到各片上.
    3: 通过mongos添加user数据. 数据会添加到预先分配好的chunk上, chunk就不会来回移动了.
  • 相关阅读:
    APIO2019游记
    ZJOI2019赛季回顾
    「HNOI 2019」白兔之舞
    LOJ #6539 奇妙数论题
    BZOJ4314 倍数?倍数!
    伯努利数学习笔记&&Luogu P3711 仓鼠的数学题
    BZOJ 5093[Lydsy1711月赛]图的价值 线性做法
    AtCoder Grand Contest 030题解
    Codeforces Round #542 (Div. 1) 题解
    Codeforces Round #541 (Div. 2)题解
  • 原文地址:https://www.cnblogs.com/tianboblog/p/6371373.html
Copyright © 2011-2022 走看看