Connector/J从8.0.19版本开始支持使用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:复制:
对于使用DNS SRV记录的复制JDBC连接。mysqlx +电脑:
对于X个使用DNS SRV记录的DevAPI连接。
除了在连接url中使用新的模式外,DNS SRV记录支持还可以使用两个新的连接属性启用或禁用,
dnsSrv
而且xdevapi.dns-srv
,分别用于JDBC和X DevAPI连接。例如,这个连接URL启用DNS SRV记录支持:mysqlx: / / johndoe: secret@_mysql._tcp.mycompany.local / db ? xdevapi.dns-srv = true
但是,使用DNS SRV模式并将DNS SRV连接属性设置为
假
导致错误;例如:mysqlx + srv: / / johndoe: secret@_mysql._tcp.mycompany.local / db ? xdevapi。dns-srv=false #连接URL导致Connector/J抛出错误
下面是Connector/J对DNS SRV记录支持的一些要求和限制:
如果在DNS SRV连接的连接URL中指定了多个主机,则Connector/J抛出异常(使用
jdbc: mysql + srv:复制
,这只需要指定一个源和一个副本服务器)。如果在DNS SRV连接的连接URL中指定了端口号,Connector/J将引发异常。
DNS SRV记录只支持TCP/IP连接。如果试图启用DNS SRV记录支持Windows命名管道连接,连接器/J将抛出异常。
DNS SRV记录支持负载均衡和故障切换。对于负载平衡和故障转移连接,Connector/J使用优先级
DNS SRV记录的字段来决定主机连接尝试的优先级。
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
看到通过DNS SRV记录的连接在X DevAPI用户指南获取详细信息。