MongoDB4.0构建分布式分片群集

发布时间:2020-03-04 12:05:09 作者:你讲多次
来源:网络 阅读:2724

MongoDB分片简述

MongoDB分片优势

  1. 使用分片减少了每个分片需要处理的请求数,因此,通过水平扩展,群集可以提高自己的存储容量。比如,当插入一条数据时,应用只需要访问存储这条数据的分片。
  2. 使用分片减少了每个分片村存储的数据。

分片的优势在于提供类似线性增长的架构,提高数据可用性,提高大型数据库查询服务器的性能。当MongoDB单点数据库服务器存储成为瓶颈、单点数据库服务器的性能成为瓶颈或需要部署大型应用以充分利用内存时,可以使用分片技术。

MongoDB分片群集的组成

MongoDB分片群集主要有如下三个组件:

系统环境

IP地址 路由服务器(Routers) 配置服务器(Config Server) Shard1 Shard2 Shard3
192.168.125.119 27017 27018 27001 27002 27003
192.168.125.120 27017 27018 27001 27002 27003
192.168.125.121 27017 27018 27001 27002 27003

部署分片群集

 

三台物理服务器安装及配置

  1. 下载解压MongoDB
    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz
    tar zxvf mongodb-linux-x86_64-4.0.0.tgz -C /opt
    mv /opt/mongodb-linux-x86_64-4.0.0/ /usr/local/mongodb
  2. 创建路由、配置、分片服务器的数据存放目录及日志管理
    路由服务器不存储数据,因此不需要创建数据存储目录,日志文件创建完成还需给予权限。
    mkdir -p /data/mongodb/config
    mkdir -p /data/mongodb/shard{1,2,3}
    mkdir -p /data/mongodb/logs
    touch /data/mongodb/logs/shard{1,2,3}.log
    touch /data/mongodb/logs/mongos.log
    touch /data/mongodb/logs/config.log
    chmod 777 /data/mongodb/logs/*.log
  3. 创建管理用户,修改目录权限
    useradd -M -s /sbin/nologin mongo
    chown -R mongo:mongo /usr/local/mongodb
    chown -R mongo:mongo /data/mongodb
  4. 添加环境变量,便于使用
    echo 'export MONGODB_HOME=/usr/local/mongodb' >> /etc/profile
    echo 'export PATH=$PATH:$MONGODB_HOME/bin' >> /etc/profile
    source /etc/profile
  5. 系统参数优化
    ulimit -n 25000    //可以打开的最大文件数量
    ulimit -u 25000    //用户最大可用的进程数
    sysctl -w vm.zone_reclaim_mode=0  //内存不足时,从其他节点分配内存
    # 从CentOS7开始,MongoDB会建议关闭系统的THP特性,否则可能会导致性能下降
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag  //*注意*这些优化都是临时的,重启失效

部署配置服务器(三台物理服务器配置步骤相同)

  1. 写入配置文件,我们可以用scp命令把配置文件发到其他两台物理服务器
    # vim config.conf
    dbpath=/data/mongodb/config  //数据文件存放位置
    logpath=/data/logs/config.log    //日志文件
    port=27018    //端口号
    logappend=true
    fork=true
    maxConns=5000  
    storageEngine=mmapv1
    replSet=configs  //复制集名称
    configsvr=true    //设置参数为true
    # mongod -f config.conf  //启动config实例
    scp /usr/local/mongodb/bin/config.conf root@192.168.125.120:/usr/local/mongodb/bin
    scp /usr/local/mongodb/bin/config.conf root@192.168.125.121:/usr/local/mongodb/bin
  2. 配置复制集(任意一台物理机上操作即可)
    mongo --port 27018
    config={_id:"configs",members:[{_id:0,host:"192.168.125.119:27018"},{_id:1,host:"192.168.125.120:27018"},{_id:2,host:"192.168.125.121:27018"}]}    //创建复制集
    rs.initiate(config)                //初始化复制集

部署分片服务器

启动分片功能

mongo  //默认进入27017端口
mongos> use admin
mongos> sh.addShard("shard1/192.168.125.119:27001,192.168.125.120:27001,172.16.10.29:27001")
mongos> sh.addShard("shard2/192.168.125.119:27002,192.168.125.120:27002,172.16.10.29:27002")
mongos> sh.status()           //查看群集状态
# 此处为添加两台分片服务器,后续添加的也会均匀分配分片数据

实现分片功能

推荐阅读:
  1. MongoDB4.0安装篇
  2. MongoDB分片群集

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mongodb 分片 %d

上一篇:开发者必备实用工具

下一篇:logstash获取北京时间

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》