MongoDB复制集搭建

最近在学习mongodb,看文档时看到复制集这块觉得挺有意思,于是便动手搭建了一下mongodb复制集
mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据,这里最好是有两台服务器一主一从最好,但是本人电脑比较渣,所以就用一台虚拟机使用不同端口来模拟多台服务器
实验准备:
mongodb安装的4.03版本,虚拟机用的是VMware,三个端口分别是:
127.0.0.1:27017 主节点
127.0.0.1:27018 从节点
127.0.0.1:27019 仲裁节点 不存储数据,只是负责通过心跳包来确认集群中集合的数量,并在主服务器选举的时候作为仲裁决定结果
1.为不同节点创建不同的db文件夹
MongoDB复制集搭建
2.启动三个节点
我这边是使用xshell连接的虚拟机,并开启三个窗口

./mongod --port 27017 --dbpath=/data/db --replSet rs0
./mongod --port 27018 --dbpath=/data/db2 --replSet rs0
./mongod --port 27019 --dbpath=/data/db3 --replSet rs0

3.连接主节点,并启动副本集
我这边之前已经初始化一次了,所以提示already initialized
MongoDB复制集搭建
MongoDB复制集搭建
4.添加从节点,仲裁节点
MongoDB复制集搭建
输入 rs.status()可以看到添加成功
MongoDB复制集搭建
MongoDB复制集搭建
5.测试复制集secondary节点数据复制功能
在主节点创建一个user集合并插入一条数据
MongoDB复制集搭建
连接从节点看看是否复制成功
MongoDB复制集搭建
出现如下错误是正常的,因为SECONDARY是不允许读写的,输入下面语句即可解决
SECONDARY> rs.slaveOk();
MongoDB复制集搭建
开始测试如下
MongoDB复制集搭建
可以看到同步成功
6.测试复制集主从节点故障转移功能
关闭主节点
MongoDB复制集搭建
在从节点上查看可以发现27018从从节点变成了主节点
MongoDB复制集搭建
MongoDB复制集搭建
这时候如果重启127.0.0.1:27017,该节点就会变成27018的从节点