MongoDB之可复制集群(新主从复制)

版权声明:本文为博主原创文章,转正请注明出处。 https://blog.csdn.net/sinat_32366329/article/details/82632905

MongoDB之可复制集群(主从复制)

简介

         复制是跨多个MongoDB服务器分布和维护数据的方法。MongoDB可以把数据从一个节点复制到其它节点并在修改时进行同步。这种类型的复制通过一个叫可复制集的机制提供。集群中的节点配置为自动同步数据,并且在服务器出错时自动灾备。MongoDB提供了主从复制,但是已经过时了,现在主要通过复制集实现。

         可复制集群在主从复制的基础上增加了自动化灾备机制:如果主节点出问题,无论什么原因,其中一个从节点会自动提升为主节点。

 

为什么选择复制集群而不是主从复制

         主从复制是MongoDB最早使用的复制方式。这中方式容易配置,并且可以支持任意数量的从节点服务器。但是主从复制的灾备完全靠人工。如果主节点发生故障失败了,管理员必须关闭一个从服务器,然后将其配置为主节点重新启动。然后应用程序必须重新配置连接新的主节点。下面介绍的可复制集群是可以根据心跳判断主节点故障,然后在从节点中选区一个节点作为主节点的。

安装----windows系统

首先将data/log/mongodb-3.6.6-6.1复制3份,分别命名。我们部署的集群一个主节点,一个从节点,一个裁判节点(用户主节点挂了的时候,在从节点中选举一个为主节点)。

         注意:data内部还有一个db文件夹,记得创建

  1. 进入对于的bin目录下,使用以下命令启动3个MongoDB数据库服务器

节点一,使用40000端口启动

mongod --dbpath D:\mongodb\data-node1\db --logpath D:\mongodb\log-node1\mongodb.log --replSet myapp --port 40000

 

节点二,使用40001端口启动

mongod --dbpath D:\mongodb\data-node2\db --logpath D:\mongodb\log-node2\mongodb.log --replSet myapp --port 40001

 

裁判节点,使用40002端口启动

mongod --dbpath D:\mongodb\data-arbiter\db --logpath D:\mongodb\log-arbiter\mongodb.log --replSet myapp --port 40002

 

参数说明:

dbpath参数:指定存储数据的文件位置

logpath参数:指定MongoDB的日志输出位置

replSet参数:指定归类

port参数:指定启动使用的端口

 

  1. 连接40000端口服务器,通过这个服务器使用命令创建集群

进入mongodb-node1/bin目录下执行下面的命令

  1. 通过rs.initiate()查看服务器情况

 

  1. 通过命令增加从节点和裁判节点,组成集群

 

  1. 查看集群情况,开头的myapp:PRIMARY表示当前服务器(40000)是myapp的主节点

 

  1. 查看集群的更加详情情况,rs.status()

 

  1. 存储数据,在40000中存储,创建bookstore数据库,插入数据

 

8)在40001端口服务器中使用一样的数据库查询,注意rs.slaveOk()命令,这个表明允许从节点中执行读取操作,如果在40001中查询到数据,表明从40000主节点中插入的数据,复制到了40001从节点

 

  1. 关闭40000主节点,测试40001从节点是否会成为主节点,注意上一步40001开头myapp:SECONDARY表示是第二,就是从的意思。

 

10)在40001从节点中执行rs.status()命令,发现40000已经不健康,同时40001的stateStr已经变为PRIMARY主节点。

 

11)再次登录40000端口服务器,发现是从节点了

 

12)在从节点插入数据,提示不可以控制,集群中插入数据只能在主节点插入。但是查询数据如果授权了(rs.salveOk()),就可以查询。一般是主节点写入,从节点查询数据。

猜你喜欢

转载自blog.csdn.net/sinat_32366329/article/details/82632905