mongodb 简单分片配置(windows)
分片,简单来说就是将海量数据做水平扩展的数据库集群系统,通过多台服务器分配数据。
使用分片技术的根本原因在于垂直扩展数据库的费用过于昂贵并且有扩展上限;其次水平扩展可以提供更好的性能,单个服务器的配置可以不是很高并且磁盘IO的压力相对来说更小。
1、使用分片之前要先了解一下基本的术语:
- chunk
mongodb的数据分块称为chunk,每个chunk都是collection中一段连续的数据记录,通常是200MB,超出则生成新的数据库。
- shard server
存储实际数据的分片,每个shard可以是一个mongod实例或者是一组Replica Set。
- config server
存储数据时,需要为每个collection指定一个shard key,shard key决定collection的哪条数据属于哪个chunk。config server就是用来存储所有shard节点的配置信息、每个chunk的shard key范围、chunk在各shard的分布情况、集群中所有DB和collection的sharding配置信息。
- route process
前端路由,给客户端访问。通过访问前端路由询问config server需要到哪个shard上查询或保存数据,再连接相应的shard进行操作,然后将操作结果返回给客户端。
2、分片配置准备
测试过程中,发现4.0版本只支持Replica Set的分片,不支持单一的mongodb实例,因此换用3.2版本的进行测试。

博主将使用windows,mongodb3.2版本,在本地环境操作一下分片配置。mongodb下载地址可访问这个地址:https://www.mongodb.com/try/download
3、具体操作
地址端口设置
shard server:127.0.0.1:27018、127.0.0.1:27019
config server:127.0.0.1:27020
route server:127.0.0.1:27017
在bin目录中打开cmd窗口,分别执行下面4个命令,启动mongod实例
shard :mongod -port 27018 -shardsvr -dbpath=E:\mongo3.2\data\db1 -directoryperdb
mongod -port 27019 -shardsvr -dbpath=E:\mongo3.2\data\db2 -directoryperdb
config:mongod -port 27020 -configsvr -dbpath=E:\mongo3.2\data\config -directoryperdb
route:mongos -port 27017 --configdb 127.0.0.1:27020
在启动完成之后,登录上27017端口,将shard节点添加进来,注:要使用admin数据库

查看所有的shard server可知2个shard都已经添加进来了

添加进来以后,则可以对想要进行分片的collection进行分片设置,在这里我对test数据库的layne 表进行分片,选用_id作为分片的shard key。

查看layne表的状态可以看到,分片功能已经被打开了。此处就不过多校验分片数据的存储情况了,感兴趣的可以用for循环批量插入数据进行校验。
4、总结
简单分片的配置基本就结束了,大致上是使用config server对shard进行管理,根据情况新增shard。访问的时候使用route process配置config server并访问数据库
最后以layne表为例,贴一些常用的分片命令:
db.layne.stat() //查看表的实际运行情况
db.runCommand({listshards:1}) //列出所有的shard server
db.runCommand({addshard:"IP:port"}) //新增shard节点
db.runCommand({removeshard:"IP:port"}) //移除shard节点
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)