下载本手册

2.2.4使用DNS SRV记录的连接

X DevAPI支持使用DNS SRV记录来连接MySQL服务器。接收到DNS SRV查找结果的客户端会根据DNS管理员分配给每个主机的优先级和权重,尝试按优先顺序连接到列出的每个主机上的MySQL服务器。只有当客户端无法连接到任何服务器时,才会发生连接失败。本节重点介绍在X DevAPI应用程序中使用DNS SRV。有关MySQL中DNS SRV支持的一般信息,请参阅使用DNS SRV记录连接到服务器.

实现X DevAPI的MySQL连接器可以通过指定mysqlx+srv公司作为类似URI的连接字符串的scheme元素,以及DNS SRV名称。例如:

mysqlx公司+srv://_mysqlx._tcp.example.com/db?options

DNS SRV名称由服务、协议和域组成,服务和协议的前缀都带有下划线。在这个例子中,mysqlx公司表示X协议服务和tcp协议表示TCP协议。

X德瓦皮mysqlx.getSession()方法,以及mysqlx.getClient()方法,使用此协议方案扩展验证连接信息,并将生成的DNS SRV记录作为主机列表进行处理,以实现故障转移行为和连接池。遵守DNS SRV记录中指定的优先级和权重。

MySQL连接器还具有特定于连接器的选项,用于请求X协议连接和经典MySQL协议连接的DNS SRV记录查找。有关详细信息,请参阅各个MySQL连接器的文档。10bet官方网站

注意

MySQL Shell当前不支持DNS SRV记录。

使用DNS SRV记录查找时,客户端通常必须对连接请求应用这些规则(可能存在特定于连接器的异常):

  • 请求必须指定完整的DNS SRV记录名称,服务和协议名称的前缀必须加下划线。例如,此DNS SRV记录与通过TCP实现的X协议服务有关,该服务可由安装中的多个服务器提供:

    名称TTL Class Priority Weight Port Target\u mysqlx.\u tcp.example.com。SRV 0 5 33060 server1.example.com中的86400_mysqlx.\u tcp.example.com。SRV 0 10 33060 server2.example.com中的86400_mysqlx.\u tcp.example.com。SRV 10 5 33060 server3.example.com中的86400_mysqlx.\u tcp.example.com。SRV 20 5 33060 server4.example.com中的86400。

    客户端可以使用如下语法指定DNS SRV记录:

    var client=mysqlx.getClient(“mysqlx+srv://_mysqlx._tcp.example.com")
  • 请求不能指定多个主机名。

  • 请求不能指定端口号。

  • 只支持TCP连接。无法使用Unix套接字文件、Windows命名管道和共享内存。

Java代码

Session mySession=new SessionFactory().getSession(“mysqlx+srv://用户:密码@_mysql.\u tcp.example.com/分贝");

Node.js JavaScript代码

getSession({host:'\u mysqlx.\u tcp.example.com',resolveSrv:true})

C代码

var session=MySQLX.GetSession(“MySQLX+srv://用户:密码@_mysqlx.\u tcp.example.com“);

连接器/C++代码,使用X DevAPI for C

mysqlx::Session sess(SessionOption::HOST,“\u mysqlx.\u tcp.example.com”,SessionOption::DNS\u SRV,true,SessionOption::USER,”用户,会话选项::PWD密码");

Python代码

session=mysqlx.get\u session(host=“tcp.example.com”,dns\u srv=True)