mongodb增加复制集节点

条件

  1. 一个可用的复制集。

  2. 一个拥有数据集的MongoDB节点,且可以与现有复制集通讯。

否则,请参考 installation tutorial 和 部署复制集 。

步骤

准备数据目录

在我们为现有的 replica set 新增节点的时候,我门需要先通过下列的某一个策略来准备好新节点的 data directory :

  • 请确认新节点的数据目录 没有 数据。新节点将会从已有节点中复制数据。

    如果新节点在 recovering 状态,不必担心,在MongoDB复制完毕所有的数据之前,它将都会是该状态,如果复制完毕,则会变为 secondary 。

  • 从已有的节点上手动的复制数据。新节点会成为从节点并赶上复制集的最新的数据集状态。这样复制数据可以减少新节点从初始化到可用所需的时间。

    确保我们从新节点上复制来的数据是在 window allowed by the oplog 之内的。不然的话,新的节点还是需要全新的初始化复制,将会从其他节点上复制所有的数据, 如 复制集成员的重新同步 所介绍的一样。

    使用 rs.printReplicationInfo() 来确认复制集的oplog状态。

关于复制集架构的信息,请按考 复制集架构 。

为现有复制集新增节点

  1. 启动新的 mongod 实例。指定数据目录和复制集名。下列例子指了 /srv/mongodb/db0 为数据目录,复制集名为 rs0 的复制集:

    mongod --dbpath /srv/mongodb/db0 --replSet rs0
    

    记下新 mongod 实例的主机名和端口信息。

    有关配置参数的更多信息,请参见 mongod 手册页面。

    配选

    我们可以在 配置文件 mongo.conf 中指定数据目录和复制集名,并可以通过如下命令来启动 mongod 。

    mongod --config /etc/mongod.conf
    
  2. 连接到复制集的主节点。

    我们可以在连接到主节点的时候仅新增一个节点。如果我们不知道哪个节点是主节点,我们可以登陆到每个节点并执行 db.isMaster() 命令。

  3. 使用 rs.add() 命令来为复制集新增节点。举个例子,下列命令可以为复制集新增一个主机名为 mongodb3.example.net 的节点。

    rs.add("mongodb3.example.net")

    我们也可以指定端口:

    rs.add("mongodb3.example.net:27017")
  4. 检验节点是不是已经是复制集的一员了。使用 rs.conf() 命令来显示 replica set configuration:

    rs.conf()

    我们可以使用 rs.status() 来查看复制集的状态。关于复制集状态的具体信息请参见 replSetGetStatus

你可能感兴趣的:(mongodb)