mongodb集群的搭建(1主2从,或1主3从,一个从隐身)--03

基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB) Paxos(mysql MGR 用的是变种))
如果发生主库宕机,复制集内部会进行投票选举,
选择一个新的主库替代原有主库对外提供服务。
同时复制集会自动通知客户端程序,主库已经发生切换了。应用就会连接到新的主库。

1. 环境描述与准备(多实例的实现方式)

在这里插入图片描述

因为选主不是我们可以决定的,所以端口号可以根据自己的需求来

跟多主机的步骤一样
端口

28017 28018 28019 28020

单节点的安装:
https://blog.csdn.net/ncnhhm/article/details/121488513?spm=1001.2014.3001.5501
目录的创建

su - mongod 
mkdir -p /mongodb/28017/conf /mongodb/28017/data /mongodb/28017/log
mkdir -p /mongodb/28018/conf /mongodb/28018/data /mongodb/28018/log
mkdir -p /mongodb/28019/conf /mongodb/28019/data /mongodb/28019/log
mkdir -p /mongodb/28020/conf /mongodb/28020/data /mongodb/28020/log

配置文件

cat > /mongodb/28017/conf/mongod.conf <<EOF
systemLog:
  destination: file
  path: /mongodb/28017/log/mongodb.log
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: /mongodb/28017/data
  directoryPerDB: true
  #engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
processManagement:
  fork: true
net:
  bindIp: 192.168.80.51,127.0.0.1
  port: 28017
replication:
  oplogSizeMB: 2048
  replSetName: my_repl
EOF

#engine: wiredTiger 存储引擎,类似于innodb
注意: replSetName: my_repl 的my.repl需要与集群配置的

config = {_id: 'my_repl', members: [
                          {_id: 0, host: '192.168.80.51:28017'},
                          {_id: 1, host: '192.168.80.51:28018'},
                          {_id: 2, host: '192.168.80.51:28019'}]}  

my_repl一样,可以自己取名字

\cp  /mongodb/28017/conf/mongod.conf  /mongodb/28018/conf/
\cp  /mongodb/28017/conf/mongod.conf  /mongodb/28019/conf/
\cp  /mongodb/28017/conf/mongod.conf  /mongodb/28020/conf/

sed 's#28017#28018#g' /mongodb/28018/conf/mongod.conf -i
sed 's#28017#28019#g' /mongodb/28019/conf/mongod.conf -i
sed 's#28017#28020#g' /mongodb/28020/conf/mongod.conf -i

启动多实例

mongod -f /mongodb/28017/conf/mongod.conf
mongod -f /mongodb/28018/conf/mongod.conf
mongod -f /mongodb/28019/conf/mongod.conf
mongod -f /mongodb/28020/conf/mongod.conf
netstat -lnp|grep 280

2. 主从复制的配置

2.1 1主2从,从库普通配置

在这里插入图片描述

mongo --port 28017 admin
config = {_id: 'my_repl', members: [
                          {_id: 0, host: '192.168.80.51:28017'},
                          {_id: 1, host: '192.168.80.51:28018'},
                          {_id: 2, host: '192.168.80.51:28019'}]}    
		  
rs.initiate(config) 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看集群的状态

rs.status();

集群的配置信息

rs.conf()

在这里插入图片描述

rs.status()

在这里插入图片描述

2.2 1主1从1个arditer

在这里插入图片描述

这个是不能同时与1主2从混用的,需要单独的使用一套,或者把第一套的关系删除

mongo -port 28017 admin
config = {_id: 'my_repl', members: [
                          {_id: 0, host: '192.168.80.51:28017'},
                          {_id: 1, host: '192.168.80.51:28018'},
                          {_id: 2, host: '192.168.80.51:28019',"arbiterOnly":true}]
          }                
rs.initiate(config) 

假若我们的集群已经配置1主2从正常的,可以先删除掉一个节点,在添加为arbiter节点
登录到主节点

