6.10.4 路由选项

setRoutingOption 方法使您能够全局更改路由选项或为各个路由器更改路由选项。

路由选项如下

  • "target_cluster", "primary" | "clusterName"

    仅适用于集群集。

    • "primary":

      使用此设置,MySQL 路由器将来自客户端应用程序的流量定向到当前为主集群的 InnoDB 集群集部署中的集群。主集群可以接受读写流量。默认情况下,全局策略和各个 MySQL 路由器实例都遵循主模式。

    • "clusterName"

      使用此设置,MySQL 路由器将来自应用程序的流量定向到 InnoDB 集群集部署中指定的集群,无论它当前处于主集群角色还是从属集群角色。如果目标集群当前为主集群,MySQL 路由器将打开写入端口,应用程序可以写入该实例。如果目标集群当前是只读从属集群,MySQL 路由器仅允许读取流量,并拒绝写入流量。如果这种情况由于从目标集群到目标集群或从目标集群到目标集群的切换或故障转移而发生变化,MySQL 路由器将相应地更改允许的请求类型。此模式很有用,如果应用程序仅发出读取请求,则可以在从属集群上进行读取,并且您希望将该流量路由到本地集群。请注意,集群名称区分大小写。

    请参阅 第 8.5 节,“将 MySQL 路由器与 InnoDB 集群集集成”

  • "invalidated_cluster_policy", "drop_all" | "accept_ro"

    仅适用于集群和集群集。

    • "drop_all": 使用此设置,当集群被标记为 INVALIDATED 时,MySQL 路由器将禁止应用程序对其进行读写流量。处于此状态的集群目前无法作为 InnoDB 集群集部署的一部分正常运行,并且无法接收写入操作。它可能是一个以前的主集群,在紧急故障转移过程中被标记为失效,或者是一个被标记为失效的从属集群,因为在故障转移时或在受控切换期间,它无法访问或不可用。此设置是全局策略和各个 MySQL 路由器实例的默认设置。

    • "accept_ro": 使用此设置,当集群被标记为 INVALIDATED 时,MySQL 路由器允许应用程序对其进行读取流量,但丢弃写入流量。尽管失效的集群不一定存在任何技术问题,但数据正在变得陈旧,因此此设置意味着将进行陈旧读取,除非很快解决问题。但是,如果陈旧读取不是高优先级,此设置可以提供更高的可用性。

    请参阅 第 8.5 节,“将 MySQL 路由器与 InnoDB 集群集集成”

  • "stats_updates_frequency", "numberOfSeconds"

    此选项以秒为单位定义 MySQL 路由器检查更新之间的间隔。

    如果设置为 0(默认值),则不会执行定期更新。MySQL 路由器将值四舍五入为其 TTL 的倍数。例如

    • 如果低于 TTL,则会四舍五入到 TTL。例如:如果 TTL=30stats_updates_frequency=1,则有效频率为 30 秒。

    • 如果不是 TTL 的倍数,则会根据 TTL 四舍五入并进行调整。例如,如果 TTL=5stats_updates_frequency=11,则有效频率为 15 秒,或者如果 TTL=5stats_updates_frequency=13,则有效频率为 15 秒。

    如果值为 null,则选项值将被清除,默认值将生效。

  • "unreachable_quorum_allowed_traffic", [ read | all | none ]

    仅适用于集群。

    定义 MySQL 路由器在唯一可访问的集群分区上失去仲裁时路由策略。

    重要

    不建议更改此选项。后果包括破坏 InnoDB 集群的一致性保证,返回的数据可能陈旧或根本不正确。不同的路由器可能访问不同的分区,并可能返回不同的数据。不同的路由器可能具有不同的行为,有些路由器提供只读流量,而另一些路由器提供读写流量。

    • read: MySQL 路由器继续使用剩余的在线成员作为只读目标。只读和读写分离端口保持打开以进行读取,但写入流量将被阻止。

    • all: MySQL 路由器将所有剩余的在线目标用作读写目标。所有端口都保持打开状态。

    • none: (默认值)所有当前连接断开,新连接被拒绝。

    如果 group_replication_unreachable_majority_timeout 设置为正值,并且 group_replication_exit_state_actionOFFLINE_MODEABORT_SERVER,则此选项无效。

  • "use_replica_primary_as_rw", [true | false]

    仅适用于集群集。

    此选项指示 MySQL 路由器在针对特定集群的路由器(其中 target_cluster 未设置为 primary)上打开或关闭读写 (R/W) 端口,使您能够在 ReplicaCluster 上使用 R/W 端口。ReplicaCluster 继续仅接受 R/O 流量。在切换或故障转移的情况下,R/W 端口保持不变。

    如果设置为 true,则 MySQL 路由器在 ReplicaClusters 中使用 R/W 端口。

    如果设置为 false(默认值),则路由器的行为保持不变,并且 R/W 端口在 ReplicaClusters 中关闭。

  • 标签

    JSON 格式的任意键值对。例如

    cluster.setRoutingOption("tags", "name:value")
  • "read_only_targets", "all" | "read_replicas" | "secondaries"

    仅适用于集群和集群集。

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

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

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

    以下示例将名为 machine1::router1 的路由器的只读路由策略设置为仅只读副本

            Cluster.setRoutingOption("machine1::router1", "read_only_targets", "read_replicas")

    请参阅 第 7.11 节,“MySQL InnoDB 集群只读副本”

要清除路由选项,请将其设置为 null