MongoDB分片集

本文详细介绍了MongoDB分片集的配置过程,包括配置服务器、路由服务器(mongos)、分片服务器的搭建,以及如何进行数据库分片、设置片键。通过实例展示了在3台CentOS7.6服务器上建立2个分片集的操作,同时讨论了环境准备、系统参数设置和安全配置。最后,文章提到了分片效果的验证和客户端工具robo3T的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:
三台CentOS7.6 最小安装,禁用SeLinux。
MongoDB 4.X:各版本下载列表:https://www.mongodb.org/dl/linux/x86_64

数据分片访问示意图:
数据分片访问示意图
分片中的角色,有三种:
① 配置服务器。是一个独立的mongod进程,保存集群和分片的元数据,即各分片包含了哪些数据的信息。最先开始建立,启用日志功能。像启动普通的mongod一样启动配置服务器,指定configsvr选项。
不需要太多的空间和资源,配置服务器的1KB空间相当于真实数据的200MB,保存的只是数据的分布表。当服务不可用,则变成只读,无法分块、迁移数据。
② 路由服务器。即mongos,起到一个路由的功能,供程序连接。本身不保存数据,在启动时从配置服务器加载集群信息,开启mongos进程需要知道配置服务器的地址,指定configdb选项。
③ 分片服务器。是一个独立普通的mongod进程,保存数据信息。可以是一个副本集也可以是单独的一台服务器。

分片是以什么来分的?
1)以数据库来分,把数据库里的多个集合分到不同的分片上,同一个集合的数据只能在同一分片上。
2)以某个集合中的某个键来分,这个键称为片键,根据设置的片键把一个集合的数据分到不同的片上,这个分片键可以是多个键的组合键。

实际的生产环境
在一个实际的生产环境中会同时存在多个配置服务器,多个mongos路由进程,多个分片,每一个分片会是一个副本集。如下图所示:
生产环境部署图
因为config服务器、mongos路由进程和仲裁进程占用的资源非常少,所以可以通过不同的端口,把它们配置到同一台服务器上,一般是一台服务器上配置一个config服务器、一个路由进程、一个仲裁进程就够,如果是多个在同一台服务器,就成了单点故障。
最常见的做法是将mongos 实例和应用服务器部署在同一环境下,当然也可以将mongos 实例和分片节点放在一起,或者用专门的资源来运行它。

环境准备
受限于条件,本文用3台虚拟机实现2个分片集的搭建:
部署表格图
关闭SeLinux与防火墙:
$ systemctl disable firewalld && systemctl stop firewalld
$ sed -i ‘s/^SELINUX=.*/SELINUX=disabled/’ /etc/selinux/config
$ setenforce 0
配置时区与时间同步:
$ timedatectl set-timezone Asia/Shanghai
CentOS7默认已安装chrony服务,将之启用即可:
$ systemctl enable chronyd && systemctl start chronyd

系统参数设置:
MongoDB推荐关闭大内存页面,即设置transparent_hugepage=never:
$ grep GRUB_CMDLINE_LINUX /etc/default/grub
GRUB_CMDLINE_LINUX=“crashkernel=auto rhgb quiet transparent_hugepage=never”
$ grub2-mkconfig -o /boot/grub2/grub.cfg
$ shutdown -r now

安装mongodb:
$ wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-rhel70-v4.0-latest.tgz
下载后解压,将二进制文件复制到/usr/local/mongodb,然后创建mongod用户,并设置/usr/local/mongodb的所有者为mongod。

或YUM安装:

$ cat > /etc/yum.repos.d/mongodb-org-4.0.repo <<EOF
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7Server/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF

这里可以修改 gpgcheck=0, 省去gpg验证。
$ yum makecache
$ yum install -y mongodb-org
以上在每台服务器上都要做,接下来分别部署config服务器和db分片集。

部署config服务器
以下除非特别说明,都是在第一台服务器(10.3.8.235)上执行部署操作。

配置到其余两台的ssh免密登录:
$ cd ~
$ ssh-keyen
$ ssh-copy-id 10.3.8.236
$ ssh-copy-id 10.3.8.237

生成server之间的认证key文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值