mongoDB在windows单机环境下配置分片及复制集

1.什么是分片:相似服务器中代理模式;python

2.什么是复制集:

经过不一样的机器保存副本用于保证数据的不会由于单点损失而丢失,
主要用于应对数据丢失,机器损坏带来的风险;同时能够提升读取能力,用户的读取服务器和写入服务器在不一样的地方,并且不一样服务器为不一样的用户提供服务,提升整个系统的负载。
3.分片的结构 数据库

4.什么是chunk:数据在shard中存储的单位
主要有两个用途:服务器

splitting:当chunk大小超过配置的chunk size,mongoDB的后台进程会把它切割成更小的chunk; 可是这个操做十分消耗IO资源spa

balancing:主要负责chunk的迁移,从而均衡各个shard server的负载;3d

5.部署复制集及分片:
(1)安装MongoDB:目录D:\Program Files\MongoDB\Server\4.0\bin
(2)建立数据目录:
data

log代理

(3)cmd进入bin目录下,建立实例,分别运行:

mongod --port 3000 --shardsvr --replSet rs-a --dbpath "E:\SQL\MongoDB\shard\data\rs-a-0" --logpath "E:\SQL\MongoDB\shard\log\rs-a-0.log"  

mongod --port 3001 --shardsvr --replSet rs-a --dbpath "E:\SQL\MongoDB\shard\data\rs-a-1" --logpath "E:\SQL\MongoDB\shard\log\rs-a-1.log"  

mongod --port 3002 --shardsvr --replSet rs-a --dbpath "E:\SQL\MongoDB\shard\data\rs-a-2" --logpath "E:\SQL\MongoDB\shard\log\rs-a-2.log"
复制代码

这里 --shardsvr要求使用分片,--replSet要是使用复制集,复制集名称为 rs-a,这是咱们便建立了包含三个复制集的一个分片,注意复制集名字要一致,同时 --logpath的参数要求是一个文件而不是目录 上面只是建立了三个能够分片和使用复制集的服务器,咱们须要对其初始化设置复制集中的primary和secondary;
(4)登陆mongos: mongo --port 3000

mongo --port 3000
rs.initiate()
rs.isMaster()
rs.status()
添加其余为slave
rs.add("localhost:3001")
rs.add("localhost:3002")
带有分片的复制集便创建完成,使用rs.status()查看信息 
复制代码

(5)配置config server复制集(MongoDB版本3.4以上必须为复制集,即mongos 要求config server是复制集而且在前面加上复制集的名称,此处配置包含2个实例的复制集)同建立复制集rs-conf:日志

mongod --port 27019 --configsvr --replSet rs-conf --dbpath "E:\SQL\MongoDB\shard\data\config0" --logpath "E:\SQL\MongoDB\shard\log\config0.log"

mongod --port 27020 --configsvr --replSet rs-conf --dbpath "E:\SQL\MongoDB\shard\data\config1" --logpath "E:\SQL\MongoDB\shard\log\config1.log"
复制代码
mongo --port 27019
rs.initiate()
rs.isMaster()
rs.status()
添加其余为slave
rs.add("localhost:27020")
使用rs.status()查看信息 
复制代码

(6)配置router server

mongos --configdb rs-conf/localhost:27019,localhost:27020 --logpath "E:\SQL\MongoDB\shard\log\mongos.log" --port 27010
复制代码

(7)登陆mongos:

mongo --port 27010

mongos> sh.addShard("rs-a/localhost:3000,localhost:3001,localhost:3002")
mongos> sh.status()
为数据库添加sharding abled
mongos> sh.enableSharding("testSharding") 
复制代码


问题:在启动mongos路由服务的时候,碰到一开就自动关闭,而后打印日志:code

发现是碰到端口占用,换了端口就能够了。 搞了一下午,原本觉得很简单的事,没想着中间碰到各种问题,有一个比较重要的就是MongoDB3.4版本以后的配置分片和3.2版本的命令都不同,主要就是须要基于复制集建立sharding
相关文章
相关标签/搜索