文档首页/ 文档数据库服务 DDS/ 最佳实践/ DDS节点脱节原理和说明
更新时间:2024-05-20 GMT+08:00

DDS节点脱节原理和说明

副本集架构由主节点、备节点和隐藏节点组成,DDS自动搭建三节点的副本集供用户使用,节点之间数据自动同步,保证数据的高可靠性。对于需要保证高可用的中小型业务系统,推荐使用副本集。

  • 主节点:即Primary节点,用于读写请求。
  • 备节点:即Secondary节点,用于读请求。
  • 隐藏节点:即Hidden节点,用于业务数据的备份。

用户可以直接操作主节点和备节点。若主节点故障,系统自动分配新的主节点。副本集架构如下图所示。

图1 三节点副本集架构

DDS只能在主节点写入数据,主节点写入数据时,会同时生成oplog,Secondary和Hidden通过从主节点读取oplog进行回放,达到数据的最终一致。

oplog的存储量由oplogSize(默认磁盘容量的10%)决定。

  • 主备时延是如何产生的?

    如果主节点写入速度太快,超过备节点oplog的读取回放速度,此时就产生了主备时延。

  • 何时会脱节?

    因为oplog存储容量有限,如果到达容量上限,就会淘汰掉最早的oplog。备节点读取oplog,每次都会记录最后一条读取的oplog,如果主备时延达到一定程度,备节点发现上次回放的oplog点位已经被淘汰掉,此时备节点就无法继续读取oplog,说明备节点已经脱节。

  • 如何有效防止备节点脱节?
    • 业务需要设置majority级别的writeConcern写入数据,表示将数据写入到大多数节点。
    • 适当增加oplog的存储空间上限,如需修改,可以通过控制台界面修改参数值oplogSizePercent,具体步骤请参见修改DDS实例参数
    • 将创建索引等耗时较长的DDL操作,以及数据备份操作放在业务低峰期执行,同时尽可能避免突发大量增删改操作。

      如果没有以majority级别的writeConcern写入数据,发生主备倒换时,未同步到备节点的数据有丢失风险。