MST
星途 面试题库

面试题:MongoDB副本集配置的基础步骤

请阐述在MongoDB中配置副本集的基本步骤,包括初始化成员、选举机制等相关要点。
34.2万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

配置副本集的基本步骤

  1. 规划节点:确定副本集成员节点(通常一个主节点,多个从节点,还可能有仲裁节点),并确保各节点间网络可达。
  2. 安装与配置MongoDB:在每个节点上安装MongoDB,并编辑配置文件(mongod.conf)。配置文件需指定不同的端口(默认27017)、数据存储路径等。例如:
storage:
  dbPath: /var/lib/mongodb
systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
net:
  port: 27017
  bindIp: 0.0.0.0
  1. 启动MongoDB实例:在每个节点上使用配置好的配置文件启动MongoDB实例。例如:mongod -f /etc/mongod.conf
  2. 初始化副本集
    • 连接到其中一个节点的MongoDB shell,例如:mongo --host <node1_ip>:27017
    • 在MongoDB shell中,使用rs.initiate()命令初始化副本集。初始化时需要提供一个包含副本集成员信息的配置文档,基本格式如下:
rs.initiate({
  _id: "<replica_set_name>",
  members: [
    { _id: 0, host: "<node1_ip>:27017" },
    { _id: 1, host: "<node2_ip>:27017" },
    { _id: 2, host: "<node3_ip>:27017", arbiterOnly: true } // 可选仲裁节点
  ]
})

选举机制要点

  1. 心跳检测:副本集成员通过心跳机制互相监控。主节点定期向从节点发送心跳消息,从节点回复确认消息。如果主节点在一定时间内未收到某个从节点的心跳回复,会认为该从节点不可用。
  2. 选举触发:当主节点不可用时(例如网络故障、进程崩溃),副本集将触发选举流程来选出新的主节点。
  3. 选举条件
    • 具有最新的oplog(操作日志)的节点更有优势。
    • 节点的优先级(通过配置文档中的priority字段设置,默认值为1)也会影响选举。优先级高的节点更有可能被选为新主节点。
    • 节点需满足一定的状态条件,如自身状态为SECONDARY且与大多数成员保持连接。
  4. 选举流程
    • 从节点发起选举请求,向其他节点发送投票请求。
    • 其他节点收到投票请求后,根据选举条件进行判断。如果满足条件,会投赞成票;否则投反对票。
    • 当某个节点获得大多数成员(超过副本集成员总数一半)的赞成票时,该节点将被选为新的主节点。新主节点开始接收客户端的写操作,并将操作记录到oplog中,从节点则通过复制oplog来保持数据同步。