复制集 和 普通的mongo主从集群有区别吗?
- 复制集,当集群中的主节点宕机了,会自动进行投票选举新的主节点。普通集群不行。
- 复制集,可以进行读写分离,分散服务器的压力
官网推荐使用复制集替换主从的集群模式
参考:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html
环境:
服务器:192.168.146.129 一台,创建3个mongo服务
按照自己的喜好设置路径
启动服务:
./mongod --fork --dbpath /data/mongoreplset/repl1/data --logpath /data/mongoreplset/repl1/log/mongo.log --journal --storageEngine=mmapv1 --replSet repset
./mongod --fork --port 27012 --dbpath /data/mongoreplset/repl2/data --logpath /data/mongoreplset/repl2/log/mongo.log --journal --storageEngine=mmapv1 --replSet repset
./mongod --fork --port 27013 --dbpath /data/mongoreplset/repl3/data --logpath /data/mongoreplset/repl3/log/mongo.log --journal --storageEngine=mmapv1 --replSet repset
任意一台机器登陆,初始化配置
config = { _id:"repset", members:[
... {_id:0,host:"192.168.146.129:27017"},
... {_id:1,host:"192.168.146.129:27012"},
... {_id:2,host:"192.168.146.129:27013"}]
... }
执行
rs.initiate(config);
查看输出结果,哪台机器属于primary和second
rs.status();
登陆到primary机器,运行mongo,插入一条数据,3台服务器成功完成 数据的复制
当3台机器中的主节点挂掉后
2个从服务器会进行投票选举
可以看日志:
注意,
- 在启动客户端时候禁用./mongo,而是使用./mongo 192.168.146.129:27012(primary节点的地址)