Mongodb集群搭建
admin
2023-01-19 04:00:04
0

共2台服务器,每台上面各一个路由,一个配置,一个分片,mongodb版本3.4


服务器1:10.2.4.214

服务器2:10.2.4.215


1.首先编写2台服务器的配置文件,并将配置文件中的路径文件夹建立好

214的路由配置文件mongodb_rout.conf:

net:
   port: 5000
   ipv6: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/route.log"
   logAppend: true
processManagement:
   fork: true
sharding:
   configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
...

214的配置配置文件mongodb_cfg.conf:

net:
   port: 5100
   ipv6: true
storage:
   dbPath: "/data/mongodb/formal_5000/data/config"
   directoryPerDB: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/config.log"
   logAppend: true
storage:
   journal:
      enabled: true
processManagement:
   fork: true
sharding:
   clusterRole: configsvr
replication:
   replSetName: rsConf
...

214的分片配置文件mongodb_s0.conf:

storage:
   dbPath: "/data/mongodb/formal_5000/data/s0"
   directoryPerDB: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/s0.log"
   logAppend: true
net:
   port: 5010
   ipv6: true
processManagement:
   fork: true
storage:
   journal:
      enabled: true
replication:
   replSetName: rsShardA
sharding:	
   clusterRole: shardsvr
...


215的路由配置文件mongodb_rout.conf:

net:
   port: 5000
   ipv6: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/route.log"
   logAppend: true
processManagement:
   fork: true
sharding:
   configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
...

215的配置配置文件mongodb_cfg.conf:

net:
   port: 5100
   ipv6: true
storage:
   dbPath: "/data/mongodb/formal_5000/data/config"
   directoryPerDB: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/config.log"
   logAppend: true
storage:
   journal:
      enabled: true
processManagement:
   fork: true
sharding:
   clusterRole: configsvr
replication:
   replSetName: rsConf
...

215的分片配置文件mongodb_s0.conf:

storage:
   dbPath: "/data/mongodb/formal_5000/data/s0"
   directoryPerDB: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/s0.log"
   logAppend: true
net:
   port: 5010
   ipv6: true
processManagement:
   fork: true
storage:
   journal:
      enabled: true
replication:
   replSetName: rsShardB
sharding:	
   clusterRole: shardsvr
...

在2台服务器上执行下面命令建立文件夹,否则mongodb无法启动

mkdir -p /data/mongodb/formal_5000/log/
mkdir -p /data/mongodb/formal_5000/data/config/
mkdir -p /data/mongodb/formal_5000/data/s0


2.启动2台配置服务,并配置成副本集

#在2台服务器上都启动配置服务
numactl --interleave=all  mongod -f /etc/mongodb/formal_5000/mongodb_cfg.conf
#进入其中一台服务进行配置
mongo --port 5100
config={_id:"rsConf",members:[
	{_id:0,host:"10.2.4.214:5100"},
	{_id:1,host:"10.2.4.215:5100"}
]}
rs.initiate(config)
#查看副本集配置是否成功
rs.status()

3.启动2台分片和路由服务,并配置

#在2台服务器上都启动分片服务
numactl --interleave=all  mongod -f /etc/mongodb/formal_5000/mongodb_s0.conf

#在2台服务器上都启动路由服务
numactl --interleave=all  mongos -f /etc/mongodb/formal_5000/mongodb_rout.conf

#进入214分片并配置分片成副本集的primary
mongo --port 5010
config={_id:"rsShardA",members:[
	{_id:0,host:"10.2.4.214:5010"}
]}
rs.initiate(config)

#进入215分片并配置分片成副本集的primary
mongo --port 5010
config={_id:"rsShardB",members:[
	{_id:0,host:"10.2.4.215:5010"}
]}
rs.initiate(config)

#进入路由并配置分片
mongo --port 5000
use admin
db.runCommand({addshard:"rsShardA/10.2.4.214:5010",name:"shard_0",maxSize:0})
db.runCommand({addshard:"rsShardB/10.2.4.215:5010",name:"shard_1",maxSize:0})
#查看分片配置情况
sh.status()

4.设置monitor_center可分片

use monitor_center
use admin
db.runCommand({enablesharding:"monitor_center"})

5.使用Studio-3T连接路由、配置和分片建立用户(这里教程省略)

6.关闭数据库

#先关路由,进入2台服务器的路由
mongo --port 5000
use admin
db.shutdownServer()
#再关分片,进入2台服务器的分片
mongo --port 5010
use admin
db.shutdownServer({force:true})
#最后关配置,进入2台服务器的配置
mongo --port 5100
use admin
db.shutdownServer()

