Подключение с перенаправлением к Базе данных Azure для MySQL
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер
Внимание
База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"
В этой статье объясняется, как подключить приложение к серверу База данных Azure для MySQL с режимом перенаправления. Перенаправление уменьшает задержку сети между клиентскими приложениями и серверами MySQL, позволяя приложениям подключаться непосредственно к узлам внутреннего сервера.
Подготовка к работе
Войдите на портал Azure. Создайте сервер Базы данных Azure для MySQL с версией ядра 5.6, 5.7 или 8.0.
Дополнительные сведения см. в руководствах по созданию сервера Базы данных Azure для MySQL с помощью портала Azure или Azure CLI.
Внимание
Перенаправление сейчас не поддерживается с использованием Приватного канала для Базы данных Azure для MySQL.
Включение перенаправления
На сервере Базы данных Azure для MySQL настройте для параметра redirect_enabled
значение ON
, чтобы разрешить подключения в режиме перенаправления. Чтобы обновить этот параметр сервера, используйте портал Azure или Azure CLI.
PHP
Поддержка перенаправления в приложениях PHP доступна через расширение mysqlnd_azure, разработанное корпорацией Майкрософт.
Расширение mysqlnd_azure доступно для добавления в приложения PHP через PECL, и настоятельно рекомендуется установить и настроить расширение с помощью официально опубликованного пакета PECL.
Внимание
Поддержка перенаправления в расширении PHP mysqlnd_azure в настоящее время доступна в предварительной версии.
Логика перенаправления
Внимание
Логика и поведение перенаправления изменились начиная с версии 1.1.0, и мы рекомендуем использовать версию 1.1.0 или выше.
Поведение перенаправления определяется значением mysqlnd_azure.enableRedirect
. В следующей таблице описано поведение перенаправления в зависимости от этого значения, как оно реализовано в версии 1.1.0 и более поздних.
Если вы используете более раннюю версию расширения mysqlnd_azure (версия 1.0.0-1.0.3), поведение перенаправления определяется значением mysqlnd_azure.enabled
. Допустимые значения: off
(аналогично описанному в таблице ниже) и on
(аналогично значению preferred
в таблице ниже).
значение mysqlnd_azure.enableRedirect | Поведение |
---|---|
off или 0 |
Перенаправление не будет использоваться. |
on или 1 |
— Если подключение не использует SSL на стороне драйвера, подключение не выполняется. Возвращается следующая ошибка: "mysqlnd_azure.enableRedirect включен, но параметр SSL не задан в строка подключения. Перенаправление возможно только с помощью SSL". — Если ssl используется на стороне драйвера, но перенаправление не поддерживается на сервере, первое подключение прервано, и возвращается следующая ошибка: "Подключение прервано, так как перенаправление не включено на сервере MySQL или сетевом пакете не соответствует протоколу перенаправления". — Если сервер MySQL поддерживает перенаправление, но в при перенаправлении подключения происходит сбой, первое прокси-подключение также прерывается. При этом возвращается ошибка о перенаправленном подключении. |
preferred или 2 (значение по умолчанию) |
– mysqlnd_azure будет использовать перенаправление, если возможно. — Если подключение не использует SSL на стороне драйвера, сервер не поддерживает перенаправление, или перенаправленное подключение не удается подключиться по какой-либо нефатичной причине, пока прокси-подключение по-прежнему является допустимым, он возвращается к первому прокси-подключению. |
Для успешного подключения к База данных Azure для MySQL на одном сервере mysqlnd_azure.enableRedirect
необходимо выполнить обязательные действия по объединению корневого сертификата в соответствии с требованиями соответствия. Дополнительные сведения см . по ссылке.
В последующих разделах документа описано, как установить mysqlnd_azure
расширение с помощью PECL и задать значение этого параметра.
Необходимые условия
- Версия PHP 7.2.15 и выше или 7.3.2 и выше
- PHP PEAR
- php-mysql
- База данных Azure для сервера MySQL
Установите mysqlnd_azure с помощью PECL. Рекомендуется использовать версию 1.1.1.0+.
sudo pecl install mysqlnd_azure
Найдите каталог расширений (
extension_dir
), выполнив следующую команду:php -i | grep "extension_dir"
Перейдите в папку, путь к которой только что получили, и проверьте наличие в ней файла
mysqlnd_azure.so
.Найдите папку для INI-файлов, выполнив следующую команду:
php -i | grep "dir for additional .ini files"
Перейдите в эту папку.
Создайте новый INI-файл для
mysqlnd_azure
. Убедитесь, что имя этого файла в отсортированном по алфавиту списке располагается следом за файлом для mysqnld, так как модули загружаются в порядке имен INI-файлов. Например, если INI-файл дляmysqlnd
имеет имя10-mysqlnd.ini
, переименуйте mysqlnd ini в20-mysqlnd-azure.ini
.В новый INI-файл добавьте следующие строки, чтобы включить перенаправление.
extension=mysqlnd_azure mysqlnd_azure.enableRedirect = on/off/preferred
Проверка перенаправления
Проверить правильность настройки перенаправления можно с помощью приведенного ниже примера кода PHP. Создайте PHP-файл с именем mysqlConnect.php
и вставьте в него приведенный ниже код. Замените имя сервера, имя пользователя и пароль собственными значениями.
<?php
$host = '<yourservername>.mysql.database.azure.com';
$username = '<yourusername>@<yourservername>';
$password = '<yourpassword>';
$db_name = 'testdb';
echo "mysqlnd_azure.enableRedirect: ", ini_get("mysqlnd_azure.enableRedirect"), "\n";
$db = mysqli_init();
//The connection must be configured with SSL for the redirection test
$link = mysqli_real_connect ($db, $host, $username, $password, $db_name, 3306, NULL, MYSQLI_CLIENT_SSL);
if (!$link) {
die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
}
else {
echo $db->host_info, "\n"; //if redirection succeeds, the host_info will differ from the hostname you used used to connect
$res = $db->query('SHOW TABLES;'); //test query with the connection
print_r ($res);
$db->close();
}
?>
Следующие шаги
- Дополнительные сведения о строках подключения см. в этой статье.