美文网首页
mongodb分片搭建

mongodb分片搭建

作者: 快点给我想个名 | 来源:发表于2019-12-07 14:17 被阅读0次
环境说明

Linux:CentOS7
MongoDB:mongodb-linux-x86_64-enterprise-rhel70-4.0.13
服务器IP:192.168.6.128、192.168.6.129、192.168.6.130
参考官方说明

IP 服务和端口
192.168.6.128 mongos:27017、shardServer:27018、configServer:27019
192.168.6.129 mongos:27017、shardServer:27018、configServer:27019
192.168.6.130 mongos:27017、shardServer:27018、configServer:27019
配置ConfigServer
  1. 创建log、data目录


    configServer目录结构.png
  2. 配置config_server.conf

processManagement:
   fork: true
net:
   bindIp: 192.168.6.x,127.0.0.1
   port: 27019 
storage:
   dbPath: /usr/local/mongodb-4.0.13/shard/config/data
systemLog:
   destination: file
   path: "/usr/local/mongodb-4.0.13/shard/config/log/config_server.log"
   logAppend: true
storage:
   journal:
      enabled: true
replication:
   replSetName: config_set
sharding:
  clusterRole: configsvr
  1. 启动configServer服务
[root@simon mongodb-4.0.13]# bin/mongod -f shard/config/config_server.conf
  1. 登录其中一个节点
[root@simon mongodb-4.0.13]# bin/mongo --port 27019
  1. 设置副本集成员
rs.initiate(
  {
    _id: "config_set",
    configsvr: true,
    members: [
      { _id : 0, host : "192.168.6.128:27019" },
      { _id : 1, host : "192.168.6.129:27019" },
      { _id : 2, host : "192.168.6.130:27019" }
    ]
  }
)
配置ShardServer

这里只配置3个单例Mongodb实例

  1. 创建log、data目录


    shardServer目录.png
  2. 配置server.conf
processManagement:
   fork: true
net:
   bindIp: 192.168.6.x,127.0.0.1
   port: 27018
storage:
   dbPath: /usr/local/mongodb-4.0.13/shard/server/data
systemLog:
   destination: file
   path: "/usr/local/mongodb-4.0.13/shard/server/log/server.log"
   logAppend: true
storage:
   journal:
      enabled: true
#replication: # 单实例不配置,也可打开配置。分配搭建完成后可添加服务器,组成分片+副本集的功能
#   replSetName: config_set
sharding:
  clusterRole: shardsvr
  1. 启动shardServer服务(就是启动单台mongo)
[root@simon mongodb-4.0.13]# bin/mongod -f shard/server/server.conf
配置mongos
  1. 创建log目录


    mongos目录结构.png
  2. 配置mongos.conf

processManagement:
   fork: true
net:
   bindIp: 192.168.6.x,127.0.0.1
   port: 27017
systemLog:
   destination: file
   path: "/usr/local/mongodb-4.0.13/shard/route/log/route.log"
   logAppend: true
sharding:
  configDB: config_set/192.168.6.x:27019,192.168.6.x:27019,192.168.6.x:27019#注意这里配置要加上configReplSetName
  1. 启动mongos服务
[root@simon mongodb-4.0.13]# bin/mongos -f shard/route/mongos.conf 
  1. 配置chunkSize(默认64M为测试我们调整为1M)
    但是 MongoDB 3.4 removes sharding.chunkSize and sharding.autoSplit settings。修改方法参考官网说明
    三台服务器都要执行下面的操作
  • 登录
[root@simon mongodb-4.0.13]# bin/mongo -port 27017
  • 修改chunkSize
MongoDB Enterprise mongos> use config
MongoDB Enterprise mongos> db.settings.save({_id:"chunksize",value:1})
  • 查看修改结果
MongoDB Enterprise mongos> db.settings.find()
{ "_id" : "chunksize", "value" : 1 }
配置sharding
  1. 添加分片成员参考官方说明
    登录其中一台服务器,执行下面命令
MongoDB Enterprise mongos> db.runCommand({addShard:"192.168.6.128:27018"})
MongoDB Enterprise mongos> db.runCommand({addShard:"192.168.6.129:27018"})
MongoDB Enterprise mongos> db.runCommand({addShard:"192.168.6.130:27018"})

由于部署时我们没有设置副本集名称,所以此处不需填写replica_set

到此为止分片集群已经搭建完毕,但数据并不会马上分散存储在不同的分片上。还需要设置数据库分片,继续下面的命令。

设置数据库分配

MongoDB会自动创建数据库,所有这里我们不自己创建simon。
注意Mongodb官网这句话:If the collection already contains data, you must create an index that supports the shard key before sharding the collection. If the collection is empty, MongoDB creates the index as part of sh.shardCollection()
所以我们先创建索引。登录其中一台服务器,通过mongos执行下面命令。

  1. 将片键字段设置为索引
MongoDB Enterprise mongos> db.student.ensureIndex({age:"hashed"})
  1. 启用数据库分片
MongoDB Enterprise mongos> sh.enableSharding("simon")
  1. 集合启用分片
    对simon数据库的stuent集合启用分片。{age:"hashed"}为片键的索引。
MongoDB Enterprise mongos> sh.shardCollection("simon.student",{age:"hashed"})
  1. 插入数据
MongoDB Enterprise mongos> use simon
MongoDB Enterprise mongos> for(var i=1;i<=10000;i++){db.student.insert({ age:i,name:"A" })}
  1. 验证
  • 128
MongoDB Enterprise > use simon
switched to db simon
MongoDB Enterprise > db.student.count()
3350
  • 129
MongoDB Enterprise > use simon
switched to db simon
MongoDB Enterprise > db.student.count()
3366
  • 130
MongoDB Enterprise > use simon
switched to db simon
MongoDB Enterprise > db.student.count()
3284

相关文章

  • NoSQL三--mongodb(二)

    目录 十一、mongodb分片介绍十二、mongodb分片搭建十三、mongodb分片测试十四、mongodb备份...

  • Mongodb分片集群搭建

    MongoDb分片集群搭建 基于mongodb3.6 分片集群的权限控制 Brief: 内部通过keyfile控制...

  • MongoDB分片集群搭建

    本文主要介绍了mongoDB分片集群概念,以及分片集群搭建过程,方便下次参考。 概念 分片(sharding)是一...

  • mongodb分片搭建

    环境说明 Linux:CentOS7MongoDB:mongodb-linux-x86_64-enterprise...

  • mongodb分片搭建

    机器: 分片配置 服务中心的配置(配置中心) 路由配置 1.先把分片1的三台机器启动 2.一定要先进入admin数...

  • 搭建Mongodb高可用分片集群

    搭建Mongodb高可用分片集群 一、规划 服务器:IP:192.168.1.101/192.168.1.102/...

  • 【mongoDB】MongoDB 分片的原理、搭建、应用

    MongoDB 分片的原理、搭建、应用https://www.cnblogs.com/zhoujinyi/p/46...

  • MongoDB分片群集组件

    MongoDB分片群集包含以下组件: 分片:每个分片包含分片数据的子集。从MongoDB 3.6开始,必须将分片部...

  • mongodb分片集群搭建

    环境 服务器:centOS7 mongodb版本:3.6.2 集群方案:路由服务器(2台)+分片服务器(2个分片,...

  • MongoDB 集群分片搭建

    环境要求 本次安装环境使用了三台乌班图虚拟机, 关于为什么搭建分片集群,想必这里不用多介绍了.肯定是因为数据量太大...

网友评论

      本文标题:mongodb分片搭建

      本文链接:https://www.haomeiwen.com/subject/dsnygctx.html