MYSQL *
mysql_real_connect_dns_srv(MYSQL *mysql,
const char *dns_srv_name,
const char *user,
const char *passwd,
const char *db,
unsigned long client_flag)
mysql_real_connect_dns_srv()
is a synchronous function. Unlike
mysql_real_connect()
, it has
no asynchronous counterpart.
mysql_real_connect_dns_srv()
is similar to
mysql_real_connect()
, except
that the argument list does not specify the particular host of
the MySQL server to connect to. Instead, it names a DNS SRV
record that specifies a group of servers. For information
about DNS SRV support in MySQL, see
Connecting to the Server Using DNS SRV Records.
The dns_srv_name
argument for
mysql_real_connect_dns_srv()
takes the place of the host
,
port
, and unix_socket
arguments for
mysql_real_connect()
. The
dns_srv_name
argument names a DNS SRV
record that determines the candidate hosts to use for
establishing a connection to a MySQL server.
The mysql
, user
,
passwd
, db
, and
client_flag
arguments to
mysql_real_connect_dns_srv()
have the same meanings as for
mysql_real_connect()
. For
descriptions of their meanings, see
Section 5.4.58, “mysql_real_connect()”.
Suppose that DNS is configured with this SRV information for
the example.com
domain:
Name TTL Class Priority Weight Port Target
_mysql._tcp.example.com. 86400 IN SRV 0 5 3306 host1.example.com
_mysql._tcp.example.com. 86400 IN SRV 0 10 3306 host2.example.com
_mysql._tcp.example.com. 86400 IN SRV 10 5 3306 host3.example.com
_mysql._tcp.example.com. 86400 IN SRV 20 5 3306 host4.example.com
To use that DNS SRV record, pass
"_mysql._tcp.example.com"
as the
dns_srv_name
argument to
mysql_real_connect_dns_srv()
,
which then attempts a connection to each server in the group
until a successful connection is established. A failure to
connect occurs only if a connection cannot be established to
any of the servers. The priority and weight values in the DNS
SRV record determine the order in which servers should be
tried.
mysql_real_connect_dns_srv()
attempts to establish TCP connections only.
The client library performs a DNS SRV lookup for each call to
mysql_real_connect_dns_srv()
.
The client library does no caching of lookup results.
A MYSQL*
connection handler if the
connection was successful, NULL
if the
connection was unsuccessful. For a successful connection, the
return value is the same as the value of the first argument.
The same that you can get from
mysql_real_connect()
, plus:
-
DNS SRV lookup failed.
The following example uses the name of the DNS SRV record shown previously as the source of candidate servers for establishing a connection.
MYSQL mysql;
const char *dns_srv_name = "_mysql._tcp.example.com";
mysql_init(&mysql);
if (!mysql_real_connect_dns_srv(&mysql,dns_srv_name,"user","passwd","database",0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}