MongoDB高可用部署
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,规划部署情况如下:1、准备基础环境在网上下载mongodb-linux-x86_64-rhel62-3.4.2.gz放到各个服务器上,解压后放在对应的目录下,然后在根目录下新建data文件夹统一用于存
千家信息网最后更新 2025年01月20日MongoDB高可用部署
规划部署情况如下:
1、准备基础环境
在网上下载mongodb-linux-x86_64-rhel62-3.4.2.gz放到各个服务器上,解压后放在对应的目录下,然后在根目录下新建data文件夹统一用于存放数据和配置信息。
2、搭建配置集群243-244-245
在mongo的根目录下新建start脚本,内容如下
bin/./mongod --dbpath data/ --logpath data/mongo.log --configsvr --fork --port 20243 --replSet config
其中 configsvr表示配置服务,fork表示后台启动,replSet表示集群,config表示集群名字
同样在其他配置服务上也建立对应的start启动文件,记得修改端口哦。
启动-3台都启动
./start
随便进入一台机器,进入mongo,运行如下命令
>config = { _id:"config", configsvr:true, members:[ {_id:0,host:'172.16.13.243:20243'}, {_id:1,host:'172.16.13.244:20244'}, {_id:2,host:'172.16.13.245:20245'} ] }{"_id" : "config","configsvr" : true,"members" : [{"_id" : 0,"host" : "172.16.13.243:20243"},{"_id" : 1,"host" : "172.16.13.244:20244"},{"_id" : 2,"host" : "172.16.13.245:20245"}]}> rs.initiate(config){ "ok" : 1 }
查看集群状态
config:PRIMARY> rs.status();{"set" : "config","date" : ISODate("2017-04-12T09:29:51.889Z"),"myState" : 1,"term" : NumberLong(1),"configsvr" : true,"heartbeatIntervalMillis" : NumberLong(2000),"optimes" : {"lastCommittedOpTime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"readConcernMajorityOpTime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"appliedOpTime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"durableOpTime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)}},"members" : [{"_id" : 0,"name" : "172.16.13.243:20243","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 621,"optime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2017-04-12T09:29:42Z"),"infoMessage" : "could not find member to sync from","electionTime" : Timestamp(1491989360, 1),"electionDate" : ISODate("2017-04-12T09:29:20Z"),"configVersion" : 1,"self" : true},{"_id" : 1,"name" : "172.16.13.244:20244","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 42,"optime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDurable" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2017-04-12T09:29:42Z"),"optimeDurableDate" : ISODate("2017-04-12T09:29:42Z"),"lastHeartbeat" : ISODate("2017-04-12T09:29:50.238Z"),"lastHeartbeatRecv" : ISODate("2017-04-12T09:29:51.467Z"),"pingMs" : NumberLong(0),"syncingTo" : "172.16.13.243:20243","configVersion" : 1},{"_id" : 2,"name" : "172.16.13.245:20245","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 42,"optime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDurable" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2017-04-12T09:29:42Z"),"optimeDurableDate" : ISODate("2017-04-12T09:29:42Z"),"lastHeartbeat" : ISODate("2017-04-12T09:29:50.237Z"),"lastHeartbeatRecv" : ISODate("2017-04-12T09:29:51.537Z"),"pingMs" : NumberLong(0),"syncingTo" : "172.16.13.243:20243","configVersion" : 1}],"ok" : 1}
3、搭建分片集群246-247
在246机器的mongo的根目录下新建start脚本,内容如下
[root@localhost mongodb-32246]# cat start bin/./mongod --dbpath data/ --logpath data/mongo.log --fork --port 32246 --replSet 246 --shardsvr
replSet代表集群,shardsvr代表分片,246代表集群的名字,在246的其他mongo目录下也建立对应的start脚本,记得修改端口,启动脚本。
运行如下命令
config = {... _id:'246',... members:[... {_id:0,host:'172.16.13.246:30246'},... {_id:1,host:'172.16.13.246:31246'},... {_id:2,host:'172.16.13.246:32246'}... ]... }{"_id" : "246","members" : [{"_id" : 0,"host" : "172.16.13.246:30246"},{"_id" : 1,"host" : "172.16.13.246:31246"},{"_id" : 2,"host" : "172.16.13.246:32246"}]}> rs.initiate(config){ "ok" : 1 }
查看集群状态
这里不在列出,同样的操作在247上执行一次,记得修改集群名字
4、搭建mongos
在241的mongos根目录下建立start脚本
[root@localhost mongodb-3.4.2]# cat start bin/./mongos --logpath data/mongo.log --fork --configdb config/172.16.13.243:20243,172.16.13.244:20244,172.16.13.245:20245
进入mongos的命令界面,
添加分片
mongos> sh.addShard("246/172.16.13.246:30246,172.16.13.246:31246,172.16.13.246:32246"){ "shardAdded" : "246", "ok" : 1 }mongos> sh.addShard("247/172.16.13.247:30247,172.16.13.247:31247,172.16.13.247:32247"){ "shardAdded" : "247", "ok" : 1 }
在242上也运行上述命令。
设置test.aj表根据_id字段按照hash方式分配数据
mongos> sh.enableSharding("test"){ "ok" : 1 }mongos> sh.shardCollection("test.aj", { _id: 'hashed'}){ "collectionsharded" : "test.aj", "ok" : 1 }
5、插入数据
for (var id = 1; id <= 10000; id++) db.aj.save({ "_class" : "java.util.HashMap", "CAh" : "123", "CCbrXm" : "wangchy", "valid" : 0, "fydm" : "2400", "CAjmc" : "ptest", "CCbr" : "ptest", "WCreateTime" : ISODate("2015-10-13T18:29:06.649Z")});
6、验证结果
246主节点验证数据量
246:PRIMARY> db.aj.count();5082
246子节点验证数据量
246:SECONDARY> use testswitched to db test246:SECONDARY> db.getMongo().setSlaveOk();246:SECONDARY> db.aj.count();5082
247重复上述操作
247:PRIMARY> db.aj.count();4918247:SECONDARY> use test;switched to db test247:SECONDARY> db.getMongo().setSlaveOk();247:SECONDARY> db.aj.count();4918
集群
数据
脚本
命令
根目录
配置
代表
名字
服务
运行
验证
内容
文件
机器
状态
目录
端口
节点
信息
后台
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳前端软件开发哪家专业
武汉港深西子网络技术
秋光之月服务器
网络安全专业必须课程
东京奥运会女篮数据库
浑源智能化网络安全创新服务
mqtt协议和服务器建立连接
uc网盘显示苹果服务器
当下软件开发的主流技术
企业贯彻网络安全法
网络安全遴选面试
江苏通用软件开发销售价格
5g网络安全 股票
互联网科技创新应用案例
互联网时代领先科技
什么软件开发集体经济学
广东网络安全相关培训线上学习
数据库软件投标技术方案
数据库系统概率(第5版)
网络安全演讲稿的格式
上海管理软件开发商
摩奇软件开发有限公司
软件开发南昌大专学校
2n2222a数据库
学校数据库实习报告
网页下拉框数据库数据库数据
国家使用什么网络安全保护制服
什么软件开发集体经济学
服务器hdd如何亮灯
公司服务器运行软件