在CentOS7上部署MongoDB分片群集
发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,概述MongoDB分片是使用多个服务器存储数据的方法,以支持巨大的数据存储和对数据进行操作。分片技术可以满足MongoDB数据量大量增长的需求,当一台MongoDB服务器不足以存储海量数据或不足以提供
千家信息网最后更新 2024年11月29日在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安全错误
数据库的锁怎样保障安全
搞软件开发公司需要什么资质
腾讯云 香港服务器
计算机网络技术本质
软件开发服务器权限配置
邯郸专网络安全答案
中药数据库建设与应用
适合学习计算机网络技术的电脑
wep服务器和浏览器进行交换
网络技术服务费摊几年
广东企业软件开发定制价格
服务器日志报表
社区为企业安全提供服务器
我的世界网易版服务器内部设施
关于网络安全的提案
ibm 存储服务器
878网络安全基础
一个软件开发需要好久
杭州麦子汇网络技术有限公司
看视频显示无法联接服务器
网络技术应用会考答案
edc数据库设计
开发软件连接数据库是要干啥
南开一百题网络技术
上海锦游网络技术
广东企业软件开发定制价格
数据库sq创建问题
网络技术应用ppt浙教版
慈溪4g串口服务器
李言 思科网络技术大赛
选择性培养基数据库