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
节点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"},
]})
重新连接各节点,可以查看主从角色:
也可通过rs.status()命令查看主从角色状态
4. 测试数据复制
在主节点10001端口插入数据:
在副本节点查看
发现是不能在副本节点进行查看数据操作的,这一点区别于主从复制(Master-Slave)架构
5. 模拟主-副本切换
当前主节点是10001端口进程
杀死主节点进程,模拟主节点故障
[root@bakdbserver slave]# kill -9 15940
再登录一副本节点
可以看到,主节点已经转换为副本3上,即10003端口节点
登录副本三10003端口:
可以看到之前数据是已经同步过来。
5. 重新启动故障节点1
删除节点1之前数据
重新启动
查看节点1状态