MongoDB高可用部署
admin
2023-01-26 07:01:43
0次

规划部署情况如下:

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 test
switched to db test
246:SECONDARY> db.getMongo().setSlaveOk();
246:SECONDARY> db.aj.count();
5082

247重复上述操作

247:PRIMARY> db.aj.count();
4918
247:SECONDARY> use test;
switched to db test
247:SECONDARY> db.getMongo().setSlaveOk();
247:SECONDARY> db.aj.count();
4918



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...