在CentOS7上部署MongoDB分片群集
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,概述MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供
千家信息网最后更新 2026年10月31日在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安全错误
数据库的锁怎样保障安全
互联网科技公司
中关村互联网 科技集团
今日互联网科技
工业互联网科技新基建
朗新科技与工业互联网
北京互联网科技有限公司
易互联网科技有限公司
深圳互联网络科技有限公司
以房互联网科技
致骋互联网科技
互联网科技网站
互联网 新科技
苏州铭阳互联网科技有限公司
开一家科技互联网公司需要多少钱
恒生互联网科技业指数调整周期
互联网科技融合创新
广西科技产业互联网是什么
玉溪新华互联网科技怎么选
互联网科技和医药行业
银川新华互联网科技学校招聘
网络科技有限互联网
科技创新互联网企业
撒么互联网科技公司
晓花互联网科技有限公司网址
移动互联网年度科技创新
互联网金融科技展
威龙国际互联网科技公司
厦门江牛科技互联网
米泉互联网科技专业怎么样
10位科技互联网大佬