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分片原理以及分片副本集群搭建