MongoDB复制集简单操作
来源:互联网 发布:易语言验证码识别源码 编辑:程序博客网 时间:2024/06/05 20:58
一、MongoDB复制集介绍
1、如下图所示有一个数据库集群,集群中有三台数据库服务器,一台活跃服务器和两台备份服务器。当活跃服务器A发生故障时,会根据权重算法从备份服务器B和C中选出B作为新的活跃服务器,而当A恢复时当成备份服务器,继续加入到整个数据库集群中工作,这就是MongoDB的副本集。
2、配置一个副本集
2.1 在npfdev1,npfdev2,npfdev3三台机器上的mongodb.conf增加配置:
replSet=kgpcReplSet, 指定了复制集的名称. 为了使用方便,我们暂时不要使用auth启动,去掉auth参数。
2.2 启动MongoDB,使用 service mongod start 命令.
2.3 然后就需要初始化复制集。进入到这三台数据库服务器中任何一个的admin数据库,执行如下图的操作来初始化复制集:这里没有设置这三台服务器的权重,MonggoDB推选活跃服务器的策略是随机的。
2.3.1 那么使用命令mongo npfdev1:27017/admin
2.3.2 初始化复制集, 运行如下命令:
db.runCommand({"replSetInitiate":{ "_id":"kgpcReplSet", "members":[ {"_id":1,"host":"npfdev1:27017"}, {"_id":2,"host":"npfdev2:27017"}, {"_id":3,"host":"npfdev3:27017"} ]}});
2.3.4 分别进入到这三台服务器的shell界面.可以发现npfdev1的服务器被推选成了活跃服务器,而其它两台就是备份服务器.
2.3.5 在活跃服务器shell中可以使用“rs.status()”来查看副本集的状态。
kgpcReplSet:PRIMARY> rs.status();{ "set" : "kgpcReplSet", "date" : ISODate("2017-05-05T13:05:29.158Z"), "myState" : 1, "term" : NumberLong(1), "heartbeatIntervalMillis" : NumberLong(2000), "members" : [ { "_id" : 1, "name" : "npfdev1:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 268, "optime" : { "ts" : Timestamp(1493989299, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2017-05-05T13:01:39Z"), "electionTime" : Timestamp(1493989298, 1), "electionDate" : ISODate("2017-05-05T13:01:38Z"), "configVersion" : 1, "self" : true }, { "_id" : 2, "name" : "npfdev2:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 240, "optime" : { "ts" : Timestamp(1493989299, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2017-05-05T13:01:39Z"), "lastHeartbeat" : ISODate("2017-05-05T13:05:28.555Z"), "lastHeartbeatRecv" : ISODate("2017-05-05T13:05:28.549Z"), "pingMs" : NumberLong(1), "syncingTo" : "npfdev1:27017", "configVersion" : 1 }, { "_id" : 3, "name" : "npfdev3:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 240, "optime" : { "ts" : Timestamp(1493989299, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2017-05-05T13:01:39Z"), "lastHeartbeat" : ISODate("2017-05-05T13:05:28.557Z"), "lastHeartbeatRecv" : ISODate("2017-05-05T13:05:28.554Z"), "pingMs" : NumberLong(0), "syncingTo" : "npfdev1:27017", "configVersion" : 1 } ], "ok" : 1}kgpcReplSet:PRIMARY>
2.3.6 复制集如下图:
复制集使用的异步同步方式,复制集成员之间每隔2s发送一次hearbeat(pings).当主节点与其它成员通信超时10s后,一个secondary节点将会被选举为primary节点.在新的版本中,如果存在多个secondary节点,当第一个节点被选举为primary后,其它的secondary节点将从它开始复制数据.
2.3.7 读写分离操作,注意:默认情况下非活跃服务器(SECONDARY)是不能进行数据库读操作的。如下图:
如果要设置SECONDARY节点也可以进行读操作,那么可以设置slaveOk参数为true。但是此属性在shell中无法完成,这个特性是被写到MongoDB的高级驱动程序中的。
参考文献
1. MongoDB 学习笔记(七):主从复制与副本集
2. mongodb-创建复制集(replSet)
- MongoDB复制集简单操作
- mongodb复制集操作步骤
- mongodb复制集的相关操作
- mongodb的主从复制操作
- MongoDB的简单操作
- MongoDB简单操作
- mongodb 简单操作
- java简单操作mongodb
- mongodb简单操作
- MongoDB简单操作指令
- mongodb的简单操作
- mongodb 简单操作
- MongoDB的简单操作
- MongoDB 简单操作
- mongoDB 简单操作
- mongodb简单 shell 操作
- mongoDB--简单操作
- mongodb简单查询操作
- 基于NIO的消息路由的实现(六)报文队列的处理
- 通用产品需求文档模板
- 如何爬虫推特数据
- 特殊进程之孤儿进程
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
- MongoDB复制集简单操作
- Kerberos原理--经典对话
- IntelliJ IDEA 2017版本的下载+破解
- Hdu ****A+B for Input-Output Practice (VIII)****
- React Native环境配置并运行
- 单应性变换后匹配
- _I ,_O ,_IO,__IO的定义与用法
- 认识jvm
- static的三种含义或作用