帮助中心/最新通知

质量为本、客户为根、勇于拼搏、务实创新

< 返回文章列表

【服务器相关】详解MongoDB4.0构建分布式分片群集

发表时间:2025-06-16 03:46:00 小编:主机乐-Yutio

MongoDB分片简述

高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的 CPU 耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘 IO 上。

MongoDB 分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足 MongoDB 数据量大量增长的需求,当一台 MongoDB 服务器不足以存储海量数据或不足以提供可接受的读写吞吐量时,我们就可以通过在多台服务器上分割数据,使得数据库系统能存储和处理更多的数据。

MongoDB分片优势

分片为应对高吞吐量与大数据量提供了方法:

  1. 使用分片减少了每个分片需要处理的请求数,因此,通过水平扩展,群集可以提高自己的存储容量。比如,当插入一条数据时,应用只需要访问存储这条数据的分片。
  2. 使用分片减少了每个分片村存储的数据。

分片的优势在于提供类似线性增长的架构,提高数据可用性,提高大型数据库查询服务器的性能。当MongoDB单点数据库服务器存储成为瓶颈、单点数据库服务器的性能成为瓶颈或需要部署大型应用以充分利用内存时,可以使用分片技术。

MongoDB分片群集的组成

MongoDB分片群集主要有如下三个组件:

  • Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server 角色可以由几台服务器组成一个Peplica Set 承担,防止主机单点故障。
  • Config Server:配置服务器,存储了整个分片群集的配置信息,其中包括chunk信息。
  • Routers:前端路由,客户端由此接入,且让整个群集看上去像单一数据库,前端应用可以透明使用。

系统环境

系统:CentOS 7.4 x86_64

软件版本:4.0

关闭防火墙及selinux

IP地址路由服务器(Routers)配置服务器(Config Server)Shard1Shard2Shard3
192.168.125.1192701727018270012700227003
192.168.125.1202701727018270012700227003
192.168.125.1212701727018270012700227003

部署分片群集

三台物理服务器安装及配置

1、下载解压MongoDB

部署配置服务器(三台物理服务器配置步骤相同)

1、写入配置文件,我们可以用scp命令把配置文件发到其他两台物理服务器

部署分片服务器

编辑shard{1,2,3}.conf配置文件,端口分别为27001,27002,27003,设置shardsvr=true,启动分片服务器

部署路由服务器

创建配置文件,将配置文件发送到其他物理服务器。注意,路由服务器不需要存储数据目录

启动分片功能实现分片功能

设置分片chunk大小


mongos> use config
mongos> db.settings.save({“_id”:”chunksize”,”value”:1})
# 设置块大小为1M是方便实验,不然需要插入海量数据

模拟写入数据


mongos> use school
mongos> show collections
mongos> for(i=1;i<=50000;i++){db.user.insert({“id”:i,”name”:”jack”+i})}
# 在school库的user表中循环写入五万条数据

启动数据库分片


mongos>sh.enableSharding(“school”)
# 我们可以自定义需要分片的库或表

为school库中的user集合创建索引,然后对表进行分片


mongos> db.user.createIndex({“id”:1})
# 以”id”作为索引
mongos> sh.shardCollection(“school.user”,{“id”:1})
# 根据”id”对user表进行分片
mongos> sh.status()
# 查看分片情况
mongos> sh.help()
# 查看分片相关的命令

本篇文章到此结束,如果您有相关技术方面疑问可以联系我们技术人员远程解决,感谢大家支持本站!


联系我们
返回顶部