MongoDB副本集搭建

一、概念

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()

111030_Y8wD_1407079.png

 

四、副本集说明

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、添加选举仲裁者(不重要,尽量让节点为奇数个)

111112_ftzA_1407079.png

4、设置隐藏节点

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

111125_o0Zc_1407079.png

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

在init时设置buildIndexes:false

111142_asqS_1407079.png

6、修改config

111201_5mYg_1407079.png

转载于:https://my.oschina.net/u/1407079/blog/1586772

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值