Connector/J 支持使用 DNS SRV 记录进行连接。有关 MySQL 中 DNS SRV 支持的信息,请参阅 使用 DNS SRV 记录连接到服务器。
当多个 MySQL 实例为您的应用程序提供相同服务时,可以使用 DNS SRV 记录来提供故障转移、负载均衡和复制服务。它们消除了客户端在连接字符串中识别每个可能主机或由额外软件组件处理连接的需要。以下是 Connector/J 对 DNS SRV 记录的支持摘要
-
连接 URL 中的这些新方案使 DNS SRV 记录支持成为可能
jdbc:mysql+srv:
用于使用 DNS SRV 记录进行普通和基本故障转移 JDBC 连接。jdbc:mysql+srv:loadbalance:
用于使用 DNS SRV 记录进行负载均衡 JDBC 连接。jdbc:mysql+srv:replication:
用于使用 DNS SRV 记录进行复制 JDBC 连接。mysqlx+srv:
用于使用 DNS SRV 记录进行 X DevAPI 连接。
-
除了使用连接 URL 中的新方案外,还可以使用两个新的连接属性
dnsSrv
和xdevapi.dns-srv
(分别用于 JDBC 和 X DevAPI 连接)来启用或禁用 DNS SRV 记录支持。例如,此连接 URL 启用 DNS SRV 记录支持mysqlx://johndoe:secret@_mysql._tcp.mycompany.local/db?xdevapi.dns-srv=true
但是,在 DNS SRV 连接属性设置为
false
的情况下使用 DNS SRV 方案会导致错误;例如mysqlx+srv://johndoe:secret@_mysql._tcp.mycompany.local/db?xdevapi.dns-srv=false # The connection URL causes Connector/J to throw an error
以下是 Connector/J 对 DNS SRV 记录支持的一些要求和限制
如果在 DNS SRV 连接的连接 URL 中指定了多个主机,Connector/J 会抛出异常(使用
jdbc:mysql+srv:replication
创建的复制设置除外,它需要指定一个源服务器和一个副本服务器)。如果在 DNS SRV 连接的连接 URL 中指定了端口号,Connector/J 会抛出异常。
DNS SRV 记录仅支持 TCP/IP 连接。如果您尝试为 Windows 命名管道连接启用 DNS SRV 记录支持,Connector/J 会抛出异常。
DNS SRV 记录支持负载均衡和故障转移。 对于负载均衡和故障转移连接,Connector/J 使用 DNS SRV 记录的 priority
字段来确定主机连接尝试的优先级。
DNS SRV 记录支持连接池。 在 X DevAPI 连接池设置中,Connector/J 定期重新查询 DNS SRV 记录,并逐步淘汰其主机不再出现在记录中的任何连接,并在其主机重新出现在记录中时将这些连接重新加入池中。
查找 DNS SRV 记录。 用户有责任提供完整的服务主机名;Connector/J 不会附加任何前缀也不会验证主机名结构。以下是有效的服务主机名模式示例
foo.domain.local
_mysql._tcp.foo.domain.local
_mysqlx._tcp.foo.domain.local
_readonly._tcp.foo.domain.local
_readwrite._tcp.foo.domain.local
有关详细信息,请参阅 X DevAPI 用户指南 中的 使用 DNS SRV 记录进行连接。