mongodb集群搭建-分片

来源:互联网 发布:js submit 拒绝访问 编辑:程序博客网 时间:2024/04/30 08:03
  1. 分片介绍
    当存入mongo的数据很大的时候,我们需要选择将数据分片存放到不同的机器上。分片不同于副本集,副本集中主从存放的数据都一样,但是不同分片存放的数据是不同的,所有的分片组成了集群,存放着所有的数据。
  2. 配置服务器
    配置服务器相当于集群的大脑,保存着集群和分片的元数据(个人理解和hbase的meta root表类似),即各分片包含哪些数据的信息
    configsvr.conf内容如下:
    dbpath=/home/xxx/xxx/mongodb/db/configdb
    logpath=/home/xxx/xxx/mongodb/log/configdb.log
    logappend=true
    port=20001
    fork=true
    配置比较简单,不多做解释
    ./mongod --configsvr -f configsvr.conf
    3个节点上都要启动
  3. 配置mongos进程
    三个配置服务器处于运行状态,启动一个mongos进程供应用程序连接(不需要单独得连接mongod进程了),mongos是路由节点,客户端连接他之后获取数据,mongos会知道数据存放在哪个分片下,然后去取。
    mongos.conf内容如下:
    logpath=/home/xxx/xxx/mongodb/log/mongos.log
    logappend=true
    port=27117
    fork=true
    ./mongos --configdb ip00:20001,ip05:20001,ip07:20001 -f mongos.conf
  4. 添加分片
    首先按照上一篇搭建好一个mongo副本集,接下去将副本集转换为分片
    连接到路由节点(mongos)
    ./mongo ip:27117                                   # 该ip是启动mongps进程那台服务器的ip
    sh.addShard("mondeo/ip:27017")                # 指定副本集的名字,和副本集中的某一个节点(其他节点可以感知到)
    可以添加多个分片,再新建一个副本集按照上述方法添加分片

    不推荐数据量小的情况下使用分片,这样会使得插入速度变慢(数据需要在节点中同步),理论上副本集对付千万级别的数据已经足够。
1 0