Spec-Zone.ru › MySQL 9.2

6.2.6 Подключение к серверу с использованием записей DNS SRV

В системе доменных имен (DNS) запись SRV (запись местоположения службы) — это тип записи ресурса, который позволяет клиенту указать имя, указывающее на службу, протокол и домен. Поиск DNS по имени возвращает ответ, содержащий имена нескольких доступных серверов в домене, предоставляющих необходимую службу. Дополнительную информацию о DNS SRV, включая то, как запись определяет порядок предпочтения перечисленных серверов, см. в RFC 2782.

MySQL поддерживает использование записей DNS SRV для подключения к серверам. Клиент, получивший результат поиска DNS SRV, пытается подключиться к серверу MySQL на каждом из перечисленных хостов в порядке предпочтения, основываясь на приоритете и весовой характеристике, назначенных каждому хосту администратором DNS. Подключение происходит только если клиент не может подключиться ни к одному из серверов.

Когда несколько экземпляров MySQL, таких как кластер серверов, предоставляют одну и ту же службу для ваших приложений, записи DNS SRV могут использоваться для поддержки функций failover, балансировки нагрузки и репликации. Приложениям неудобно напрямую управлять набором кандидатов для попыток подключения, и записи DNS SRV предоставляют альтернативу:

  • Записи DNS SRV позволяют администратору DNS сопоставить один домен DNS с несколькими серверами. Записи DNS SRV также могут обновляться централизованно администраторами при добавлении или удалении серверов из конфигурации или при изменении их имен хостов.

  • Централизованное управление записями DNS SRV исключает необходимость для отдельных клиентов идентифицировать каждый возможный хост в запросах подключения или для обработки подключений дополнительным компонентом программного обеспечения. Приложение может использовать запись DNS SRV для получения информации о потенциальных серверах MySQL, вместо управления информацией о сервере самостоятельно.

  • Записи DNS SRV могут использоваться в сочетании с пулом подключений, в этом случае подключения к хостам, которые больше не находятся в текущем списке записей DNS SRV, удаляются из пула, когда они становятся неактивными.

MySQL поддерживает использование записей DNS SRV для подключения к серверам в следующих контекстах:

  • Несколько MySQL Connectors реализуют поддержку DNS SRV; параметры, специфичные для коннектора, позволяют запрашивать поиск записи DNS SRV как для подключений X Protocol, так и для подключений к классическому протоколу MySQL. Для общей информации см. . Подробности см. в документации по отдельным MySQL Connectors.

  • API C предоставляет функцию, аналогичную , за исключением того, что список аргументов не указывает конкретный хост сервера MySQL для подключения. Вместо этого он называет запись DNS SRV, которая определяет группу серверов. См. .

  • Клиент mysql имеет опцию --dns-srv-name для указания записи DNS SRV, которая определяет группу серверов. См. Раздел 6.5.1, «mysql — Клиент командной строки MySQL».

Имя 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 и общая память не могут использоваться.

Дополнительную информацию об использовании подключений на основе DNS SRV в X DevAPI см. в .

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/connecting-using-dns-srv.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API