小编给大家分享一下mongodb数据中分片的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家学习,希望大家阅读完这篇文章后大所收获、下面让我们一起去学习方法吧!
在mongodb里面存在另一种集群,就是分片技术,可以满足mongodb数据量大量增长的需求。
当mongodb存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
<强>为什么使用分片强>
复制所有的写入操作到主节点;
延迟的敏感数据会在主节点查询;
单个副本集限制在12个节点;
当请求量巨大时会出现内存不足;
本地磁盘不足;
垂直扩展价格昂贵。
<强> mongodb分片强>
下图展示了在mongodb中使用分片集群结构分布:
上图中主要有如下所述三个主要组件:
碎片:用于存储实际的数据块,实际生产环境中一个碎片服务器角色可由几台机器组个一个复制集承担,防止主机单点故障。
配置服务器:mongod实例,存储了整个ClusterMetadata,其中包括块信息。
查询路由器:前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
<强>分片实例强>
分片结构端口分布如下:
Shard Server 1:27020 Shard Server  2:27021 Shard Server  3:27022 Shard Server  4:27023 Config 服务器:27100 Route 过程:40000
步骤一:启动碎片服务器
[root@100 /] #, mkdir -p /www/mongoDB/碎片/s0 [root@100 /] #, mkdir -p /www/mongoDB/碎片/s1 [root@100 /] #, mkdir -p /www/mongoDB/碎片/s2 [root@100 /] #, mkdir -p /www/mongoDB/碎片/s3 [root@100 /] #, mkdir -p /www/mongoDB/碎片/日志 [root@100 /] #,/usr/地方/mongoDB/bin/mongod ——port 27020,——dbpath=/www/mongoDB/碎片/s0 ——logpath=/www/mongoDB/碎片/日志/s0.log ——logappend ——叉 … [root@100 /] #,/usr/地方/mongoDB/bin/mongod ——port 27023,——dbpath=/www/mongoDB/碎片/s3 ——logpath=/www/mongoDB/碎片/日志/s3.log ——logappend ——叉
步骤二:启动配置服务器
[root@100 /] #, mkdir -p /www/mongoDB/碎片/配置 [root@100 /] #,/usr/地方/mongoDB/bin/mongod ——port 27100,——dbpath=/www/mongoDB/碎片/config ——logpath=/www/mongoDB/碎片/日志/config.log ——logappend ——叉
注意:这里我们完全可以像启动普通mongodb服务一样启动,不需要添加-shardsvr和configsvr参数,因为这两个参数的作用就是改变启动端口的,所以我们自行指定了端口就可以。
步骤三:启动路由过程
/usr/地方/mongodb/bin/mongos ——port 40000,——configdb localhost: 27100,——fork logpath=/www/mongodb/碎片/日志/route.log ——chunkSize 500年
蒙戈启动参数中,chunkSize这一项是用来指定块的大小的,单位是MB,默认大小为200 MB。
步骤四:配置分片
接下来,我们使用MongoDB Shell登录到蒙戈,添加碎片节点
(root@100 碎片)#,/usr/地方/MongoDB/bin/mongo admin ——port 40000 MongoDB shell 版本:2.0.7 connecting : 127.0.0.1:40000/admin mongos>, db.runCommand ({, addshard:“localhost: 27020“,}) {,“shardAdded",:,“shard0000",,“ok",:, 1,} …… mongos>, db.runCommand ({, addshard:“localhost: 27029“,}) {,“shardAdded",:,“shard0009",,“ok",:, 1,} mongos>, db.runCommand ({, enablesharding:“test",}), #设置分片存储的数据库 {,“ok",:, 1,} mongos>, db.runCommand ({, shardcollection:“test.log",,关键:,{,id: 1,时间:1}}) {,“collectionsharded",:,“test.log",,“ok",:, 1,}
步骤五:程序代码内无需太大更改,直接按照连接普通的mongo数据库那样,将数据库连接接入接口40000。
以上是mongodb数据中分片的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!