MySQL Router 9.0  /  ...  /  MySQL Router 只读副本支持

1.2.1 MySQL Router 只读副本支持

MySQL Router 读取元数据字段 v2_router_options.router_options.read_only_targets 中定义的值,以检索只读流量的路由信息。

v2_router_options.router_options.read_only_targets 由 AdminAPI 方法 cluster.setRoutingOption() 填充,该方法使用 read_only_targets 选项将路由策略设置为以下值之一

  • all:所有只读副本和辅助集群成员都用于只读流量。

  • read_replicas:只有只读副本用于只读流量。

  • secondaries:只有辅助集群成员用于只读流量。

注意

如果 read_only_targets 不存在,或者设置为 allread_replicassecondaries 以外的值,则 MySQL Router 默认为 secondaries 并记录警告消息。

MySQL Router 不使用只读副本作为集群元数据的来源。此外,也不可能在 MySQL Router 引导命令中使用只读副本。任何尝试使用只读副本引导的操作都将返回错误。

故障处理

在以下情况下,MySQL Router 不会将连接路由到只读副本

  • 如果集群中没有仲裁。

  • 如果所有集群成员都处于 OFFLINE 状态。

  • 如果在检查组复制状态时无法访问任何集群成员。

MySQL Router 路由策略受配置的影响,如下所示

  • 如果集群状态为 INVALID 且 invalidated_cluster_policy 设置为 drop_all,则不会将只读副本用于新的只读连接,并且所有与只读副本的现有连接都将断开。

  • 如果集群状态为 INVALID 且 invalidated_cluster_policy 设置为 allow_ro,则将使用只读副本用于新的只读连接,并且与只读副本的现有连接不受影响。

MySQL Router 对只读副本使用标准隔离机制,如 desination_status 配置参数中所定义。请参阅 目标状态选项