五、mongodb 使用SECONDARY数据恢复故障节点

一、集群信息
主机名称IP地址系统版本集群模式集群角色
mongodb01192.168.86.11CentOS Linux release 7.7.1908replicationPRIMARY
mongodb02192.168.86.12CentOS Linux release 7.7.1908replicationSECONDARY
mongodb04192.168.86.14CentOS Linux release 7.7.1908replicationSECONDARY
二、数据准备

1、基础数据准备

mongo 192.168.86.11:27017
use duanshuaixing-mongodb-test
for(i=1; i<=500000;i++){ db.user.insert( {name:'mytest'+i, age:i} ) }

查询数据条数 db.user.count()

2、基础数据准备完成后停掉192.168.86.14节点并删除数据目录

ssh 192.168.86.14
systemctl stop mongod.service
rm -rf /var/lib/mongo
三、节点恢复场景验证,测试1

1、查看集群状态并再次插入数据

mongo 192.168.86.11:27017
use admin
rs.status()
			"_id" : 3,
			"name" : "192.168.86.14:27017",
			"health" : 0,
			"state" : 8,
			"stateStr" : "(not reachable/healthy)",
			"uptime" : 0,
			"optime" : {
				"ts" : Timestamp(0, 0),
				"t" : NumberLong(-1)
			},
			"optimeDurable" : {
				"ts" : Timestamp(0, 0),
				"t" : NumberLong(-1)
			},


use duanshuaixing-mongodb-test1
for(i=1; i<=500000;i++){ db.user.insert( {name:'mytest1'+i, age:i} ) }

查询数据条数 db.user.count()

2、拷贝192.168.86.12的数据目录到192.168.86.14,拷贝完成启动mongo服务

ssh 192.168.86.12
scp -r /var/lib/mongo 192.168.86.14:/var/lib/

ssh 192.168.86.14
cd /var/lib/
chown -R mongod:mongod mongo
systemctl start mongod.service

测试1拷贝数据后未修改数据目录属组和属主导致mongo启动失败报错截图
在这里插入图片描述

3、恢复节点启动后,在正在插入数据场景下查看集群状态
测试1结果截图
在这里插入图片描述

结论:
1>由截图可知在数据插入场景下使用SECONDARY节点数据恢复另外一个SECONDARY节点可以正常恢复
2>被恢复的节点会同步另外一个SECONDARY数据,进行数据同步,也可能是同步PRIMARY

四、节点恢复场景验证,测试2

1、停掉192.168.86.14节点并删除数据目录

ssh 192.168.86.14
systemctl stop mongod.service
rm -rf /var/lib/mongo

2、停掉192.168.86.12节点

ssh 192.168.86.12
systemctl stop mongod.service

3、停掉2个节点后查看集群状态

mongo 192.168.86.11:27017
use admin
rs.slaveOk()
rs.status()

4、拷贝192.168.86.12的数据目录到192.168.86.14,拷贝完成启动2个 SECONDARY节点mongo服务

ssh 192.168.86.12
scp -rp /var/lib/mongo 192.168.86.14:/var/lib/
systemctl start mongod.service

ssh 192.168.86.14
cd /var/lib/
chown -R mongod:mongod mongo
systemctl start mongod.service

5、测试结论
1>mongo在在只有mongo PRIMARY节点存活状态下数据库读写功能,集群PRIMARY节点变为SECONDARY,无法写入
2>mongo 3节点挂掉2个SECONDARY再恢复集群状态,恢复1个SECONDARY后,原PRIMARY节点恢复,集群读写恢复正常,通过数据恢复的节点状态也恢复正常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值