MongoDB副本集Primary-Secondary切换实验


MongoDB副本集Primary-Secondary切换实验

1.创建副本节目录

[root@bakdbserver ~]# mkdir -p/var/lib/mongo/dbs/node1

[root@bakdbserver~]# mkdir -p /var/lib/mongo/dbs/node2

[root@bakdbserver~]# mkdir -p /var/lib/mongo/dbs/node3

2.启动副本集

节点1:

[root@bakdbserver ~]# mongod --dbpath /var/lib/mongo/dbs/node1 --port 10001--nojournal --replSet blort

image016.png

 

节点2、3:

mongod --dbpath /var/lib/mongo/dbs/node2--port 10002 --nojournal --replSet blort

mongod --dbpath /var/lib/mongo/dbs/node3--port 10003 --nojournal --replSet blort

3.初始化副本集

rs.initiate({"_id" :"blort","members" : [

{"_id" : 1,"host" :"bakdbserver:10001"},

{"_id" : 2,"host" :"bakdbserver:10002"},

{"_id" : 3,"host" :"bakdbserver:10003"},

]})

image018.png

 

重新连接各节点,可以查看主从角色:

image020.png

 

也可通过rs.status()命令查看主从角色状态

image022.png

 

4.测试数据复制

在主节点10001端口插入数据:

image024.png

 

在副本节点查看

image026.png

 

发现是不能在副本节点进行查看数据操作的,这一点区别于主从复制(Master-Slave)架构



5.模拟主-副本切换

当前主节点是10001端口进程

image028.png

 

杀死主节点进程,模拟主节点故障

[root@bakdbserver slave]# kill -9 15940

再登录一副本节点

image030.png

 

image032.png

 

可以看到,主节点已经转换为副本3上,即10003端口节点

登录副本三10003端口:

image034.png

 

可以看到之前数据是已经同步过来。

5.重新启动故障节点1

删除节点1之前数据

image036.png

 

重新启动

image038.png

 

查看节点1状态

image040.png

相关内容