7.将keyfile加入到2台服务器的路由、配置、分片的配置文件中的最后一行里,如下所示:

214的路由配置文件mongodb_rout.conf:


net:
   port: 5000
   ipv6: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/route.log"
   logAppend: true
processManagement:
   fork: true
sharding:
   configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
security:
   keyFile: "/data/mongodb/formal_5000/key/mongodb_key"
...

其他配置文件类似,都需要添加keyfile

#生成keyFile
mkdir -p /data/mongodb/formal_5000/key/
cd /data/mongodb/formal_5000/key
echo -e "formal mongodb keyFile" > mongodb_key
chmod 600 /data/mongodb/formal_5000/key/mongodb_key

8.最后依次启动配置、分片、路由

numactl --interleave=all  mongod -f /etc/mongodb/formal_5000/mongodb_cfg.conf
numactl --interleave=all  mongod -f /etc/mongodb/formal_5000/mongodb_s0.conf
numactl --interleave=all  mongos -f /etc/mongodb/formal_5000/mongodb_rout.conf


PS:

1.平衡器

sh.setBalancerState(true) #启动平衡器
sh.setBalancerState(false) #关闭平衡器
sh.getBalancerState() #查看平衡器的状态
sh.isBalancerRunning() #查看平衡器当前是否在运行

#设置平衡器启动时间范围,首先确保平衡器是启动状态
db.settings.update({ _id: "balancer" },{ $set: { activeWindow : { start : "21:00", stop : "08:00" } } },{ upsert: true })
#取消平衡器启动时间范围
db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })

2.建表

use monitor_center
db.createCollection("origdata_20171024") #建表
db.origdata_20171024.createIndex({ mac: 1, time: 1},{ background: true}) #建索引
use admin
db.runCommand({shardcollection:"monitor_center.origdata_20171024",key:{mac:1,time:1}}) #集合是否允许分片
db.runCommand({moveChunk:"monitor_center.origdata_20171024",bounds:[{mac:MinKey,time:MinKey},{mac:MaxKey,time:MaxKey}],to:"shard_1"}) #将集合手动移到分片1

3.表的迁移

sh.enableBalancing("monitor_center.origdata_20171024") #开启该集合的数据平衡
sh.disableBalancing("monitor_center.origdata_20171024") #关闭该集合的数据平衡
db.getSiblingDB("config").collections.findOne({_id : "monitor_center.origdata_20171024"}).noBalance #检查该集合是否启动了数据平衡


相关内容

热门资讯

伊朗称做好长期作战的准备,专家... 伊朗伊斯兰革命卫队称已做好长期战争的准备,新型武器正在研发中,尚未大规模使用。伊朗外长也表示做好应对...
特朗普要求库尔德人协助对伊朗行... 特朗普3月5号在接受采访的时候,鼓励伊拉克境内的库尔德武装越境进入伊朗。另外还有媒体报道,他还要求伊...
液晶电视背光坏了一个其他的还亮... 液晶电视在进行背光灯线路连接的时候,大多数都是采用串联的线路连接方式,如果发生了一个背光灯工作损坏,...
抽油烟机突然不工作了灯还亮 1、最大的可能就是抽烟机里面的电机出现了故障,导致不能正常的运作,或许是这台抽烟机使用的年限很长了,...
冰箱门关了里面灯还亮怎么办 可能是电压问题,需要及时检查排除冰箱电容过、压缩机故障;也可能是冰箱电容或压缩机损坏,可以更换电容或...
为什么空调关了外机还一直在转 空调关了外机一直在转的原因有几种:1、关机前排出的冷煤气还是得继续散热导致外机一直转。2控制电路部分...
为什么空调会漏水 空调漏水是一个常见的问题,特别是在高湿度环境下使用空调时。空调漏水的原因可以有多种,以下是一些可能的...
谁将出任伊朗新领导人?专家:一... 美国总统特朗普3月6日向伊朗发出“无条件投降”的最后通牒,并表示美国正寻找一位亲美以的伊朗新领导人。...
离婚可以冷静,家暴没有冷静期 “离婚冷静期发生家庭暴力该怎么办?如何能让遭遇家暴的受害者快速离婚,尽早逃离危险?”近日,全国人大代...
特朗普称亲自选定伊朗新领导人,... 美国总统特朗普3月6日向伊朗发出“无条件投降”的最后通牒,并表示美国正寻找一位亲美以的伊朗新领导人。...