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

猜你喜欢

转载自www.cnblogs.com/xc1234/p/9026480.html