
# DDS节点脱节原理和说明
副本集架构由主节点、备节点和隐藏节点组成，DDS自动搭建三节点的副本集供用户使用，节点之间数据自动同步，保证数据的高可靠性。对于需要保证高可用的中小型业务系统，推荐使用副本集。
- 主节点：即Primary节点，用于读写请求。
- 备节点：即Secondary节点，用于读请求。
- 隐藏节点：即Hidden节点，用于业务数据的备份。
用户可以直接操作主节点和备节点。若主节点故障，系统自动分配新的主节点。副本集架构如下图所示。
图1三节点副本集架构   
![](https://support.huaweicloud.com/bestpractice-dds/zh-cn_image_0000001822062412.png "点击放大")
DDS只能在主节点写入数据，主节点写入数据时，会同时生成oplog，Secondary和Hidden通过从主节点读取oplog进行回放，达到数据的最终一致。
oplog的存储量由oplogSize（默认磁盘容量的10%）决定。
#### 主备时延是如何产生的？
如果主节点写入速度太快，超过备节点oplog的读取回放速度，此时就产生了主备时延。
#### 何时会脱节？
因为oplog存储容量有限，如果到达容量上限，就会淘汰掉最早的oplog。备节点读取oplog，每次都会记录最后一条读取的oplog，如果主备时延达到一定程度，备节点发现上次回放的oplog点位已经被淘汰掉，此时备节点就无法继续读取oplog，说明备节点已经脱节。
#### 如何有效防止备节点脱节？
- 业务需要设置majority级别的writeConcern写入数据，表示将数据写入到大多数节点。
- 适当增加oplog的存储空间上限，如需修改，可以通过控制台界面修改参数值oplogSizePercent，具体步骤请参见[修改DDS实例参数](https://support.huaweicloud.com/usermanual-dds/zh-cn_topic_configuration.html)。
- 将创建索引等耗时较长的DDL操作，以及数据备份操作放在业务低峰期执行，同时尽可能避免突发大量增删改操作。
  ![](https://support.huaweicloud.com/bestpractice-dds/public_sys-resources/note_3.0-zh-cn.png)
  如果没有以majority级别的writeConcern写入数据，发生主备倒换时，未同步到备节点的数据有丢失风险。
  
 
