zoukankan      html  css  js  c++  java
  • mogodb分片配置

    下图展示了在MongoDB中使用分片集群结构分布:

    上图中主要有如下所述三个主要组件:

    • Shard:

      用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障

    • Config Server:

      mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。

    • Query Routers:

      前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

    1、启动mongodb

    mkdir -p /home/m17 /home/m18 /home/m20 /home/mlog
    #启动s1
    mongod --dbpath /home/m17 --logpath /home/mlog/m17.log --fork --port 2017 --smallfiles
    #启动s2
    mongod --dbpath /home/m18 --logpath /home/mlog/m18.log --fork --port 2018 --smallfiles
    #启动configsvr
    mongod --dbpath /home/m20 --logpath /home/mlog/m20.log --fork --port 2020 --configsvr
    #启动mogos
    mongos --logpath /home/mlog/m30.log --port 30000 --configdb 192.168.1.1:27020 --fork

    2、配置分片节点

    mongo --port 30000
    
    mongos>sh.addShard('192.168.1.1:27017');
    mongos>sh.addShard('192.168.1.1:27018');
    
    #查看
    mongos>sh.status();
    

    3、设定分片规则

    #为shop库进行分片
    mongos>sh.enableSharding('shop');
    #可查看
    mongos>sh.status();
    #goods表分配片键
    mongos>sh.shardCollection('shop.goods',{goods_id:1});
    #可查看
    mongos>sh.status();
    #查看chunk size
    mongos>use config
    mongos>db.settings.fihnd();
    #修改chunk size
    mongos>db.settings.save({_id:'chunksize',value:1});
    
    #缺点:会造成块的移动,下面介绍手动预先分片

    4、手动预先分片规则

    mongos>sh.shardCollection('shop.user',{userid:1});
    mongos>sh.status();
    #预先分40块,每1000条数据一块
    mongos>for(var i=1;i<=40;i++){ sh.splitAt('shop.user',{userid:i*1000});}
  • 相关阅读:
    最短路之dijkstra算法
    拓扑排序 topsort详解
    POJ2236 Wireless Network 并查集简单应用
    最小生成树详解 prim+ kruskal代码模板
    并查集详解及模板
    POJ 3190 Stall Reservations贪心
    chapter22:源码与Tarball之(1)-传统方法编译与make方法进行编译
    vi的用法
    centos7 connect internet
    java内存区域
  • 原文地址:https://www.cnblogs.com/nr-zhang/p/10565199.html
Copyright © 2011-2022 走看看