MySQL 路由器 8.4  /  ...  /  MySQL 路由器读副本支持

1.2.1 MySQL 路由器读副本支持

MySQL 路由器读取元数据字段中定义的值,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 路由器将默认使用 secondaries 并记录警告消息。

MySQL 路由器不使用读副本作为集群元数据的来源。此外,无法在 MySQL 路由器引导命令中使用读副本。尝试使用读副本进行引导会返回错误。

故障处理

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

  • 如果集群中没有仲裁。

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

  • 如果在检查其组复制状态时无法联系到任何集群成员。

MySQL 路由器路由策略受以下配置影响

  • 如果集群状态为 INVALID,并且 invalidated_cluster_policy 设置为 drop_all,则不会使用读副本进行新的只读连接,并且所有现有连接到读副本的连接都将被删除。

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

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