暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql 8官方文档中文版 4.2.6使用DNS SRV记录连接到服务器

原创 由迪 2020-11-12
1731

在域名系统(DNS)中,SRV记录(服务位置记录)是一种资源记录,使客户端可以指定表示服务,协议和域的名称。名称上的DNS查找将返回一个答复,其中包含域中提供所需服务的多个可用服务器的名称。有关DNS SRV的信息,包括记录如何定义列出的服务器的优先顺序,请参阅 RFC 2782

MySQL支持使用DNS SRV记录连接服务器。根据DNS管理员分配给每个主机的优先级和权重,收到DNS SRV查找结果的客户端会尝试按优先顺序连接到列出的每个主机上的MySQL服务器。仅当客户端无法连接到任何服务器时,连接失败才会发生。

当多个MySQL实例(例如服务器集群)为您的应用程序提供相同的服务时,DNS SRV记录可用于协助故障转移,负载平衡和复制服务。对于应用程序来说,直接管理用于连接尝试的候选服务器集非常麻烦,并且DNS SRV记录提供了一种替代方案:

  • DNS SRV记录使DNS管理员可以将单个DNS域映射到多个服务器。添加或从配置中删除服务器或更改其主机名时,管理员还可以集中更新DNS SRV记录。
  • DNS SRV记录的集中管理消除了单个客户端识别连接请求中每个可能的主机或由附加软件组件处理连接的需求。应用程序可以使用DNS SRV记录获取有关候选MySQL服务器的信息,而不是管理服务器信息本身。
  • DNS SRV记录可与连接池结合使用,在这种情况下,当空闲时,将从池中删除不再位于当前DNS SRV记录列表中的主机的连接。

MySQL支持在以下情况下使用DNS SRV记录连接到服务器:

DNS SRV名称由服务,协议和域组成,其中服务和协议均以下划线作为前缀:

_service._protocol.domain

以下DNS SRV记录标识了多个候选服务器,例如客户端可能用于建立X协议连接的服务器:

Name                      TTL   Class  Priority Weight Port  Target
_mysqlx._tcp.example.com. 86400 IN SRV 0        5      33060 server1.example.com.
_mysqlx._tcp.example.com. 86400 IN SRV 0        10     33060 server2.example.com.
_mysqlx._tcp.example.com. 86400 IN SRV 10       5      33060 server3.example.com.
_mysqlx._tcp.example.com. 86400 IN SRV 20       5      33060 server4.example.com.

此处,mysqlx指示X协议服务并tcp指示TCP协议。客户端可以使用名称请求此DNS SRV记录 _mysqlx._tcp.example.com。在连接请求中指定名称的特定语法取决于客户端的类型。例如,客户端可能支持在类似URI的连接字符串中或作为键值对指定名称。

经典协议连接的DNS SRV记录可能如下所示:

Name                     TTL   Class  Priority Weight  Port Target
_mysql._tcp.example.com. 86400 IN SRV 0        5       3306 server1.example.com.
_mysql._tcp.example.com. 86400 IN SRV 0        10      3306 server2.example.com.
_mysql._tcp.example.com. 86400 IN SRV 10       5       3306 server3.example.com.
_mysql._tcp.example.com. 86400 IN SRV 20       5       3306 server4.example.com.

在这里,名称mysql指定了经典的MySQL协议服务,端口是3306(默认的经典MySQL协议端口)而不是33060(默认的X协议端口)。

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

  • 该请求必须指定完整的DNS SRV记录名称,并在服务和协议名称前添加下划线。
  • 该请求不得指定多个主机名。
  • 该请求不得指定端口号。
  • 仅支持TCP连接。不能使用Unix套接字文件,Windows命名管道和共享内存。

有关在X DevAPI中使用基于DNS SRV的连接的更多信息,请参阅使用DNS SRV记录的连接

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论