MongoDB副本集搭建

原创
2017/12/08 11:15
阅读数 176

一、概念

1、副本集就是有自动故障恢复功能的主从集群;

2、主从集群和副本集最大的区别就是副本集没有固定的主节点。

3、副本集,整个集群会选出一个主节点,当其挂掉后,又自动在剩下的从节点中选出一个主节点。

4、副本集仅仅用于数据自动备份,不能对子节点进行操作。

5、副本集至少要保证两个节点

 

二、定义副本集流程

1、创建数据和日志文件夹

在E:\mongodata创建data1、2、3和logs1、2、3

2、启动节点

(1)启动节点1(cmd下)

mongod -dbpath E:\mongodata\data1 -logpath E:\mongodata\logs1\log.txt -logappend -port 20001 -replSet cnrep

(2)启动节点2(cmd下)

mongod -dbpath E:\mongodata\data2 -logpath E:\mongodata\logs2\log.txt -logappend -port 20002 -replSet cnrep

(3)启动节点3(cmd下)

mongod -dbpath E:\mongodata\data3 -logpath E:\mongodata\logs3\log.txt -logappend -port 20003 -replSet cnrep

3、初始化节点(只能初始化一次)

随便登录一个节点,执行

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

    {_id:0, host:"127.0.0.1:20001","priority":1},

    {_id:1, host:"127.0.0.1:20002","priority":2},

    {_id:2, host:"127.0.0.1:20003","priority":3}

    ]})

注意:

上面的cntest为启动节点时所对应的–replSet cnrep;

host 为ip端口;

priority 优先级 0-100 越大越高,当主节点挂掉后,优先级最高的节点为主节点,设为0则永远不会成为主节点;

 

三、查看副本集状态及配置

rs.status()

rs.config()

 

四、副本集说明

1、客户端的读写请求都是发送到主节点执行

2、客户端不能再备份节点上进行写操作

3、默认情况下,客户端不能再备份节点读取数据,可以通过执行命令来允许读:

db.getMongo().setSlaveOk();

4、如果某个节点挂掉,在它挂掉期间的数据会在这个节点启动后自动恢复。

 

五、副本集操作

1、删除副本集节点

rs.remove("127.0.0.1:20001")

2、添加副本集节点

rs.add("127.0.0.1:20001")

如果数据量很大,添加节点需要一定时间拷贝数据到新节点,会影响网络和IO,建议在服务器压力小时执行。

3、添加选举仲裁者(不重要,尽量让节点为奇数个)

4、设置隐藏节点

只用于存数据,不执行查操作,在init时设置hidden:true

5、设置从节点不建立索引

在init时设置buildIndexes:false

6、修改config

展开阅读全文
打赏
0
0 收藏
分享
加载中
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部