在CentOS7上部署MongoDB分片群集
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,概述MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供
千家信息网最后更新 2025年02月02日在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/mongod
2)启动配置服务器
[root@localhost bin]# mongod -f mongodb1.conf
4.配置分片服务器
[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=true
1)启动mongodb2、mongodb3
[root@localhost bin]#mongod -f mongodb2.conf[root@localhost bin]#mongod -f mongodb3.conf
5.启动路由服务器
[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 exiting
6.启用分片服务器
[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安全错误
数据库的锁怎样保障安全
怎么样打开电脑网络安全连接
我的世界可以氪金的服务器推荐
数据库技术 国产数据库
网络技术在其他课程应用
服务器电源管理接口
浪潮服务器的产地
服务器管理学是么
我想看网络安全手抄报文章
珠海家政软件开发收费
慕课网三星软件开发云
肇庆通讯软件开发直销价
重庆办公系统软件开发大概多少钱
服务器行业销售模式如何改变
许昌网络技术质量
加强网络安全的监管
网络安全相关知识讲座
成都苹果软件开发多少钱
游戏所有服务器合并
构建新时代网络安全体系
日语数据库
广州正规软件开发机构
网络安全自我保护招数儿歌
geo公共数据库
数据库外键查询
服务器管理学是么
学软件开发的女生人多不多
数据库访问技术是
XW网络安全保障
720n打印机服务器下载
流行的数据库技术都是什么