Mongodb 作为副本集

我们将创建 mongodb 作为具有 3 个实例的副本集。一个实例是主要的,另外两个实例是次要的。

为简单起见,我将在同一服务器上运行 3 个 mongodb 实例的副本集,从而实现这一点,所有三个 mongodb 实例将在不同的端口号上运行。

在生产环境中,如果你在单个服务器上运行专用的 mongodb 实例,则可以重用相同的端口号。

  1. 创建数据目录(mongodb 数据将存储在文件中的路径)
- mkdir c:\data\server1 (datafile path for instance 1)
- mkdir c:\data\server2 (datafile path for instance 2)
- mkdir c:\data\server3 (datafile path for instance 3)
  1. 一个。启动第一个 mongod 实例
  • 打开命令提示符并键入以下按 Enter 键。
mongod --replSet s0 --dbpath c:\data\server1 --port 37017  --smallfiles --oplogSize 100

上面的命令将 mongodb 的实例与 replicaSet 名称 s0 相关联,并使用 oplogSize 100MB 在端口 37017 上启动 mongodb 的第一个实例

  1. 湾同样启动 Mongodb 的第二个实例
mongod --replSet s0 --dbpath c:\data\server2 --port 37018  --smallfiles --oplogSize 100

上面的命令将 mongodb 的实例与 replicaSet 名称 s0 相关联,并使用 oplogSize 100MB 在端口 37018 上启动 mongodb 的第一个实例

  1. C。现在开始 Mongodb 的第三个实例
mongod --replSet s0 --dbpath c:\data\server3 --port 37019  --smallfiles --oplogSize 100

上面的命令将 mongodb 的实例与 replicaSet 名称 s0 相关联,并使用 oplogSize 100MB 在端口 37019 上启动 mongodb 的第一个实例

随着所有 3 个实例的启动,这 3 个实例目前彼此独立。我们现在需要将这些实例分组为副本集。我们在配置对象的帮助下完成此操作。

3.a 通过 mongo shell 连接到任何 mongod 服务器。为此,请打开命令提示符并键入。

mongo --port 37017

连接到 mongo shell 后,创建一个配置对象

   var config = {"_id":"s0", members[]};

此配置对象有 2 个属性

    1. _id:副本集的名称(s0
    2. 成员:[](成员是一个 mongod 实例的数组。暂时让我们保持空白,我们将通过 push 命令添加成员。

3.b 将 mongod 实例推送(添加)到 config 对象中的 members 数组。关于 mongo shell 类型

 config.members.push({"_id":0,"host":"localhost:37017"});
 config.members.push({"_id":1,"host":"localhost:37018"});
 config.members.push({"_id":2,"host":"localhost:37019"});

我们为每个 mongod 实例分配一个_id 和一个主机。 _id 可以是任何唯一编号,主机应该是运行它的服务器的主机名,后跟端口号。

  1. 通过 mongo shell 中的以下命令启动配置对象。
rs.initiate(config)
  1. 给它几秒钟,我们有一个在服务器上运行的 3 个 mongod 实例的副本集。键入以下命令以检查副本集的状态,并确定哪个是主要的,哪个是次要的。
rs.status();