mongodb集群数据同步及故障演练

在上一篇我们简单搭建了mongodb的副本集模式的集群,这一篇我们来模拟一下数如何在集群实现同步的,并简单演示一下集群故障及自动恢复的场景,

1、启动集群,三个节点做同样的操作
在这里插入图片描述

2、启动成功后,进入某一个节点的bin目录下,
mongodb集群数据同步及故障演练_第1张图片

3、分别执行如下命令,

use admin;
cfg={ _id:"repset",members:[{_id:0,host:'192.168.111.133:27017'},{_id:1,host:'192.168.9.147:27017'},{_id:2,host:'192.168.111.134:27017'}]};

看到下面的提示表示初始化成功,
mongodb集群数据同步及故障演练_第2张图片

rs.initiate(cfg);
mongodb集群数据同步及故障演练_第3张图片

查看集群的状态,从提示信息可以看到各个节点的身份信息,

rs.initiate(cfg);
mongodb集群数据同步及故障演练_第4张图片

关于上述集群的状态解释,大家可以参考如下解释,

STARTUP:刚加入到复制集中,配置还未加载
STARTUP2:配置已加载完,初始化状态
RECOVERING:正在恢复,不适用读
ARBITER: 仲裁者
DOWN:节点不可到达
UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构
REMOVED:移除复制集
ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态
FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步
PRIMARY:主节点
SECONDARY:备份节点

有一些伙伴启动之后,三个状态如果一开始都是startup的可能是集群的信息还没有初始化完毕,需要稍等一会儿,

4、在主节点插入一条数据,然后去从节点看看数据是否完成了同步的操作,

use congge;
db.congge.insert({“name”:“jike”});
db.find();

执行上述命令后,在主节点成功插入了一条数据,
mongodb集群数据同步及故障演练_第5张图片

5、我们去备份节点看看是否有数据,

./mongo
use congge

进入客户端后,如果直接在congge这个table下执行 db.congge.find()会报错的,默认情况下,从节点只同步数据,不提供读写,所以需要赋权,
mongodb集群数据同步及故障演练_第6张图片
在客户端模式下执行,rs.slaveOk()即可,然后再查找刚刚在主节点写入的数据就有了,
mongodb集群数据同步及故障演练_第7张图片

6、这时候我们断掉主节点,
mongodb集群数据同步及故障演练_第8张图片

再看其他的两个节点,节点3已经自动提升为主节点
mongodb集群数据同步及故障演练_第9张图片

再启动原来的master节点,该节点自动加入并成为一个副本节点,
mongodb集群数据同步及故障演练_第10张图片
本篇的整合到这里就结束了,主要还需要大家自己亲自操作一下才能体会更深,最后感谢观看!

你可能感兴趣的:(mongodb,mongodb集群数据同步,mongodb集群故障)