MongoDB分片
-
<李>
在Mongodb里面存在另一种集群,就是分片技术,可以满足Mongodb数据量大量增长的需求。
李> <李>当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。李>分片的目的
高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘IO上。
解决方法:
有两个基本的方法:垂直扩展和水平扩展。
-
<李>
垂直扩展:增加更多的CPU和存储资源来扩展容量。
李> <李>水平扩展:将数据集分布在多个服务器上。水平扩展即分片李>分片结构图(图片来源于网络):
MongoDB分片群集的组成(图片来源于网络):
MongoDB分片群集的三个主要组件:
碎片:
用于存储实际的数据块,实际生产环境中一个碎片服务器角色可由几台机器组个一个复制集承担,防止主机单点故障
配置服务器:
mongod实例,存储了整个ClusterMetadata,其中包括块信息。
查询路由器:
前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
分片群集的简单部署:
实验环境:
1台路由实例(端口27017)。
1台配置实例(端口37017)。
2台碎片实例(端口47017年,47018年)。
1。配置配置服务器:
<代码> vim mongodb1.conf 端口=37017 dbpath=/数据/mongodb/mongodb1 logpath=/数据/logs/mongodb1.log logappend=true 叉=true maxConns=5000 storageEngine=mmapv1 configsvr=true #开启配置服务 mongod - f/usr/local/mongodb/bin/mongodb1.参看#开启配置实例代码>
2。配置分片服务器:
<代码> vim mongodb2.conf 端口=47017 dbpath=/数据/mongodb/mongodb2 logpath=/数据/logs/mongodb2.log logappend=true 叉=true maxConns=5000 storageEngine=mmapv1 shardsvr=true #开启分片服务 vim mongodb3.conf 端口=47018 dbpath=/数据/mongodb/mongodb3 logpath=/数据/logs/mongodb3.log logappend=true 叉=true maxConns=5000 storageEngine=mmapv1 shardsvr=true #开启分片服务 mongod - f/usr/local/mongodb/bin/mongodb2.参看#开启分片实例 mongod - f/usr/local/mongodb/bin/mongodb3.conf 代码>
3。启动路由服务器:
<代码> (root@localhost本)#。/蒙戈——端口27017——叉——logpath=/usr/地方/mongodb/bin/路线。日志——configdb 192.168.217.134:37017, chunkSize 1 2018 - 07 - 23 t14:15:28.185 + 0800 W分片(主要)运行一个分片少于3配置的集群服务器只能为测试目的,不建议做生产。 叉子进程,等到服务器准备连接。 分叉的过程:15337 子进程成功开始,父母退出代码>
4。添加分片服务器:
<代码> [root@localhost本]# mongo MongoDB shell版本:3.2.1之上 …… mongos>show dbs 配置0.031 gb mongos>sh.status() #查看分片状态 推荐- - - - - - - - -分片状态 分片版本:{ “_id”: 1、 “minCompatibleVersion”: 5 “currentVersion”: 6, “clusterId”: ObjectId (“5 b557280f9effb757fd31cdb”) } 碎片:#分片为空 活跃蒙戈: “3.2.1”:1 平衡器: 目前启用:是的 当前运行:不 最后5次失败均衡器轮:0 过去24小时内迁移的结果: 没有最近的迁移 数据库: mongos>sh.addShard(192.168.217.134:47017) #添加分片 {“shardAdded”:“shard0000”、“ok”: 1} mongos>sh.addShard (“192.168.217.134:47018”) {“shardAdded”:“shard0001”、“ok”: 1} mongos>sh.status() #查看分片状态 推荐- - - - - - - - -分片状态 分片版本:{ “_id”: 1、 “minCompatibleVersion”: 5 “currentVersion”: 6, “clusterId”: ObjectId (“5 b557280f9effb757fd31cdb”) } 碎片:#分片信息 {" _id ":“shard0000”、“主机”:“192.168.217.134:47017”} {" _id ":“shard0001”、“主机”:“192.168.217.134:47018”} 活跃蒙戈: “3.2.1”:1 平衡器: 目前启用:是的 当前运行:不 最后5次失败均衡器轮:0 过去24小时内迁移的结果: 没有最近的迁移 数据库:大数据MongoDB 3.2.1分片