全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

设置只读节点延迟剔除

最近更新时间:2026-01-13 13:16:15

什么是延迟剔除

在主从架构的 MySQL 数据库中,只读实例通常通过复制主实例的数据来提供查询能力。受 SQL 执行耗时、事务并发、网络抖动等因素影响,只读实例在某些场景下可能出现数据同步延迟

在启用读写分离的情况下,如果仍将读请求转发至延迟较大的只读实例,可能导致:

  • 查询结果不符合业务对数据实时性的要求

  • 读到旧数据,影响业务逻辑正确性

  • 数据一致性问题难以排查

为在性能与一致性之间取得平衡,数据库代理提供了延迟剔除功能,用于控制读请求是否可以路由至只读实例。

功能说明

延迟剔除功能通过配置只读实例允许的最大同步延迟时间,来决定是否将读请求转发至只读实例。

  • 取值范围:1 秒 ~ 10000 秒

  • 推荐值:≥ 30 秒

考虑到复杂 SQL 执行、事务冲突等因素,只读实例在实际运行中存在出现延迟的可能,建议将延迟阈值设置为不小于 30 秒,以避免因短暂抖动频繁剔除只读实例。

适用场景

推荐开启延迟剔除功能的场景:

  • 对数据实时性有一定要求的业务读请求(能够容忍一定延迟)

  • 使用读写分离,且存在多个只读实例

  • 主库写入压力较大、复制延迟波动明显的场景

工作原理

延迟剔除机制的工作原理如下:

1)用户通过代理管理界面启用延迟剔除功能,并配置业务可容忍的最大主从复制延迟阈值。

2)数据库代理在后台启动定时检测任务,周期性采集各 MySQL 实例的主从复制延迟:

  • 延迟剔除:当某只读实例的复制延迟超过设定阈值时,代理将其从可用只读实例列表中自动剔除,不再承担读请求。

  • 节点恢复:当被剔除实例的复制延迟恢复至阈值以内时,代理会自动将其重新加入只读实例列表,继续承担读请求。

3)代理在处理业务请求时:

  • 写请求始终路由至主库;

  • 只读请求仅在复制延迟满足阈值要求的只读实例中进行选择并路由。

设置延迟剔除

前提条件

已开通数据库代理

操作步骤

  1. 登录云数据库MySQL控制台,在实例列表页单击目标实例ID,进入实例管理页面。

  2. 单击左侧导航栏数据库代理,进入数据库代理页面。

  3. 在代理详情页的右上角,单击配置代理策略

  4. 在弹出的对话框中,根据业务需要开启/关闭延迟剔除,并设置延迟阈值,点击确定,完成代理策略配置。

相关配置项

延迟剔除功能涉及如下配置项:

配置项

说明

延迟剔除状态

设置是否开启延迟剔除功能。若开启延迟剔除,当只读实例与主实例之间的复制延迟超过设定阈值时,该只读实例将被暂时屏蔽,不再承担读请求。被屏蔽的只读实例会在延迟恢复到阈值以下后,自动重新参与读流量分发。

延迟阈值

设置只读实例同步主实例数据时允许的最长延迟时间,取值范围:0~10000秒。

推荐值:考虑到 SQL 执行差异,只读实例可能存在一定延迟,建议设置不小于 30 秒。

配置说明:

  • 仅当只读实例的延迟时间 低于阈值 且读权重不为 0 时,读请求才会被路由至该只读实例。

  • 支持关闭延迟阈值功能。关闭后,读请求转发至只读实例将不再受延迟时间限制,但可能读取到滞后数据。

该设置适用于可以在 牺牲部分读一致性 的前提下,提升读写分离性能的业务场景。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