MongoDB 副本集

副本集简介

所谓副本集,就是指一组服务器的集群,其中有一个主服务器,用于处理用户的请求;其余为备份服务器,用于保存主服务器的数据副本。如果主服务器崩溃了,会自动将一个备份服务器升级为新的主服务器(MongoDB内部处理),从而保证服务的进行。

MongoDB提供复制的功能,用来将数据保存到多台服务器上,在实际生产环境中,强烈建议集群并使用复制的功能,以实现故障转移和健壮服务。
创建副本集
1:先创建几个存放数据的文件夹,比如在前面的dbs下面创建db1,db2,db3;(本地测试启动多个Mongo服务,生产环境在不同服务器上启动)
同理在前面的logs下面创建logs1,logs2,logs3
2:在启动MongoDB服务器的时候,使用--replSet 副本集名称 选项,如:

./mongod --dbpath ../dbs/db1 --logpath ../logs/log1 --port 20001 --fork --replSet myrepl

(设置db的存储地方和日志存储的地方以及端口,fork为后台运行, replSet为副本集指令 myrepl为副本集名称)

3:然后再启动两个,端口分别为20002和20003,当然要修改相应的数据文件路径和日志路径,副本集名称跟上面一样
4:连接到副本集1,进行副本集的初始化
rs.initiate({_id:"myrepl",members:[
{_id:0,host:'127.0.0.1:20001'},
{_id:1,host:'127.0.0.1:20002'},
{_id:2,host:'127.0.0.1:20003'}]

})

当rs指令执行完成之后,副本集已经配置成功

5:察看副本集状态
rs.status(); 或者 rs.config(); 或者 db.printReplicationInfo();
6:几点说明:
(1)客户端的读写请求,都是发送到主节点进行操作
(2)客户端不能在备份节点上进行写请求
(3)默认情况下,客户端不能从备份节点读取数据,可以通过显示的执行如下语句来允许读:db.getMongo().setSlaveOk();
至此就创建好了副本集,可以进行使用测试了。

rs辅助函数
rs是一个全局变量,其中包含了与复制相关的辅助函数,可以通过rs.help()查看。
rs.status()说明:
rs.status函数对应的命令是replSetGetStatus,返回的信息中,主要的字段说明:
1:self:这个字段只会出现在运行rs.status函数的成员信息中
2:stateStr:服务器状态,状态选项在后面讲心跳的时候有

3:uptime:从成员可达一直到现在所经历的时间,单位是秒

4:optimeDate:每个成员的oplog中最后一个操作发生的时间。
注意:这里的状态是每个成员通过心跳报告上来的状态,所以optime跟实际时间可能会有几秒钟的偏差
5:lastHeartbeat:当前服务器最后一次收到其他成员心跳的时间,如果网络故障,或者是当前服务器比较繁忙,这个时间可能会是2秒钟之前
6:pingMs:心跳从当前服务器到达某个成员所花费的平均时间
7:errmsg:成员在心跳请求中返回的状态信息,通常是一些状态信息,而不是错误信息。
8:state:也表示服务器的状态,state是内部表示,而stateStr是适合阅读的表示
9:optime:和optimeDate也是一样的,只是optimeDate更适合阅读
10:syncingTo:表示当前成员正在从哪个成员处进行复制

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值