MongoDB 3.6(五)搭建副本集

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yamadeee/article/details/79746154

一概述

副本集是一组保持相同数据集的mongod实例。 副本集包含多个数据承载节点和可选的一个仲裁节点。 在数据承载节点中,只有一个成员被认为是主节点,而其他节点被认为是次节点。
主设备接受所有的写操作,从设备可以接受读操作但是需要设置rs.slaveOk()。主机的所有改变数据集的操作都会被记录在oplog中

这里写图片描述
从机复制主设备上的oplog日志并执行相应操作以保证数据和主机最终一致
这里写图片描述
主机和副本集中的其他成员超过10秒钟没有联系(心跳检测),有选举资格的从机就会举行一次选举并选举自己为新的主设备。举行选举并获得大多数成员投票的第一名从设备成为主设备
这里写图片描述

二搭建副本集

mongodb建议副本集中有三个及以上的节点。下面是在一台电脑上配置的。

1.创建配置文件。config1.conf,config.conf ,config2.conf
dbpath=
logpath=
port=
bind_ip=
replSet=
  • replSet:副本集名称,标识一个副本集。同一个集群中的replSet相同
  • port:端口号,默认27017
  • bind_ip:默认127.0.0.1,该mongodb服务器部署的系统ip地址
  • dbpath: 数据库文件存放位置
  • logpath: 日志文件的存放位置
2.启动mongod服务端

使用配置文件启动mongod 实例,-f conPath 或者 --config conPath,根据三个配置文件依次启动三个服务器

mongod -f D:\mongodb\config.conf
mongod --config D:\mongodb\confif.conf
3.客户端连接
mongo --port 27000
4.初始化副本集

副本集中的各个节点需要互相感知。在已建立连接的客户端窗口,初始化副本集

config={"_id": repSetName,
		"members":[
			{"_id": num,"host":"serverHost:port"},{}
		]
	}
	
rs.initiate(config)
  • members: 副本集中所有的mongod成员的信息。
  • _id :副本集的标识,与配置文件中replSet名称对应。

初始化副本集后,再进行操作会发现前缀已经改变了。 replSetName:SECONDARY 说明连接的mongodb服务器时从设备 或 replSetName:PROMARY 连接的服务器是主设备
mongodb会使用默认的算法选举出主设备,其他为从设备。mongoDB 最多支持7个可参与选举的成员

5.副本集的一些操作
rs.status()   //查看成员的运行状态等信息

rs.config()    //查看配置信息

rs.slaveOk()  //允许在SECONDARY节点上进行查询操作,默认从节点不具有查询功能

rs.isMaster()  //查询该节点是否是主节点

rs.add({})   //添加新的节点到该副本集中

rs.remove()   //从副本集中删除节点

更多的命令可以使用rs.help()查询

三副本集添加节点

现在我们原有的三个服务器的基础上再添加一个。

1.查找主设备并连接

rs.isMaster()

这里写图片描述
从设备是不具有添加成员权限的所以应该先查找主设备,从上面可以看到主设备是127.0.0.1:27022。

mongo --port 27022   //连接主设备
2.添加成员
rs.add("127.0.0.1:27033") //添加了一个使用27033端口的服务器

这里写图片描述

3.启动服务器
mongod -f D:\mongodb\config3.conf //改配置文件和其他的基本一致
4.连接服务器
mongo --port 27033
展开阅读全文

没有更多推荐了,返回首页