zoukankan      html  css  js  c++  java
  • Mongodb集群与分片 1

    分片集群

     
    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 server
    mongo3做为config server
    mongo4做为route server
     
    1、启动Shard server
     
     
    $ 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
     
     
    $ 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
     
     
    $ 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
  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/chaoa/p/3914132.html
Copyright © 2011-2022 走看看