在CentOS7上部署MongoDB分片群集
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,概述MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供
千家信息网最后更新 2025年11月07日在CentOS7上部署MongoDB分片群集
概述
MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供可接受的读写吞吐量时,我们就可以在多台服务器上分割数据,使得数据库系统能存储和处理更多的数据。
MongoDB分片群集的组成
- Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台服务器组成一个Replica Set承担,防止主机单点故障。
- Config Server:配置服务器,存储了整个分片群集的配置信息,其中包括chunk信息。
- Routers:路由器,客户端由此接入,且让整个群集看上去像单一数据库,前端应用可以透明使用。
部署MongoDB分片群集
实验环境:
- 1台路由实例(端口27017)
- 1台配置实例(端口37017)
- 2台shard实例(端口47017,47018)
1.安装MongoDB3.2
[root@localhost ~]# yum install openssl-devel -y[root@localhost tomcat]# tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt/2.创建4个实例
[root@localhost opt]# mkdir -p /data/mongodb/mongodb{1,2,3,4}[root@localhost mongodb]# mkdir logs[root@localhost mongodb]# touch logs/mongodb{1,2,3,4}.log[root@localhost logs]# chmod -R 777 *.log[root@localhost logs]# ulimit -n 25000 //最大进程数//[root@localhost logs]# ulimit -u 25000 //最大文件数//3.部署配置服务器
[root@localhost bin]# vim mongodb1.confport=37017dbpath=/data/mongodb/mongodb1logpath=/data/mongodb/logs/mongodb1.loglogappend=truefork=truemaxConns=5000storageEngine=mmapv1configsvr=true~ 1)某节点内存不足时,从其他节点分配内存
[root@localhost bin]# sysctl -w vm.zone_reclaim_mode=0 //内核参数为0的话,那么系统会倾向于从其他节点分配内存//[root@localhost bin]# echo never > /sys/kernel/mm/transparent_hugepage/enabled[root@localhost bin]# echo never > /sys/kernel/mm/transparent_hugepage/defrag[root@localhost bin]# ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo[root@localhost bin]# ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod2)启动配置服务器
[root@localhost bin]# mongod -f mongodb1.conf4.配置分片服务器
[root@localhost bin]# vim mongodb2.conf port=47017dbpath=/data/mongodb/mongodb2logpath=/data/mongodb/logs/mongodb2.loglogappend=truefork=truemaxConns=5000storageEngine=mmapv1shardsvr=true[root@localhost bin]# vim mongodb3.conf port=47018dbpath=/data/mongodb/mongodb3logpath=/data/mongodb/logs/mongodb3.loglogappend=truefork=truemaxConns=5000storageEngine=mmapv1shardsvr=true1)启动mongodb2、mongodb3
[root@localhost bin]#mongod -f mongodb2.conf[root@localhost bin]#mongod -f mongodb3.conf5.启动路由服务器
[root@localhost bin]# ./mongos --port 27017 --fork --logpath=/usr/local/mongodb/bin/route.log --configdb 192.168.126.141:37017 --chunkSize 1************显示*******************************************2018-07-18T09:21:53.507+0800 W SHARDING [main] Running a sharded cluster with fewer than 3 config servers should only be done for testing purposes and is not recommended for production.about to fork child process, waiting until server is ready for connections.forked process: 3580child process started successfully, parent exiting6.启用分片服务器
[root@localhost bin]# mongomongos> show dbsconfig 0.031GBmongos> sh.status() //#shards下为空,没有分片服务器//mongos> sh.addShard("192.168.126.204:47017")mongos> sh.addShard("192.168.126.204:47018")mongos> sh.status()shards: { "_id" : "shard0000", "host" : "192.168.126.141:47017" } { "_id" : "shard0001", "host" : "192.168.126.141:47018" }1)创建Kgc数据库,创建users集合并且插入100000条数据
mongos> use kgcmongos> db.createCollection('users')mongos> for(var i=1;i<=100000;i++)db.users.insert({"id":1,"name":"jack"+i})mongos> db.users.find(){ "_id" : ObjectId("5b4e9b580f25d0730817aea1"), "id" : 1, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b580f25d0730817aea2"), "id" : 2, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b580f25d0730817aea3"), "id" : 3, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b580f25d0730817aea4"), "id" : 4, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b590f25d0730817aea5"), "id" : 5, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b590f25d0730817aea6"), "id" : 6, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b590f25d0730817aea7"), "id" : 7, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b590f25d0730817aea8"), "id" : 8, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b590f25d0730817aea9"), "id" : 9, "name" : "jack1" }{ "_id" : ObjectId("5b4e9b590f25d0730817aeaa"), "id" : 10, "name" : "jack1" }..........//省略//7.实现分片功能
[root@localhost bin]# ./mongoimport -d kgc -c users --file /opt/testdb.txtmongos> show dbsconfig 0.031GBkgc 0.078GBmongos> use kgcswitched to db kgcmongos> show tablessystem.indexesusersmongos> sh.status() //查看数据库分片信息// databases: { "_id" : "kgc", "primary" : "shard0000", "partitioned" : false } //数据库尚未分片//1)启用数据库分片
mongos> sh.enableSharding("kgc") //启用数据库分片//mongos> sh.status()databases: { "_id" : "kgc", "primary" : "shard0000", "partitioned" : true }mongos> db.users.createIndex({"id":1}) //对users表创建索引//mongos> sh.shardCollection("kgc.users",{"id":1}) //表分片//mongos> sh.status() shards: { "_id" : "shard0000", "host" : "192.168.126.141:47017" } { "_id" : "shard0001", "host" : "192.168.126.141:47018" }
数据
服务器
服务
数据库
存储
配置
实例
信息
内存
端口
节点
路由
最大
实际
环境
系统
分配
巨大
主机
件数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库原理与技术中的粒度
华为服务器网卡型号
软件开发项目报价模板
YMS软件开发工程师
网络安全手抄报2年级
龙井网络安全宣传周
怎么投诉网页里的服务器
吉林网络技术服务共同合作
e5服务器装虚拟机好用吗
仓管软件开发
管理终端怎么登录服务器
我的世界国际电脑版服务器ip
社区网络安全发言材料
吉县服务器属于哪
数据库可以创建查询吗
绩溪现代软件开发服务代理品牌
攻防数据库被登陆扣几分
服务器硬盘需要分区吗
足球数据库技术
软件开发跟软件销售的税率
数据库常用的 语句大全
英语软件开发图片
域名服务器的四种不同类型
diy 微型服务器
utm网络安全教程
学好网络技术能干什么
万利家庭游戏机提示数据库错误
连云港购物软件开发
管理系统连接不到数据库
计算机网络技术人工智能应用