MongoDB 3.6搭建副本集
Posted 诛仙物语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 3.6搭建副本集相关的知识,希望对你有一定的参考价值。
一概述
副本集是一组保持相同数据集的mongod实例。 副本集包含多个数据承载节点和可选的一个仲裁节点。 在数据承载节点中,只有一个成员被认为是主节点,而其他节点被认为是次节点。
主设备接受所有的写操作,从设备可以接受读操作但是需要设置rs.slaveOk()。主机的所有改变数据集的操作都会被记录在oplog中
从机复制主设备上的oplog日志并执行相应操作以保证数据和主机最终一致
主机和副本集中的其他成员超过10秒钟没有联系(心跳检测),有选举资格的从机就会举行一次选举并选举自己为新的主设备。举行选举并获得大多数成员投票的第一名从设备成为主设备
二搭建副本集
mongodb建议副本集中有三个及以上的节点。下面是在一台电脑上配置的。
1.创建配置文件。config1.conf,config.conf ,config2.conf
dbpath=
logpath=
port=
bind_ip=
replSet=
- 1
- 2
- 3
- 4
- 5
- 6
- replSet:副本集名称,标识一个副本集。同一个集群中的replSet相同
- port:端口号,默认27017
- bind_ip:默认127.0.0.1
- dbpath: 数据库文件存放位置
- logpath: 日志文件的存放位置
2.启动mongod服务端
使用配置文件启动mongod 实例,-f conPath 或者 –config conPath,根据三个配置文件依次启动三个服务器
mongod -f D:\mongodb\config.conf
mongod --config D:\mongodb\confif.conf
- 1
- 2
- 3
3.客户端连接
mongo --port 27000
- 1
- 2
4.初始化副本集
副本集中的各个节点需要互相感知。在已建立连接的客户端窗口,初始化副本集
config={"_id": repSetName,
"members":[
{"_id": num,"host":"serverHost:port"},{}
]
}
rs.initiate(config)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- members: 副本集中所有的mongod成员的信息。
- _id :副本集的标识,与配置文件中replSet名称对应。
初始化副本集后,再进行操作会发现前缀已经改变了。 replSetName:SECONDARY 说明连接的服务器已被推选为主设备 或 replSetName:PROMARY 连接的服务器是从设备
mongodb会使用默认的算法选举出主设备,其他为从设备。mongoDB 最多支持7个可参与选举的成员
5.副本集的一些操作
rs.status() //查看成员的运行状态等信息
rs.config() //查看配置信息
rs.slaveOk() //允许在SECONDARY节点上进行查询操作,默认从节点不具有查询功能
rs.isMaster() //查询该节点是否是主节点
rs.add({}) //添加新的节点到该副本集中
rs.remove() //从副本集中删除节点
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
更多的命令可以使用rs.help()查询
三副本集添加节点
现在我们原有的三个服务器的基础上再添加一个。
1.查找主设备并连接
rs.isMaster()
- 1
- 2
从设备是不具有添加成员权限的所以应该先查找主设备,从上面可以看到主设备是127.0.0.1:27022。
mongo --port 27022 //连接主设备
- 1
- 2
2.添加用户
rs.add("127.0.0.1:27033") //添加了一个使用27033端口的服务器
- 1
- 2
3.启动服务器
mongod -f D:\mongodb\config3.conf //改配置文件和其他的基本一致
- 1
- 2
4.连接服务器
mongo --port 27033
以上是关于MongoDB 3.6搭建副本集的主要内容,如果未能解决你的问题,请参考以下文章
mongodb副本集介绍mongodb副本集搭建mongodb副本集测试