skip-name-resolve: как отключить поиск DNS в MySQL

Обратный поиск DNS в MySQL часто является причиной длительных задержек и низкой производительности MySQL при выполнении определенных SQL-запросов.

Mysql

Иногда требуется несколько часов или дней, чтобы обнаружить, что проблема в медленном времени соединения с SQL действительно вызвана переменной skip-name-resolve, расположенной в конфигурационном файле MySQL.

В данном руководстве рассматриваются следующие сценарии:

  • Отключение функции skip-name-resolve на серверах cPanel
  • Отключение skip-name-resolve на серверах MySQL версии
  • Отключение skip-name-resolve в любом дистрибутиве Linux

skip-name-resolve и поиск DNS

Поиск DNS для хостов MYSQL практически всегда не нужен, поскольку он только добавляет дополнительные раунды для завершения запроса.

Самое забавное, что большинство разработчиков, работающих с приложениями на базе MySQL, до сих пор не знают, что это такое.

Проще говоря, когда вы используете 'localhost' или 'server.hostname.com' в переменной сервера базы данных, вы говорите MySQL, что она должна разрешить это имя хоста с помощью поиска DNS.

Команда MySQL grant позволяет предоставлять права не только на имена хостов, но и на IP-адреса, поэтому использование 127.0.0.1 (локальный сервер) или IP-адреса удаленного сервера в конце не является плохой идеей.

Когда операцию DNS resolve выполняют несколько пользователей, это может пройти незамеченным, но когда у вас несколько сотен или тысяч подключений, это становится настоящей проблемой.

Отключен ли у вас обратный DNS в MySQL? Если нет, то продолжайте читать, чтобы отключить функцию skip-name-resolve

skip-name-resolve: как отключить?

Устранить эту проблему очень просто, поскольку это конфигурация MySQL на стороне сервера, она повлияет на все ваши базы данных.

Прежде чем изменять эту настройку, убедитесь, что все ваши пользователи имеют привилегии для подключения с использованием IP-адресов, а не имен хостов.

Добавьте эту строку в конфигурацию MySQL:

Найдите блок mysqld и добавьте эти две строки:

Сохраните файл и перезапустите MySQL или MariaDB

Вот и все, вы официально отключили функцию skip-name-resolve, и теперь все ваши соединения с MySQL должны быть намного быстрее.

Что изменится после установки директивы skip-name-resolve в файле my.cnf?

Директива skip-name-resolve позволяет MySQL избежать реакции поиска DNS при проверке подключения клиентов к серверу MySQL. Таким образом, ваш сервер MYSQL будет использовать только IP-адреса, а не имена хостов.

Если вы решили использовать skip-name-resolve, убедитесь, что ваши привилегии при подключении к MYSQL установлены на разрешение IP-адресов, а не хостов.

В большинстве систем для локального сервера MySQL необходимо использовать host=127.0.0.1 для сетей ipv4 и host=::1 для сетей ipv6, вместо классического "host=localhost".

Заключение

Вот и все, после установки параметра skip-name-resolve в файле my.cnf вы заметите, что запросы к MySQL выполняются очень быстро, обычно менее 0,5 секунды, если ваше приложение разработано с соблюдением правил программирования.

Не забывайте всегда включать эту простую настройку в файл my.cnf, чтобы отключить обратный поиск DNS в MySQL.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий