设置MongoDB副本集分为4个步骤

介绍

在详细介绍配置MongoDB副本集之前,让我简要介绍一下它们:

  • 副本集是Mongodb数据库提供的功能,可实现高可用性和自动故障转移。
  • 它是一种传统的主从配置,但具有自动故障转移功能。
  • 基本上,它是mongod实例的组/集群,它们进行通信,相互复制以提供高可用性并进行自动故障转移
  • 基本上,副本集中至少存在2个,最多可以存在12个mongod实例
  • 在副本集中,存在以下类型的服务器。 首先,一台服务器始终是主要服务器。
    • Primary:存储数据,所有写/读操作均从任何客户端进行到该服务器。
  • 它提供了自动故障转移功能,这意味着它无需人工干预即可将另一台服务器设置为主服务器,并且具有内部机制来选举新的主服务器。
  • 在副本集中,如果主服务器由于网络错误而停机,或者副本集中的其他服务器无法访问主服务器或主服务器无响应,则由所有服务器在内部触发选举机制以选举新的主服务器,并且这是非常自动的。

在本文中,我将通过4个简单的步骤向您展示3个成员/节点群集副本集的配置。 在此副本集配置中,我们将创建两台数据服务器,其中一台将为主服务器,另一台为辅助服务器,而另一台非仲裁服务器。 因此,让我们继续按照以下4个步骤配置副本:

步骤1:设置副本集的每个实例

正如我在上一篇文章中讨论的那样,使用以下信息创建和设置3个新的mongodb服务器实例实例,但不要启动这些服务器实例:

  • 服务器1
port = 27017

directory path =<dir path>\ rs1

E.g.directory structure :  I:\workspace\mongo\rs1\bin
  • 服务器2
port = 26017

directory path =<dir path>\ rs2

E.g.directory structure  I:\workspace\mongo\rs2\bin
  • 服务器3
port = 25017

directory path =<dir path>\ rs2

E.g.directory structure  I:\workspace\mongo\rs3\bin

步骤2:修改mongodb.conf以包含副本集信息

编辑每个服务器的mongod.conf以包括以下属性:

  • replSet =副本集的唯一名称,赋予所有成员
  • rest =为管理网页启用休息界面

您可以为副本集指定任何名称,但请确保所有成员名称相同。 继续给你想要的名字。 在这里,我使用的是“ damon”

例如,将以下内容附加到mongod.conf文件中

replSet=damon
rest=true

第三步:启动所有服务器

完成必要的配置后,继续以任意顺序启动服务器

rs1 >> mongod -f \rs1\mongod.conf
rs2 >> mongod -f \rs2\mongod.conf
rs3 >> mongod -f \rs3\mongod.conf

步骤4:配置服务器以包含在副本集中

现在,所有服务器都已启动,但它们没有相互连接。 换句话说,它们不是副本集的一部分。 因此,为此,我们需要执行以下操作。 同样,我们将创建两个数据服务器,即一个主服务器,另一个辅助服务器和一个仲裁服务器。 现在,使用MongoDB二进制文件中提供的mongo shell连接到任何一台服务器。

这里。 让我们使用mongodb shell连接到服务器rs1

rs1 > /rs1/bin/mongo.exe --port 27017

之后,您将得到提示,请输入mongo shell,如下图所示:

png; base645e9fd8342dd15fa1

对于副本配置,mongo shell提供了预定义的对象rs,该对象包含以下用于配置的功能:

  • initiate() =>在当前服务器中创建副本集配置
  • status() =>给出服务器所属的副本集的当前状态
  • add(serverInfo) =>在副本集中添加新服务器(作为参数提供)。
  • addArb(serverInfo) =>用于在副本集中添加仲裁器的专用功能

首先,我们需要在其中一台服务器中创建副本集配置。 在mongo shell中执行以下命令:

> rs.initiate()

之后,您会在提示符下看到以下内容:

png; base64838a3d5dc722c104

这将在本地为此服务器创建必要的副本集信息,并且您会注意到提示从初始的'>'变为'damon:STARTUP2>' ,这表明<replicaSetName:服务器的状态>

您可以在shell提示符下输入rs.status()来检查副本集中有多少台服务器:

png; base642ef0ef96d4cc2826

如您所见,我们在副本集中仅添加了一个服务器,它是当前服务器,其状态为“主要”。

检查副本中成员的其他方法是使用浏览器地址栏中的以下URL http:// : / _replSet。 在我们的情况下,http:// localhost:28017 / _replSet
注意,这需要在配置文件中启用rest = true(并且我们已经做到了!)。 这是检查副本集中服务器状态的首选方法。

png; base648c9b0542e15ba78

现在,我们在副本服务器中添加了一个服务器,让我们添加其余服务器。

对于add()addArb()方法,我们将提供包含<machine / host-name>的字符串参数:<port-no-of-server>

(请注意,如果要使用计算机名,请在dos或bash shell中使用hostname命令)

rs.add(“<machine/host-name>:26017”)

png; base6451a8e8144fb9bf78

rs.addArb(“<machine/host-name>:25017”)

png; base6471cda960ad51ffc4

让我们检查是否使用rs.status()命令添加了节点/成员:

png; base64bc2381387562ac74

或使用基于浏览器的:

png; base64281be3bd5613c0e2

在这里,我们配置了3节点副本集MongoDB数据库集群。 尽管此信息可以应用于配置任何编号。 副本集中节点的数量。


翻译自: https://www.javacodegeeks.com/2013/07/setup-mongodb-replica-set-in-4-steps.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值