千家信息网

MongoDB高可用部署

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,规划部署情况如下:1、准备基础环境在网上下载mongodb-linux-x86_64-rhel62-3.4.2.gz放到各个服务器上,解压后放在对应的目录下,然后在根目录下新建data文件夹统一用于存
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 新华互联网科技学校 南京欣网互联网科技 多迪互联网科技有限公司 恒生科技互联网指数分析 互联网公司会议桌创意科技软装饰 互联网科技商业 哈尔滨屹滨互联网科技有限公司 乌苏新华互联网科技做什么的 广州新华互联网科技学校电竞方面 西安小鹰速贷互联网科技有限公司 明优互联网科技有限公司 南博望互联网科技有限公司 四川互联网展示科技馆设计 互联网科技手机排行榜 互联网科技平台产品运营 广西科技产业互联网是什么 科技互联网经济论坛 互联网科技博主张洲 互联网科技创新创业项目 互联网科技大会大佬 互联网科技海报 互联网科技战争 互联网养老 桔豆科技 新华互联网科技校企合作 以后互联网后是啥科技 荆州市昕露互联网络科技有限公司 996高科技互联网公司 区块链结合互联网科技 广州梦谷互联网科技有限公司领导 互联网领先科技活动
0