部署一个用于测试和开发的复制集¶
On this page
本文档讲述了如何部署一个用于开发和测试的复制集环境。参见 部署复制集 以获得生产环节的部署教程。
This tutorial describes how to create a three-member replica set from three existing mongod instances running with access control disabled.
本教程讲述了如何用3个已有 mongod 的实例来建立一个由3个节点组成的 复制集 。
概述¶
由三个节点组成的 复制集 为网络故障或是其他的系统故障提供了足够的冗余。该复制集也有足够的分布式读操作的能力。复制集应该保持奇数个节点,这也就保证了 选举 可以正常的进行。参见 复制集概览 以获得更多有关复制集设计的信息。
我们通常先从一个将会成为复制集成员的 mongod 实例开始来配置复制集。然后为复制集新增实例。
要求¶
在测试和开发环境中,我们的 mongod 实例可以在本地也可以在虚拟机上。
在我们部署复制集之前,我们必须在 复制集 的每个机器上安装MongoDB实例。如果我们还没安装MongoDB,请参考 安装指南 。
在初始化复制集之前,我们应该检测我们的网络配置,保证各节点之间通讯正常。为了成功的完成复制集的部署,每个节点都必须能够与其他节点进行功勋。关于如何确认各个节点之间的通讯情况,请参见 Test Connections Between all Members 。
部署复制集的注意事项¶
详细步骤¶
Create the necessary data directories for each member by issuing a command similar to the following:
mkdir -p /srv/mongodb/rs0-0 /srv/mongodb/rs0-1 /srv/mongodb/rs0-2
将建立名为 “rs0-0”, “rs0-1”, 和 “rs0-2” 的文件夹,每个文件夹中将存储数据文件。
Start your mongod instances in their own shell windows by issuing the following commands:
第一个节点:
mongod --port 27017 --dbpath /srv/mongodb/rs0-0 --replSet rs0 --smallfiles --oplogSize 128
第二个节点:
mongod --port 27018 --dbpath /srv/mongodb/rs0-1 --replSet rs0 --smallfiles --oplogSize 128
第三个节点:
mongod --port 27019 --dbpath /srv/mongodb/rs0-2 --replSet rs0 --smallfiles --oplogSize 128
这些命令将启动复制集 rs0 中的各个节点,每个节点通过有着不同的端口,并通过 --dbpath 参数来设置不同数据文件夹。如果我们已经用了默认端口,其余的节点应该用其他的端口。
The --smallfiles and --oplogSize settings reduce the disk space that each mongod instance uses. This is ideal for testing and development deployments as it prevents overloading your machine. For more information on these and other configuration options, see 配置文件选项.
我们需要指明所需连接的端口,来通过 mongo 命令连接到某个 mongod 实例。为了简单方便,我们可以通过下列命令来连接到第一个实例:
mongo --port 27017
在 mongo 中使用 rs.initiate() 来初始化复制集。我们可以通过下列方式来设定复制集配置对象:
rsconf = { _id: "rs0", members: [ { _id: 0, host: "<hostname>:27017" } ] }
将 <hostname> 替换为我们的主机名,通过``rsconf`` 文件来 rs.initiate() :
rs.initiate( rsconf )
通过下述命令可以展示现有的:doc:复制集配置 </reference/replica-configuration> :
rs.conf()
复制集配置对象大致如下:
{ "_id" : "rs0", "version" : 4, "members" : [ { "_id" : 1, "host" : "localhost:27017" } ] }
使用 mongo 连接到 primary,并用过 rs.add() 命令来添加第二个和第三个 mongod 实例到复制集中。 将 <hostname> 替换为我们的主机名:
rs.add("<hostname>:27018") rs.add("<hostname>:27019")
当完成后,一个完整的复制集便完成了。这个新的复制集将选举出一个 主节点 。
通过 rs.status() 命令来检查复制集的状态。
参见
The documentation of the following shell functions for more information:
我们也可能会考虑使用 simple setup script 来自动配置复制集。
Refer to Replica Set Read and Write Semantics for a detailed explanation of read and write semantics in MongoDB.