MongoDB副本集Primary-Secondary切换实验

2014-11-24 17:57:33 · 作者: · 浏览: 12

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