翻译或纠错本页面

为复制集添加投票节点

这些设置仅在投票节点上进行。千万不要在拥有数据的节点上将 journal.enabled 设置为 false 。也不要设置 smallFiles 或者是 preallocDataFiles 除非有特殊的需求。

投票节点是 replica set 中的一个不包含数据的 mongod 实例。投票节点参与 elections 来打破投票僵局。如果复制集拥有偶数个节点,那么请新增一个投票节点。

投票节点仅需很少的资源,对硬件也没有要求。我们可以将投票节点部署在一个应用服务的机器上或是一个监控机上。

重要

尽量不要将投票节点部署在复制集节点的机器上。

注意事项

投票节点不储存数据,但是一旦其加入到复制集中,投票节点将像其他节点一样开始建立自己的数据文件和 journal

为了让其占用的空间尽可能的小,请参考如下设置 configuration file

  • storage.journal.enabled to false

    警告

    为投票节点建立数据目录(如 dbPath )。 mongod 实例将在这个目录中存储配置数据。该文件夹中将不会存有数据集。举个例子,建立 /data/arb 目录:

  • 启动投票节点并指定数据目录和复制集名。下列的命令将启动一个使用 /data/arbdbPath ,复制集名为 rs 的投票节点:

进入主节点并将投票节点加入复制集。使用 rs.addArb() ,例子如下:

Add an Arbiter

  1. Create a data directory (e.g. storage.dbPath) for the arbiter. The mongod instance uses the directory for configuration data. The directory will not hold the data set. For example, create the /data/arb directory:

    mkdir /data/arb
    
  2. Start the arbiter, specifying the data directory and the replica set name. The following starts an arbiter using the /data/arb as the dbPath and rs for the replica set name:

    mongod --port 30000 --dbpath /data/arb --replSet rs
    
  3. 千万不要在拥有数据集的节点上设置 journal.enabledfalse

    rs.addArb("m1.example.net:30000")
    

    This operation adds the arbiter running on port 30000 on the m1.example.net host.