Mongodb 作为副本集
我们将创建 mongodb 作为具有 3 个实例的副本集。一个实例是主要的,另外两个实例是次要的。
为简单起见,我将在同一服务器上运行 3 个 mongodb 实例的副本集,从而实现这一点,所有三个 mongodb 实例将在不同的端口号上运行。
在生产环境中,如果你在单个服务器上运行专用的 mongodb 实例,则可以重用相同的端口号。
- 创建数据目录(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)
- 一个。启动第一个 mongod 实例
- 打开命令提示符并键入以下按 Enter 键。
mongod --replSet s0 --dbpath c:\data\server1 --port 37017 --smallfiles --oplogSize 100
上面的命令将 mongodb 的实例与 replicaSet 名称 s0
相关联,并使用 oplogSize 100MB 在端口 37017 上启动 mongodb 的第一个实例
- 湾同样启动 Mongodb 的第二个实例
mongod --replSet s0 --dbpath c:\data\server2 --port 37018 --smallfiles --oplogSize 100
上面的命令将 mongodb 的实例与 replicaSet 名称 s0
相关联,并使用 oplogSize 100MB 在端口 37018 上启动 mongodb 的第一个实例
- 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 个属性
-
- _id:副本集的名称(
s0
) - 成员:[](成员是一个 mongod 实例的数组。暂时让我们保持空白,我们将通过 push 命令添加成员。
- _id:副本集的名称(
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 可以是任何唯一编号,主机应该是运行它的服务器的主机名,后跟端口号。
- 通过 mongo shell 中的以下命令启动配置对象。
rs.initiate(config)
- 给它几秒钟,我们有一个在服务器上运行的 3 个 mongod 实例的副本集。键入以下命令以检查副本集的状态,并确定哪个是主要的,哪个是次要的。
rs.status();