系统: centos stream 9
mongo版本: 7.0.12
MongoDB 是一种流行的 NoSQL 数据库,具有高可扩展性和灵活的数据模型。在分片环境中,MongoDB 由以下几个主要组件组成:
: 这是路由服务,客户端应用程序通过 mongos 连接到分片集群。mongos 负责将查询分配到适当的分片。
: 配置服务器存储了集群的元数据,包括分片的分片键和路由信息。最初的 MongoDB 版本使用三个独立的配置服务器来确保高可用性。自 MongoDB 3.4 版本起,配置服务器被集成到一个独立的复制集群中。
: 分片是实际存储数据的地方。每个分片可以是一个单独的 MongoDB 服务器或一个复制集(包含多个 MongoDB 实例以实现数据冗余和高可用性)。
关系和工作流程
:客户端应用程序通过 mongos 连接到 MongoDB 集群。mongos 充当路由器的角色,接收客户端请求。
:mongos 接收到客户端的查询请求后,会查询配置服务器以获取分片的路由信息。
:配置服务器存储了集群的元数据,如分片键和路由信息。mongos 使用这些元数据来确定哪些分片包含请求的数据。
:根据配置服务器提供的路由信息,mongos 将查询请求转发到适当的分片。
:各个分片处理请求并将结果返回给 mongos,mongos 再将合并后的结果返回给客户端。
数据分布和冗余
:每个分片存储数据的子集,并可以是一个单独的 MongoDB 实例或一个复制集。分片通过分片键将数据均匀分布到各个分片中,以实现水平扩展。
:每个分片通常是一个复制集,以确保数据的高可用性和故障恢复能力。复制集包括一个主节点和多个副本节点。主节点处理所有写操作,副本节点复制主节点的数据以提供冗余。
优势
总结来说,mongos、配置服务器和分片共同协作,使 MongoDB 能够以高效和可靠的方式处理大规模分布式数据存储和查询。
以下是所部署的服务,用三台机
172.16.0.211 |
172.16.0.212 |
172.16.0.213 |
mongos: 40000 |
mongos: 40000 |
mongos: 40000 |
config server: 30000 |
config server: 30000 |
config server: 30000 |
shard1: 27001 (primary) shard2: 27002 (secondary) shard3: 27003 (secondary) |
shard1: 27001 (secondary) shard2: 27002 (primary) shard3: 27003 (secondary) |
shard1: 27001 (secondary) shard2: 27002 (secondary) shard3: 27003 (primary) |
cat > /etc/yum.repos.d/mongodb-org-7.0.repo <
dnf -y update
dnf -y install nfs-utils
pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n mongo -l +127999 data
mkfs -t xfs -n ftype=1 /dev/data/mongo
echo "/dev/mapper/data-mongo /data xfs defaults 0 0" >> /etc/fstab
mkdir /data
mount -a
dnf install -y ntpsec
ntpdate ntp7.aliyun.com
crontab -l
0 0 * * * /usr/sbin/ntpdate ntp7.aliyun.com
dnf -y install mongodb-org
(以 /etc/mongod.conf为模板 复制 为 mongos, confid,shard1,shard2,shard3 配置文件)(后续待修改)
mkdir /data/conf
cd /data/conf/
##生成配置文件
cp /etc/mongod.conf configd.conf
cp /etc/mongod.conf mongos.conf
cp /etc/mongod.conf shard1.conf
cp /etc/mongod.conf shard2.conf
cp /etc/mongod.conf shard3.conf
mv /etc/mongod.conf /etc/mongod.conf.bak ## 原来的就不要了
##生成服務啓動文件
cp /usr/lib/systemd/system/mongod.service /usr/lib/systemd/system/configd.service
cp /usr/lib/systemd/system/mongod.service /usr/lib/systemd/system/mongos.service
cp /usr/lib/systemd/system/mongod.service /usr/lib/systemd/system/shard1.service
cp /usr/lib/systemd/system/mongod.service /usr/lib/systemd/system/shard2.service
cp /usr/lib/systemd/system/mongod.service /usr/lib/systemd/system/shard3.service
mv /usr/lib/systemd/system/mongod.servic