MongoDB分片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB分片相关的知识,希望对你有一定的参考价值。
一、什么是分片
高数据量和吞吐量的数据库应用会对单机的性能造成较大的压力,大的查询量会将单机的CPU耗尽,大的数数量对单机的存储眼里较大,最终会耗尽系统的内存二将压力转移到磁盘IO上。
MongoDB分片技术可以满足多个服务器存储数据的方法,一直吃巨大的数据储存和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储数据或不足以提供可接受的读写吞吐量是,我们就可以通过在多台服务器上分割数据,使得数据库系统能存储和处理更多的数据。
二、MongoDB分片的优势。
分片以应对高吞吐量与大数据提供了方法。
1.使用分片减少了每个分片需要处理的请求数,因此,通过水平扩展,群集可以提高自己的存储容量和吞吐量。比如,当插入一条数据时,应用只需要访问存储这条数据的分片。
2.使用分片极少了每个分片存储的数据。
分片的优势在于提供类似线性增长的架构,提高数据可用性,提高大型数据库查询服务器的性能。当MongoDB单点数据库服务器存储成为瓶颈、单点数据库服务器的性能成为瓶颈或者需要部署大型应用充分利用内存时,可以使用分片技术。
三、MongoDB分片群集的这一次各部分
MongoDB分片群集主要有三分主要组件:
1.Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shardserver角色可以有几台服务器组成一个Replica Set承担,防止主机单点故障。
2.Config Server:配置服务器,储存了整个分片群集的配置信息,其中包括chunk信息。
3.Routers:前端路由,客户端由此接入,且让整个群集看上去像一个单一数据库,前端应用可以透明使用。
四、部署MongoDB分片群集。
下面介绍在一台物理服务器上部署一个简单结构的MongoDB分片群集。其具体配置如下:
1台路由实例(端口27017)。
1台配置实例(端口37017)。
2台Shard实例(端口47017,47018,47019)。
所使用的MongoDB包链接: https://pan.baidu.com/s/1qWVdLkhGT1sCEZVAM0-5Lw 密码: gycd
1.安装MongoDB
把解压下来的MongoDB包修改名字并放到/usr/local下
给MongoDB的命令建立软链接
建立MongoDB日志存位置和数据存放位置。
当MongoDB处于频繁访问的状态,如果shell启动进程所占用的资源设置较低,将会产生错误导致无法连接MongoDB实例。需要设置ulimit -n和ulimit -u的值大于20000。
2.部署配置服务器
当某节点内存不足时,从其他节点分配内存
启动配置服务器
3.配置分片服务器
复制一份分片服务器,并开启2台分片服务器
4.启动路由服务器
指定连接入口27017,并指定日志存储位置,并指定给配置服务器37017处理
5.添加分片服务器
直接使用mongo进入路由服务器,通过shardAdded命令添加分片服务器。
为了实现分片需要创建数据,这里直接使用for添加50000条数据
使用sh.status()查看分片状态。这里我们看到并没有开启分片
可以使用sh.enableSharding("school")来开启数据库分片,但是并没有开启表分片
首先需要创建一个索引
开启表分片
6.添加删除分片服务器
首先再创建一个分片服务器。在使用shardAdded命令添加分片服务器。使用sh.status()查看分片状态。
删除分片服务器
以上是关于MongoDB分片的主要内容,如果未能解决你的问题,请参考以下文章