mongdb分片原理以及分片副本集群搭建

  

mongdb分片原理
分片,是指将数据拆分,将其分散到不同的机器上,分片类似于raid0,副本类似于raid1
MongoDB的副本集与我们常见的主从有所不同,主从在主机宕机后所有服务将停止

  

分片集群主要由三种组件组成:蒙戈,配置服务器,碎片
1)蒙戈(路由进程,应用程序接入蒙戈再查询到具体分片)
数据库集群请求的入口,所有的请求都通过蒙戈进行协调,不需要在应用程序添加一个路由选择器,蒙戈自己就是一个请求分发中心,它负责把对应的数据请求
请求转发到对应的碎片服务器上。在生产环境通常有多个蒙戈作为请求的入口,防止其中一个挂掉所有的mongodb请求都没有办法操作。
2)配置服务器(路由表服务。每一台都具有全部块的路由信息)
顾名思义为配置服务器,存储所有数据库元信息(路,由分片)的配置.mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储
这些数据.mongos第一次启动或者关掉重启就会从配置服务器加载配置信息,以后如果配置服务器信息变化会通知到所有的蒙戈更新自己的状态,这样
蒙戈就能继续准确路由。在生产环境通常有多个配置服务器配置服务器,因为它存储了分片路由的元数据,这个可不能丢失!就算挂掉其中一台,只要还有存货,
mongodb集群就不会挂掉。
3)碎片(为数据存储分片,每一片都可以是复制集(复制品)
这就是传说中的分片了。如图所示,一台机器的一个数据表文物存储了1 t数据,压力太大了!在分给4个机器后,每个机器都是256克,则分摊了集中在一台
机器的压力。事实上,上图4个分片如果没有副本集(副本集)是个不完整架构,假设其中的一个分片挂掉那四分之一的数据就丢失了,所以在高可用性的分片架构还
需要对于每一个分片构建副本集副本集保证分片的可靠性。生产环境通常是2个副本+ 1个仲裁。

  

废话不多说

  

1。从github上拉取配置文件
<代码> git克隆git@github.com: herrywen-nanj/mongodb.git

  

2。启动顺序为configserver——比;蒙戈——比;共享

  

3。删除dbPath下的内容
<代码> rm射频configserver/dbPath

  

4。根据对应配置文件启动mongdb进程,进入mongdb中配置副本集
configserver启动:
mongod - f mongdb。参看
configserver2启动:
mongod - f mongdb.conf
配置副本集:

  
 <代码> #进入configserver
  蒙戈——端口27018
  #初始化
  在祝辞祝辞rs.initiate ()
  #添加副本节点
  在祝辞祝辞rs.add (“worker2:27019”)
  #查看副本集状态
  在祝辞祝辞rs.status
  返回内容:
  
  MongoDB企业config-rs: PRIMARY>rs.status ()
  {
  “设置”:“config-rs”, #副本集已经配置成功
  “日期”:ISODate (“2019 - 11 - 23 t04:56:35.588z”),
  “myState”: 1、
  “词”:NumberLong (1),
  “syncingTo”:“”,
  “syncSourceHost”:“”,
  “syncSourceId”: 1、
  “configsvr”:没错,
  “heartbeatIntervalMillis”: NumberLong (2000),
  “majorityVoteCount”: 2
  “writeMajorityCount”: 2
  " optim ": {
  " lastCommittedOpTime ": {
  “t”:时间戳(1574484982,1),
  “t”: NumberLong (1)
  },
  “lastCommittedWallTime”: ISODate (“2019 - 11 - 23 t04:56:22.464z”),
  " readConcernMajorityOpTime ": {
  “t”:时间戳(1574484982,1),
  “t”: NumberLong (1)
  },
  “readConcernMajorityWallTime”: ISODate (“2019 - 11 - 23 t04:56:22.464z”),
  " appliedOpTime ": {
  “t”:时间戳(1574484982,1),
  “t”: NumberLong (1)
  },
  " durableOpTime ": {
  “t”:时间戳(1574484982,1),
  “t”: NumberLong (1)
  },
  “lastAppliedWallTime”: ISODate (“2019 - 11 - 23 t04:56:22.464z”),
  “lastDurableWallTime”: ISODate (“2019 - 11 - 23 t04:56:22.464z”)
  },
  “lastStableRecoveryTimestamp”:时间戳(1574484952,30),
  “lastStableCheckpointTimestamp”:时间戳(1574484952,30),
  " electionCandidateMetrics ": {
  :“lastElectionReason electionTimeout”,
  “lastElectionDate”: ISODate (“2019 - 11 - 23 t04:55:51.134z”),
  “termAtElection”: NumberLong (1),
  " lastCommittedOpTimeAtElection ": {
  “t”:时间戳(0,0),
  “t”: NumberLong (1)
  },
  " lastSeenOpTimeAtElection ": {
  “t”:时间戳(1574484951,1),
  “t”: NumberLong (1)
  },
  “numVotesNeeded”: 1、
  “priorityAtElection”: 1、
  “electionTimeoutMillis”: NumberLong (10000),
  “newTermStartDate”: ISODate (“2019 - 11 - 23 t04:55:52.141z”),
  “wMajorityWriteAvailabilityDate”: ISODate (“2019 - 11 - 23 t04:55:52.266z”)
  },
  “成员”:(
  {
  “_id”: 0,
  “名称”:“worker2:27018”,
  “知识产权”:“192.168.255.134”,
  “健康”:1、
  “状态”:1、
  “stateStr”:“主”,
  “运行时间”:722年,
  " optime ": {
  “t”:时间戳(1574484982,1),
  “t”: NumberLong (1)
  },
  “optimeDate”: ISODate (“2019 - 11 - 23 t04:56:22z”),
  “syncingTo”:“”,
  “syncSourceHost”:“”,
  “syncSourceId”: 1、
  “infoMessage”:“找不到成员同步”,
  “electionTime”:时间戳(1574484951,2),
  “electionDate”: ISODate (“2019 - 11 - 23 t04:55:51z”),
  “configVersion”: 2
  “自我”:没错,
  “lastHeartbeatMessage”:“
  },
  {
  “_id”: 1、
  “名称”:“worker2:27019”,
  “知识产权”:“192.168.255.134”,
  “健康”:1、
  “状态”:2
  “stateStr”:“二次”,
  “运行时间”:13日
  " optime ": {
  “t”:时间戳(1574484982,1),
  “t”: NumberLong (1)
  },
  " optimeDurable ": {
  “t”:时间戳(1574484982,1),
  “t”: NumberLong (1)
  },
  “optimeDate”: ISODate (“2019 - 11 - 23 t04:56:22z”),
  “optimeDurableDate”: ISODate (“2019 - 11 - 23 t04:56:22z”),
  “lastHeartbeat”: ISODate (“2019 - 11 - 23 t04:56:34.705z”),
  “lastHeartbeatRecv”: ISODate (“2019 - 11 - 23 t04:56:35.176z”),
  “pingMs”: NumberLong (0)
  “lastHeartbeatMessage”:“”,
  “syncingTo”:“”,
  “syncSourceHost”:“”,
  “syncSourceId”: 1、
  “infoMessage”:“”,
  “configVersion”: 2
  }
  ),
  “ok”: 1、
  " $ gleStats ": {
  " lastOpTime ": {
  “t”:时间戳(1574484982,1),
  “t”: NumberLong (1)
  },
  “electionId”: ObjectId (“7 fffffff0000000000000001”)
  },
  “lastCommittedOpTime”:时间戳(1574484982,1),
  " $ clusterTime ": {
  “clusterTime”:时间戳(1574484982,1),
  "签名":{
  “希”:BinData (0, " AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
  “keyId”: NumberLong (0)
  }
  },
  “operationTime”:时间戳(1574484982,1)
  }

mongdb分片原理以及分片副本集群搭建