MST

星途 面试题库

面试题:MongoDB复制集配置基础

请简述MongoDB复制集配置的基本步骤,包括节点角色(主节点、从节点、仲裁节点)的作用及配置方式。
47.0万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

MongoDB复制集配置基本步骤

  1. 规划节点:确定要包含在复制集中的服务器节点,一般至少需要3个节点,分别承担不同角色。
  2. 配置文件设置:为每个节点创建或修改MongoDB配置文件(通常为mongod.conf),在配置文件中指定replSet参数,例如:replSet = <replicaSetName><replicaSetName>为自定义的复制集名称。同时,配置好其他必要参数,如数据存储路径dbPath、日志文件路径logPath等。
  3. 启动节点:按照配置文件启动各个MongoDB节点。例如,在Linux系统下可以使用命令mongod -f /path/to/mongod.conf启动。
  4. 初始化复制集:连接到其中一个节点的MongoDB shell,运行初始化命令。例如:
rs.initiate({
    _id: "<replicaSetName>",
    members: [
        { _id: 0, host: "primaryNodeHost:port" },
        { _id: 1, host: "secondaryNodeHost:port" },
        { _id: 2, host: "arbiterNodeHost:port", arbiterOnly: true }
    ]
})

其中_id为复制集名称,members数组中定义了各个节点的信息,arbiterOnly: true表示该节点为仲裁节点。

节点角色作用及配置方式

  1. 主节点(Primary)
    • 作用:主节点负责处理所有的写操作,并将这些操作记录在oplog(操作日志)中。从节点通过复制oplog来保持与主节点的数据同步。读操作也可以在主节点进行,但一般为了负载均衡,读操作更多地分发到从节点。
    • 配置方式:在初始化复制集时,将某个节点定义为成员,且不设置特殊标识即为潜在主节点。例如{ _id: 0, host: "primaryNodeHost:port" }。主节点会在复制集初始化或选举过程中产生。
  2. 从节点(Secondary)
    • 作用:从节点复制主节点的oplog,以保持与主节点数据的同步。从节点可用于分担读操作的负载,提高系统的读取性能。当主节点发生故障时,从节点可以参与选举成为新的主节点。
    • 配置方式:在初始化复制集时定义,如{ _id: 1, host: "secondaryNodeHost:port" }。从节点会自动从主节点拉取oplog并应用。
  3. 仲裁节点(Arbiter)
    • 作用:仲裁节点不存储数据,只参与主节点的选举过程。它的作用是帮助打破选举时的平局,确保复制集能够快速选出新的主节点,维持系统的高可用性。
    • 配置方式:在初始化复制集时,通过设置arbiterOnly: true来定义仲裁节点,例如{ _id: 2, host: "arbiterNodeHost:port", arbiterOnly: true } 。仲裁节点只需运行MongoDB服务,无需配置复杂的数据存储等参数,因为它不保存数据。