Spec-Zone.ru › MySQL Connectors 1.0

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

X DevAPI поддерживает использование записей DNS SRV для подключения к серверам MySQL. Клиент, получивший результат запроса DNS SRV, пытается подключиться к серверу MySQL на каждом из перечисленных хостов в порядке приоритета, основанном на приоритете и весовой оценке, назначенных каждому хосту администратором DNS. Отключение происходит только в том случае, если клиент не может подключиться ни к одному из серверов. Этот раздел посвящен использованию DNS SRV в приложениях X DevAPI. Для получения общей информации об поддержке DNS SRV в MySQL см. .

MySQL Connectors, реализующие X DevAPI, могут запросить поиск записи DNS SRV, указав mysqlx+srv в качестве элемента схемы строки подключения, подобной URI, вместе с именем DNS SRV. Например:

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

Имя DNS SRV состоит из сервиса, протокола и домена, причем сервис и протокол каждый префиксруются символом подчеркивания. В примере mysqlx указывает на сервис протокола X, а tcp указывает на протокол TCP.

Метод X DevAPI mysqlx.getSession(), а также метод mysqlx.getClient() для пулинга подключений, проверяют информацию о подключении с этим расширением схемы протокола и обрабатывают полученную запись DNS SRV как список хостов для целей поведения при отказе и пулинга подключений. Приоритет и весовая оценка, указанные в записи DNS SRV, соблюдаются.

MySQL Connectors также имеют специфичные для подключения параметры для запроса поиска записи DNS SRV как для подключений по протоколу X, так и для подключений по классическому протоколу MySQL. Для получения подробностей см. документацию для отдельных MySQL Connectors.

Примечание

MySQL Shell в настоящее время не поддерживает записи DNS SRV.

При использовании поиска записи DNS SRV клиенты, как правило, должны применять следующие правила для запросов на подключение (могут быть исключения, специфичные для подключения):

  • Запрос должен указывать полное имя записи DNS SRV, при этом имена сервиса и протокола должны быть префиксными символами подчеркивания. Например, эта запись DNS SRV относится к сервису протокола X, реализованному по протоколу TCP, который может предоставляться несколькими серверами в установке:

    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.
    

    Клиент может указать эту запись DNS SRV, используя синтаксис подобный этому:

    var client = mysqlx.getClient("mysqlx+srv://_mysqlx._tcp.example.com")
    
  • Запрос не должен указывать несколько имен хостов.

  • Запрос не должен указывать номер порта.

  • Поддерживаются только TCP-соединения. Файлы сокетов Unix, именованные каналы Windows и общая память не могут быть использованы.

Java-код

Session mySession = new
SessionFactory().getSession("mysqlx+srv://user:password@_mysql._tcp.example.com/db");

Код JavaScript Node.js

mysqlx.getSession({ host: '_mysqlx._tcp.example.com', resolveSrv: true })

Код C#

var session = MySQLX.GetSession("mysqlx+srv://user:password@_mysqlx._tcp.example.com.");

Код Connector/C++ с использованием X DevAPI для C

mysqlx::Session sess(
    SessionOption::HOST, "_mysqlx._tcp.example.com",
    SessionOption::DNS_SRV, true,
    SessionOption::USER, "user",
    SessionOption::PWD, "password");

Код Python

session = mysqlx.get_session(host="tcp.example.com", dns_srv=True)

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/x-devapi-userguide-en/connecting-dns-srv.html

Spec-Zone.ru

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