Connector/J supports the use of DNS SRV records for connections since release 8.0.19.
Where multiple MySQL instances provide the same service for your applications, DNS SRV records can be used to provide failover, load balancing, and replication services. They remove the need for clients to identify each possible host in the connection string, or for connections to be handled by an additional software component. Here is a summary for Connector/J's support for DNS SRV records:
These new schemas in the connection URLs enable DNS SRV record support:
jdbc:mysql+srv:For ordinary and basic failover JDBC connections that make use of DNS SRV records.
jdbc:mysql+srv:loadbalance:For load-balancing JDBC connections that make use of DNS SRV records.
jdbc:mysql+srv:replication:For replication JDBC connections that make use of DNS SRV records.
mysqlx+srv:For X DevAPI connections that make use of DNS SRV records.
Besides using the new schemas in the connection URLs, DNS SRV record support can be enabled or disabled using the two new connection properties,
xdevapi.dns-srv, for JDBC and X DevAPI connections respectively. For example, this connection URL enables DNS SRV record support:
However, using the DNS SRV schema with the DNS SRV connection properties set to
falseresults in an error; for example:
mysqlx+srv://johndoe:secret@_mysql._tcp.mycompany.local/db?xdevapi.dns-srv=false # The connection URL causes Connector/J to throw an error
Here are some requirements and restrictions on the DNS SRV record support by Connector/J:
Connection/J throws an exception if multiple hosts are specified in the connection URL for a DNS SRV connection (except for a replication set up, created using
jdbc:mysql+srv:replication, which requires exactly one master and one slave server to be specified).
Connection/J throws an exception if a port number is specified in the connection URL for a DNS SRV connection.
DNS SRV records are supported only for TCP/IP connections. Connection/J throws an exception if you attempt to enable DNS SRV record support Windows named pipe connections.
DNS SRV Record Support for Load Balancing and Failover.
For load-balancing and failover connections, Connector/J uses
priority field of the DNS SRV records
to decide on the priorities for connection attempts for hosts.
DNS SRV Record Support for Connection Pooling. In an X DevAPI connection pooling setup, Connector/J re-query the DNS SRV records regularly and phase out gracefully any connections whose hosts no longer appear in the records, and readmit the connections into the pool when their hosts reappear in the records.
Looking up DNS SRV Records. It is the users' responsibility to provide a full service host name; Connector/J does not append any prefix nor validate the host name structure. The following are examples of valid service host name patterns:
See Connections Using DNS SRV Records in the X DevAPI User Guide for details.