连接器和 API 手册  / 第 3 章 MySQL Connector/J 开发人员指南  / 3.8 多主机连接  /  3.8.2 使用 X DevAPI 为连接配置服务器故障转移

3.8.2 使用 X DevAPI 为连接配置服务器故障转移

使用 X 协议时,Connector/J 支持用于建立会话的客户端故障转移功能。如果在连接 URL 中指定了多个主机,当 Connector/J 无法连接到列出的主机时,它会尝试连接到另一个主机。这是用于配置客户端故障转移的示例 X DevAPI URL:

mysqlx://sandy:mypassword@[host1:33060,host2:33061]/test

配置了客户端故障转移后,当建立连接失败时,Connector/J 会不断尝试连接到主机列表中的主机。尝试连接主机的顺序如下:

  • 对于 priority在连接 URL 中为每个主机设置属性的连接,将根据为主机设置的优先级尝试主机,这些优先级由 0 到 100 之间的任何数字指定,数字越大表示连接的优先级越高。例如:

    mysqlx://sandy:mypassword@[(address=host1:33060,priority=2),(address=host2:33061,priority=1)]/test

    在此示例中,host1总是在host2创建新会话之前尝试。

    应该为所有主机设置优先级,或者不为任何主机设置优先级。

  • 对于 priority连接 URL 中未为每个主机设置属性的连接:

    • 对于 8.0.19 及更高版本,将以随机顺序依次尝试主机。

    • 对于 8.0.18 版及更早版本, 将按照它们在连接 URL 中出现的顺序依次尝试主机 - 列表中较早出现的主机将在列表中较晚出现的主机之前尝试。

请注意,X DevAPI 的服务器故障转移功能仅允许在 Connector/J 尝试建立连接时进行故障转移,但在建立连接后的操作期间则不允许。

使用 X DevAPI 的连接池。  当使用 X DevAPI 的连接池时,Connector/J 会跟踪它连接失败的任何主机,并在失败后的一小段等待时间内避免在创建或检索 Session. 但是,如果所有其他主机都已尝试过,则将不等待重试那些被排除的主机。一旦尝试了所有主机并且无法建立连接,Connector/J 将抛出 a com.mysql.cj.exceptions.CJCommunicationsException 并返回消息Unable to connect to any of the target hosts

使用带有 DNS SRV 的 X DevAPI 配置服务器故障转移

有关详细信息,请参阅第 3.5.14 节“支持 DNS SRV 记录”