大数据MongoDB 3.2.1分片

  

MongoDB分片

  
      <李>   

    在Mongodb里面存在另一种集群,就是分片技术,可以满足Mongodb数据量大量增长的需求。

      李   <李>当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。   
  

分片的目的

  

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

  

解决方法:

  
有两个基本的方法:垂直扩展和水平扩展。
  
      <李>   

    垂直扩展:增加更多的CPU和存储资源来扩展容量。

      李   <李>水平扩展:将数据集分布在多个服务器上。水平扩展即分片   
  

分片结构图(图片来源于网络):

  

大数据MongoDB 3.2.1分片

  

MongoDB分片群集的组成(图片来源于网络):

  

MongoDB分片群集的三个主要组件:

  

碎片:
用于存储实际的数据块,实际生产环境中一个碎片服务器角色可由几台机器组个一个复制集承担,防止主机单点故障

  

配置服务器:
mongod实例,存储了整个ClusterMetadata,其中包括块信息。

  

查询路由器:
前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

  

大数据MongoDB 3.2.1分片

  

分片群集的简单部署:

  

实验环境:

  
1台路由实例(端口27017)。
  
1台配置实例(端口37017)。
  
2台碎片实例(端口47017年,47018年)。
  

1。配置配置服务器:

  
 <代码> vim mongodb1.conf
  
  端口=37017
  dbpath=/数据/mongodb/mongodb1
  logpath=/数据/logs/mongodb1.log
  logappend=true
  叉=true
  maxConns=5000
  storageEngine=mmapv1
  configsvr=true #开启配置服务
  mongod - f/usr/local/mongodb/bin/mongodb1.参看#开启配置实例 
  

2。配置分片服务器:

  
 <代码> vim mongodb2.conf
  
  端口=47017
  dbpath=/数据/mongodb/mongodb2
  logpath=/数据/logs/mongodb2.log
  logappend=true
  叉=true
  maxConns=5000
  storageEngine=mmapv1
  shardsvr=true #开启分片服务
  
  vim mongodb3.conf
  
  端口=47018
  dbpath=/数据/mongodb/mongodb3
  logpath=/数据/logs/mongodb3.log
  logappend=true
  叉=true
  maxConns=5000
  storageEngine=mmapv1
  shardsvr=true #开启分片服务
  
  mongod - f/usr/local/mongodb/bin/mongodb2.参看#开启分片实例
  mongod - f/usr/local/mongodb/bin/mongodb3.conf  
  

3。启动路由服务器:

  
 <代码> (root@localhost本)#。/蒙戈——端口27017——叉——logpath=/usr/地方/mongodb/bin/路线。日志——configdb 192.168.217.134:37017, chunkSize 1
  2018 - 07 - 23 t14:15:28.185 + 0800 W分片(主要)运行一个分片少于3配置的集群服务器只能为测试目的,不建议做生产。
  叉子进程,等到服务器准备连接。
  分叉的过程:15337
  子进程成功开始,父母退出 
  

4。添加分片服务器:

  
 <代码> [root@localhost本]# mongo
  MongoDB shell版本:3.2.1之上
  ……
  mongos>show dbs
  配置0.031 gb
  mongos>sh.status() #查看分片状态
  推荐- - - - - - - - -分片状态
  分片版本:{
  “_id”: 1、
  “minCompatibleVersion”: 5
  “currentVersion”: 6,
  “clusterId”: ObjectId (“5 b557280f9effb757fd31cdb”)
  }
  碎片:#分片为空
  活跃蒙戈:
  “3.2.1”:1
  平衡器:
  目前启用:是的
  当前运行:不
  最后5次失败均衡器轮:0
  过去24小时内迁移的结果:
  没有最近的迁移
  数据库:
  mongos>sh.addShard(192.168.217.134:47017) #添加分片
  {“shardAdded”:“shard0000”、“ok”: 1}
  mongos>sh.addShard (“192.168.217.134:47018”)
  {“shardAdded”:“shard0001”、“ok”: 1}
  
  mongos>sh.status() #查看分片状态
  推荐- - - - - - - - -分片状态
  分片版本:{
  “_id”: 1、
  “minCompatibleVersion”: 5
  “currentVersion”: 6,
  “clusterId”: ObjectId (“5 b557280f9effb757fd31cdb”)
  }
  碎片:#分片信息
  {" _id ":“shard0000”、“主机”:“192.168.217.134:47017”}
  {" _id ":“shard0001”、“主机”:“192.168.217.134:47018”}
  活跃蒙戈:
  “3.2.1”:1
  平衡器:
  目前启用:是的
  当前运行:不
  最后5次失败均衡器轮:0
  过去24小时内迁移的结果:
  没有最近的迁移
  数据库:
  

大数据MongoDB 3.2.1分片