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()
是一个同步函数。与 不同
mysql_real_connect()
,它没有异步对象。
mysql_real_connect_dns_srv()
类似于
mysql_real_connect()
,除了参数列表没有指定要连接的 MySQL 服务器的特定主机。相反,它命名一个指定一组服务器的 DNS SRV 记录。有关 MySQL 中 DNS SRV 支持的信息,请参阅
使用 DNS SRV 记录连接到服务器。
的dns_srv_name
参数
mysql_real_connect_dns_srv()
取代了host
、
port
和的unix_socket
参数
mysql_real_connect()
。该
dns_srv_name
参数命名一个 DNS SRV 记录,该记录确定用于建立与 MySQL 服务器的连接的候选主机。
、mysql
、user
、
passwd
和arguments to
db
与
for 具有相同的含义
。有关它们含义的描述,请参阅
第 5.4.58 节,“mysql_real_connect()”。
client_flag
mysql_real_connect_dns_srv()
mysql_real_connect()
假设 DNS 配置了example.com
域的此 SRV 信息:
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
要使用该 DNS SRV 记录,
请将其"_mysql._tcp.example.com"
作为
dns_srv_name
参数传递给
mysql_real_connect_dns_srv()
,然后它会尝试连接到组中的每个服务器,直到成功建立连接。仅当无法与任何服务器建立连接时才会发生连接失败。DNS SRV 记录中的优先级和权重值决定了尝试服务器的顺序。
mysql_real_connect_dns_srv()
仅尝试建立 TCP 连接。
客户端库为每次调用执行 DNS SRV 查找
mysql_real_connect_dns_srv()
。客户端库不缓存查找结果。
以下示例使用前面显示的 DNS SRV 记录的名称作为建立连接的候选服务器的来源。
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));
}