Connector/J supports the use of DNS SRV records for connections. For information about DNS SRV support in MySQL, see Connecting to the Server Using DNS SRV Records.
When 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 eliminate 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,
dnsSrv
andxdevapi.dns-srv
, for JDBC and X DevAPI connections respectively. For example, this connection URL enables DNS SRV record support:mysqlx://johndoe:secret@_mysql._tcp.mycompany.local/db?xdevapi.dns-srv=true
However, using the DNS SRV schema with the DNS SRV connection properties set to
false
results 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:
Connector/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 source and one replica server to be specified).Connector/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. Connector/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
the 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-queries the DNS SRV records regularly and phases out gracefully any connections whose hosts no longer appear in the records, and readmits 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:
foo.domain.local
_mysql._tcp.foo.domain.local
_mysqlx._tcp.foo.domain.local
_readonly._tcp.foo.domain.local
_readwrite._tcp.foo.domain.local
See Connections Using DNS SRV Records in the X DevAPI User Guide for details.