Se connecter à Azure Database for MariaDB avec la redirection
Important
Azure Database for MariaDB est en voie de mise hors service. Nous vous recommandons vivement d’effectuer une migration vers Azure Database pour MySQL. Pour plus d’informations sur la migration vers Azure Database pour MySQL, consultez l’article Qu’arrive-t-il à Azure Database pour MariaDB ?.
Cette rubrique explique comment connecter une application à votre serveur Azure Database for MariaDB avec le mode de redirection. La redirection vise à réduire la latence réseau entre les applications clientes et les serveurs MariaDB en permettant aux applications de se connecter directement aux nœuds du serveur back-end.
Avant de commencer
Connectez-vous au portail Azure. Créez un serveur Azure Database for MariaDB avec un moteur version 10.2 ou 10.3.
Pour plus d’informations, consultez la rubrique sur la création d’un serveur Azure Database for MariaDB à l’aide du portail Azure ou d’Azure CLI.
Important
La redirection n’est actuellement pas prise en charge avec Private Link pour Azure Database for MariaDB.
Activer la redirection
Sur votre serveur Azure Database for MariaDB, affectez la valeur ON
au paramètre redirect_enabled
pour autoriser les connexions avec le mode de redirection. Pour mettre à jour ce paramètre de serveur, utilisez le portail Azure ou Azure CLI.
PHP
La prise en charge de la redirection dans les applications PHP est disponible dans l’extension mysqlnd_azure, développée par Microsoft.
L’extension mysqlnd_azure peut être ajoutée aux applications PHP via PECL, et il est vivement recommandé de l’installer et de la configurer par le biais du package PECL officiel.
Important
La prise en charge de la redirection dans l’extension mysqlnd_azure PHP est actuellement disponible en préversion.
Logique de redirection
Important
À partir de la version 1.1.0, la logique/le comportement de redirection a été mis à jour. Il est donc recommandé d’utiliser la version 1.1.0+.
Le comportement de redirection est déterminé par la valeur de mysqlnd_azure.enableRedirect
. Le tableau ci-dessous décrit le comportement de la redirection en fonction de la valeur de ce paramètre à partir de la version 1.1.0+ .
Si vous utilisez une version antérieure de l’extension mysqlnd_azure (version 1.0.0-1.0.3), le comportement de la redirection est déterminé par la valeur de mysqlnd_azure.enabled
. Les valeurs valides sont off
(agit de la même façon que le comportement décrit dans le tableau ci-dessous) et on
(agit comme preferred
dans le tableau ci-dessous).
Valeur mysqlnd_azure.enableRedirect | Comportement |
---|---|
off ou 0 |
La redirection n’est pas utilisée. |
on ou 1 |
- Si la connexion n’utilise pas le protocole SSL côté pilote, aucune connexion n’est établie. L’erreur suivante est retournée : « mysqlnd_azure.enableRedirect est activé, mais l’option SSL n’est pas définie dans la chaîne de connexion. La redirection n’est possible qu’avec SSL. » - Si le protocole SSL est utilisé côté pilote, mais que la redirection n’est pas prise en charge sur le serveur, la première connexion est abandonnée. L’erreur suivante est retournée : « La connexion a été abandonnée, car la redirection n’est pas activée sur le serveur MariaDB ou le package réseau ne respecte pas le protocole de redirection. » - Si le serveur MariaDB prend en charge la redirection, mais que la connexion redirigée a échoué pour une raison quelconque, la première connexion au proxy est également abandonnée. Elle retourne l’erreur de la connexion redirigée. |
preferred ou 2 (valeur par défaut) |
- mysqlnd_azure utilise la redirection, si possible. - Si la connexion n’utilise pas le protocole SSL côte pilote, si le serveur ne prend pas en charge la redirection, ou si la connexion redirigée échoue pour une raison récupérable alors que la connexion par proxy est encore valide, elle revient à la première connexion par proxy. |
Les sections suivantes du document décrivent l’installation de l’extension mysqlnd_azure
à l’aide de PECL et la définition de la valeur de ce paramètre.
Composants requis
- Versions PHP 7.2.15+ et 7.3.2+
- PHP PEAR
- php-mysql
- Serveur Azure Database for MariaDB
Installez mysqlnd_azure avec PECL. Il est recommandé d’utiliser la version 1.1.0+.
sudo pecl install mysqlnd_azure
Localisez le répertoire d’extension (
extension_dir
) en exécutant ce qui suit :sudo php -i | grep "extension_dir"
Remplacez les répertoires par le dossier retourné et vérifiez que
mysqlnd_azure.so
se trouve dans ce dossier.Localisez le dossier des fichiers .ini en exécutant ce qui suit :
sudo hp -i | grep "dir for additional .ini files"
Remplacez les répertoires par ce dossier retourné.
Créez un fichier
.ini
pourmysqlnd_azure
. Assurez-vous que l’ordre alphabétique du nom se trouve après celui demysqnld
, car les modules sont chargés en fonction de l’ordre des noms des fichiers ini. Par exemple, simysqlnd
.ini est nommé10-mysqlnd.ini
, nommez le fichier ini mysqlnd20-mysqlnd-azure.ini
.Dans le nouveau fichier
.ini
, ajoutez les lignes suivantes pour activer la redirection.extension=mysqlnd_azure mysqlnd_azure.enableRedirect = on/off/preferred
Confirmer la redirection
Vous pouvez également confirmer que la redirection est configurée avec l’exemple de code PHP ci-dessous. Créez un fichier PHP nommé mysqlConnect.php
et collez-y le code ci-dessous. Mettez à jour le nom du serveur, le nom d’utilisateur et le mot de passe en les remplaçant par vos propres valeurs.
<?php
$host = '<yourservername>.mariadb.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 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 differs from the hostname you used to connect
$res = $db->query('SHOW TABLES;'); //test query with the connection
print_r ($res);
$db->close();
}
?>
Étapes suivantes
Pour plus d’informations sur les chaînes de connexion, consultez Chaînes de connexions.