码迷,mamicode.com
首页 > 数据库 > 详细

mongodb分片群集

时间:2018-07-18 10:53:23      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:sysctl   creat   dex   实例   x86   har   其他   enables   tar zxvf   

  • 简介:大数据量和吞吐量的数据库会对单机的性能 造成较大压力,大量的数据查询会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存,将压力转移到磁盘IO上。

  • 优点:1.使用分片减少了每个分片需要处理的请求数。2.使用分片减少了每个分片存储的数据。

  • mongodb分片群集的组成:shard(分片服务器),config server(配置服务器),route(路由服务器)

  • 分片服务器:存储数据
  • 配置服务器:管理分片服务器
  • 路由服务器:作为前端路由

  • 安装mongodb3.2:

    安装openssl-devel并解压到/opt下

    便于管理mongo和mongod,做个链接

    yum install openssl-devel -y
    
    tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt/
    
    mv mongodb-linux-x86_64-3.2.1/ /usr/local/mongodb
    
    ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
    ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod

    创建四个实例的数据文件和日志文件

    mkdir -p /data/mongodb/mongodb{1,2,3,4}
    
    mkdir /data/mongodb/logs
    
    touch /data/mongodb/logs/mongodb{1,2,3,4}.log
    
    chmod -R 777 /data/mongodb/logs/*.log

    nlimit -u和ulimit -n的值大于20000

    ulimit -n 25000
    
    ulimit -u 25000

    配置服务器

    cd /usr/local/mongodb/bin/ //在bin目录下
    
    vim mongodb1.conf
    
    port=37017          //添加如下内容
    dbpath=/data/mongodb/mongodb1
    logpath=/data/mongodb/logs/mongodb1.log
    logappend=true
    fork=true
    maxConns=5000
    storageEngine=mmapv1
    configsvr=true
    
    mongod -f /usr/local/mongodb/bin/mongodb1.conf  //启动服务
    
    sysctl -w vm.zone_reclaim_mode=0
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    //某节点内存不足时,从其他节点分配内存
    

    分片服务器

    #mongodb2.conf
    cp -p mongodb1.conf mongodb2.conf
    vim mongodb2.conf    //对mongodb2.conf进行配置
    
    port=47017    //端口号为47017
    dbpath=/data/mongodb/mongodb2  //数据文件
    logpath=/data/mongodb/logs/mongodb2.log  //日志文件
    logappend=true
    fork=true
    maxConns=5000
    storageEngine=mmapv1
    shardsvr=true
    
    #mongodb3.conf
    cp -p mongodb1.conf mongodb3.conf
    vim mongodb3.conf
    
    port=47018   //端口为47018
    dbpath=/data/mongodb/mongodb3
    logpath=/data/mongodb/logs/mongodb3.log
    logappend=true
    fork=true
    maxConns=5000
    storageEngine=mmapv1
    shardsvr=true
    
    #开启两个服务
    mongod -f mongodb2.conf
    mongod -f mongodb3.conf
    

    启动路由服务器

    ./mongos --port 27017 --fork --logpath=/usr/local/mongodb/bin/route.log --configdb 192.168.235.204:37017 --chunkSize 1   //必须在/usr/local/mongodb/bin下

    启用分片服务器

    mongo
    
    mongos> show dbs
    
    mongos> sh.status()  //shards下为空,没有分片服务器
    
    mongos> sh.addShard("192.168.177.133:47017") //添加47017端口的分片服务器
    mongos> sh.addShard("192.168.177.133:47018")  //添加47018端口的分片服务器
    
    mongos> sh.status()
    

    分片功能

    先添加一个数据库,在集合里创建数据

    mongos> sh.enableSharding("school")   #启用数据库分片
    
    mongos> db.info.createIndex({"id":1})   #对info表创建索引
    
    mongos> sh.shardCollection("school.info",{"id":1})  #表分片
    
    mongos> sh.status()
    

    mongodb分片群集

    标签:sysctl   creat   dex   实例   x86   har   其他   enables   tar zxvf   

    原文地址:http://blog.51cto.com/13620936/2146169

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!