一、前言
在当下的互联网时代,数据的处理已经成为了一个极为重要的领域。而在数据处理中,MongoDB数据库得到了广泛的应用。对于MongoDB数据库而言,分片集群是提高数据存储、查询效率的重要手段之一。本文将详细介绍如何在CentOS 8中搭建MongoDB4.4分片集群,帮助读者实现MongoDB数据库的分片集群维护和优化。
二、分片集群概述
MongoDB的分片集群是一种高效的数据存储方式,它可以将数据分散到多个服务器上进行存储和处理,解决了单体MongoDB承载数据和请求量过大的问题。通过将数据分散到多台服务器上,不仅可以提高数据读写的效率,还可以增强系统的可扩展性和容错性。
1.分片集群组成
MongoDB分片集群由三部分组成:路由节点(mongos)、分片服务器(shard)和配置服务器(configsrv)。它们之间的关系如下图所示:
2.分片集群工作流程
MongoDB按照一定的规则将数据分散到多台机器上进行存储,当应用程序向MongoDB请求数据时,数据请求首先会发送到路由节点。路由节点会根据数据的分片键将请求转发到相应的分片服务器上进行处理,最后将结果返回给应用程序。这个过程如下图所示:
三、CentOS 8搭建MongoDB4.4分片集群
1.环境准备
在CentOS 8服务器上搭建MongoDB4.4分片集群前,首先需要准备一些必要的环境。
(1)关闭SELinux和防火墙
MongoDB在运行过程中需要访问网络和磁盘等资源,所以需要关闭SELinux和防火墙。执行以下命令进行关闭:
systemctl stop firewalld #停止firewalld服务
systemctl disable firewalld #禁用firewalld服务
setenforce 0 #关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久关闭selinux
(2)安装必要的软件包
使用yum命令安装必要的依赖包:gcc、g++、perl、pkgconfig、numactl、wget、tar、make。
yum update -y
yum install gcc g++ perl pkgconfig numactl wget tar make -y
(3)安装MongoDB4.4
使用以下命令下载并安装MongoDB4.4:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.4.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.4.tgz -C /usr/local/
mv mongodb-linux-x86_64-rhel70-4.4.4/ mongodb
2. MongoDB分片集群搭建
(1)搭建配置服务器
MongoDB分片集群需要使用单独的配置服务器来管理集群的元数据信息。配置服务器中会存储分片服务器的IP和端口信息等,并协调集群内各服务之间的数据流动。在配置服务器中使用三个节点实现高可用,即每个节点包含完整的配置信息,任意两个节点出现故障,都能够保证服务的正常运行。在此,我们使用三个节点作为配置服务器来进行搭建。
在三台服务器上分别创建/data/mongodb/config/目录来存储配置服务器的数据,然后分别启动三个配置服务器。
配置服务器的启动方式如下:
/usr/local/mongodb/bin/mongod --configsvr --dbpath=/data/mongodb/config --port=27019 --replSet=rsconfig --bind_ip=0.0.0.0
/usr/local/mongodb/bin/mongod --configsvr --dbpath=/data/mongodb/config --port=27020 --replSet=rsconfig --bind_ip=0.0.0.0
/usr/local/mongodb/bin/mongod --configsvr --dbpath=/data/mongodb/config --port=27021 --replSet=rsconfig --bind_ip=0.0.0.0
然后在其中一个节点上开启MongoDB客户端,执行以下命令配置副本集,并在其他两个节点上执行相同的命令加入副本集。
mongod --host 127.0.0.1:27019
#配置节点
rs.initiate()
rs.add("IP:27020")
rs.add("IP:27021")
以此完成配置服务器的启动和搭建。
(2)搭建分片服务器
分片服务器是MongoDB分片集群中主要的数据存储位置,可以将数据分散到多个分片服务器上进行存储。在分片服务器搭建中,我们可以采用VirtualBox创建多台虚拟机的方式进行测试。在测试虚拟机上分别启动分片服务器。
启动分片服务器的方式如下:
/usr/local/mongodb/bin/mongod --shardsvr --dbpath=/data/mongodb/shard1 --port=27017 --bind_ip=0.0.0.0
/usr/local/mongodb/bin/mongod --shardsvr --dbpath=/data/mongodb/shard2 --port=27018 --bind_ip=0.0.0.0
说明:
–shardsrv:指定启动的是分片服务器。
–dbpath:指定分片服务器使用的数据文件目录。
–port:指定分片服务器的监听端口。
–bind_ip:指定绑定的IP地址。
(3)创建路由节点
路由节点是MongoDB分片集群的入口,所有的数据操作请求都会通过路由节点进行转发。由于路由节点本身不存储数据,因此路由节点可以使用单台机器,实现分布式的方式来提高服务的可用性。在此,我们使用一台服务器来搭建路由节点。
启动路由节点的方式如下:
/usr/local/mongodb/bin/mongos --configdb rsconfig/127.0.0.1:27019,127.0.0.1:27020,127.0.0.1:27021 --port=27016 --bind_ip=0.0.0.0
说明:
–port:指定路由节点的监听端口。
–bind_ip:指定绑定的IP地址。
–configdb:指定路由节点要使用的配置服务器的地址。
在这一步中,路由节点已经成功启动,但此时route节点并不能分发数据,因为我们还没有添加分片服务器。
(4)将分片服务器加入路由节点
将分片服务器加入路由节点是实现MongoDB分片集群的关键步骤。在此,我们以分片键为foo进行分片。具体操作步骤如下:
在路由节点上登录MongoDB客户端,执行以下命令来添加分片服务器。
sh.addShard("IP:27017")
sh.addShard("IP:27018")
执行以下命令来为数据库分片。
sh.enableSharding("testdb")
sh.shardCollection("testdb.testtable",{"foo":1})
最后,就能够在应用程序中访问分片集群MongoDB了。
四、总结
本文介绍了在CentOS 8上搭建MongoDB4.4分片集群的步骤和方法。通过分片集群可以将数据分散到多台服务器上进行存储和处理,大大提高了数据的读写效率和数据的容错性。在实际应用中,读者可以根据需要和实际情况来灵活搭配,以达到最佳的使用效果。