mongo --port 28017 admin 
rs.remove("192.168.80.51:28019")
rs.addArb("192.168.80.51:28019")

这样即可完成配置

2.3 集群的管理操作

主节点进行操作 admin库

集群状态的查看

查看整体复制集状态
rs.status();

查看当前是否是主节点
rs.isMaster(); 

查看复制集配置信息
rs.conf();

添加删除节点

删除一个节点
rs.remove("ip:port");

新增
rs.add("ip:port");

新增仲裁节点
rs.addArb("ip:port");

2.4 特殊的从节点

在这里插入图片描述

arbiter节点:主要负责选主过程中的投票,但是不存储任何数据,也不提供任何服务
hidden节点:隐藏节点,不参与选主,也不对外提供服务。
delay节点:延时节点,数据落后于主库一段时间,因为数据是延时的,也不应该提供服务或参与选主,所以通常会配合hidden(隐藏)
一般情况下会将delay+hidden一起配置使用

添加一台从库

mongo --port 28017 admin
rs.add("192.168.80.51:20820")
rs.conf()

在这里插入图片描述

配置

cfg=rs.conf() 
cfg.members[3].priority=0
cfg.members[3].hidden=true
cfg.members[3].slaveDelay=120
rs.reconfig(cfg) 

解释
cfg.members[2].priority=0  不参与选举
cfg.members[2].hidden=true   隐藏节点,不对外提供服务
cfg.members[2].slaveDelay=120  延时120秒

[2]的下标是es.conf(),从0开始数,不是从1,也不是根据_id

在这里插入图片描述
在这里插入图片描述

取消配置

cfg=rs.conf() 
cfg.members[3].priority=1
cfg.members[3].hidden=false
cfg.members[3].slaveDelay=0
rs.reconfig(cfg)    

查看:

rs.conf();

副本切换:

--副本集角色切换(不要人为随便操作)
admin> rs.stepDown()
注:
admin> rs.freeze(300) //锁定从,使其不会转变成主库
freeze()和stepDown单位都是秒。

2.5 设置副本(从)节点可读

登录副本节点

rs.slaveOk()

查看副本节点(监控主从延时)

admin> rs.printSlaveReplicationInfo()

my_repl:PRIMARY> rs.printSlaveReplicationInfo()
source: 192.168.80.51:28018
	syncedTo: Tue Nov 23 2021 21:36:52 GMT+0800 (CST)
	0 secs (0 hrs) behind the primary 
source: 192.168.80.51:28019
	syncedTo: Tue Nov 23 2021 21:36:52 GMT+0800 (CST)
	0 secs (0 hrs) behind the primary 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
搭建MongoDB集群,你可以选择单机版、副本集群或分片集群。在Java开发中,代码本身没有任何区别,区别只在于application.yml的配置。 首先,对于单机版,你只需要配置一个MongoDB实例即可。配置文件中的uri字段指定连接地址,例如:mongodb://192.168.***.***:27017/testdb。 其次,副本集群是由多个MongoDB实例组成的,并且数据会自动复制到其他实例。配置文件中的uri字段指定多个实例的连接地址,例如:mongodb://192.168.***.***:27027,192.168.***.***:27028,192.168.***.***:27029/testdb。 最后,分片集群是由多个分片组成的,每个分片都包含了数据的子集。配置文件中的uri字段指定多个分片的连接地址,例如:mongodb://192.168.***.***:27071,192.168.***.***:27072,192.168.***.***:27073/testdb。在分片集群中,还需要配置路由服务(mongos)。 在安装MongoDB时,你可以使用提供的安装包和工具包。解压安装包和工具包后,将工具包中的bin目录下的各个可执行文件(如bsondump、mongodump等)复制到MongoDB的安装目录下的bin目录中。 通过以上步骤,你就可以搭建MongoDB集群了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MongoDB集群搭建](https://blog.csdn.net/qq_55106682/article/details/122135750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Mongodb集群搭建](https://blog.csdn.net/qq_21333693/article/details/128968829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安有故里y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值