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

MongoDB副本集Primary-Secondary切换实验_第1张图片



节点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"},

]})

MongoDB副本集Primary-Secondary切换实验_第2张图片




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

MongoDB副本集Primary-Secondary切换实验_第3张图片



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

MongoDB副本集Primary-Secondary切换实验_第4张图片



4. 测试数据复制

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



在副本节点查看

MongoDB副本集Primary-Secondary切换实验_第5张图片



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


5. 模拟主-副本切换

当前主节点是10001端口进程



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

[root@bakdbserver slave]# kill -9 15940


再登录一副本节点

MongoDB副本集Primary-Secondary切换实验_第6张图片




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


登录副本三10003端口:

MongoDB副本集Primary-Secondary切换实验_第7张图片



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


5. 重新启动故障节点1

删除节点1之前数据

MongoDB副本集Primary-Secondary切换实验_第8张图片



重新启动

MongoDB副本集Primary-Secondary切换实验_第9张图片



查看节点1状态

MongoDB副本集Primary-Secondary切换实验_第10张图片



你可能感兴趣的:(NoSql,MongoDB)