Compartir a través de


Conexión a Azure Database for MariaDB con redireccionamiento

Importante

Azure Database for MariaDB está en proceso de retirada. Se recomienda encarecidamente migrar a Azure Database for MySQL. Para más información sobre la migración a Azure Database for MySQL, consulte ¿Qué ocurre con Azure Database for MariaDB?.

En este tema se explica cómo conectar una aplicación del servidor de Azure Database for MariaDB con modo de redireccionamiento. El redireccionamiento pretende reducir la latencia de red entre las aplicaciones cliente y los servidores MariaDB al permitir que las aplicaciones se conecten directamente a los nodos del servidor back-end.

Antes de empezar

Inicie sesión en Azure Portal. Cree un servidor de Azure Database for MariaDB con la versión de motor 10.2 u 10.3.

Si desea información más detallada, consulte la documentación sobre cómo crear un servidor de Azure Database for MariaDB mediante Azure Portal o la CLI de Azure.

Importante

Actualmente no se admite el redireccionamiento con Private Link para Azure Database for MariaDB.

Habilitación del redireccionamiento

En el servidor de Azure Database for MariaDB, configure el parámetro redirect_enabled en ON para permitir conexiones con el modo de redireccionamiento. Para actualizar este parámetro del servidor, use Azure Portal o la CLI de Azure.

PHP

La compatibilidad con el redireccionamiento en aplicaciones PHP está disponible a través de la extensión mysqlnd_azure, desarrollada por Microsoft.

La extensión mysqlnd_azure está disponible para agregar a aplicaciones PHP a través de PECL y se recomienda instalar y configurar la extensión a través del paquete PECL publicado oficialmente.

Importante

La compatibilidad con el redireccionamiento en la extensión mysqlnd_azure de PHP se encuentra actualmente en versión preliminar.

Lógica de redireccionamiento

Importante

Se actualizó la lógica o el comportamiento de redireccionamiento a partir de la versión 1.1.0 y se recomienda usar la versión 1.1.0+.

El comportamiento del redireccionamiento viene determinado por el valor de mysqlnd_azure.enableRedirect. En la tabla siguiente se describe el comportamiento del redireccionamiento según el valor de este parámetro a partir de la versión 1.1.0 + .

Si usa una versión anterior de la extensión mysqlnd_azure (versión 1.0.0-1.0.3), el comportamiento del redireccionamiento viene determinado por el valor de mysqlnd_azure.enabled. Los valores válidos son off (actúa del mismo modo que el comportamiento descrito en la tabla siguiente) y on (actúa como preferred en la tabla siguiente).

Valor de mysqlnd_azure.enableRedirect Comportamiento
off o 0 No se usa el redireccionamiento.
on o 1 - Si la conexión no usa SSL en el lado del controlador, no se realiza ninguna conexión. Se devuelve el siguiente error: "mysqlnd_azure.enableRedirect está activado, pero la opción SSL no está establecida en cadena de conexión. El redireccionamiento solo es posible con SSL".
- Si se usa SSL en el lado del controlador, pero no se admite el redireccionamiento en el servidor, se anula la primera conexión. Se devuelve el siguiente error: "Conectar anulación porque la redirección no está habilitada en el servidor MariaDB o el paquete de red no cumple el protocolo de redirección".
- Si el servidor MariaDB admite el redireccionamiento, pero se produjo un error en la conexión redirigida por cualquier motivo, se anula también la primera conexión del proxy. Se devuelve el error de la conexión redirigida.
preferred o 2
(valor predeterminado)
- mysqlnd_azure usa el redireccionamiento si es posible.
- Si la conexión no usa SSL en el lado del controlador, el servidor no admite el redireccionamiento o la conexión redirigida no se puede conectar por cualquier motivo no grave mientras la conexión del proxy sigue siendo válida, se revierte a la primera conexión del proxy.

En las secciones siguientes del documento se describe cómo instalar la extensión mysqlnd_azure mediante PECL y cómo establecer el valor de este parámetro.

Requisitos previos

  • Versiones de PHP 7.2.15 y posterior y 7.3.2 y posterior.
  • PHP PEAR
  • php-mysql
  • Servidor de Azure Database for MariaDB
  1. Instale mysqlnd_azure con PECL. Se recomienda utilizar la versión 1.1.0+.

    sudo pecl install mysqlnd_azure
    
  2. Para buscar el directorio de la extensión (extension_dir), ejecute lo siguiente:

    sudo php -i | grep "extension_dir"
    
  3. Cambie los directorios a la carpeta devuelta y asegúrese de que mysqlnd_azure.so se encuentra en esta carpeta.

  4. Para buscar la carpeta de los archivos .ini, ejecute lo siguiente:

    sudo hp -i | grep "dir for additional .ini files"
    
  5. Cambie los directorios a la carpeta devuelta.

  6. Cree un nuevo .ini archivo para mysqlnd_azure. Asegúrese de que el orden alfabético del nombre es después del mysqnld , ya que los módulos se cargan según el orden de nombres de los archivos ini. Por ejemplo, si el archivo mysqlnd .ini se denomina 10-mysqlnd.ini, asigne al archivo ini mysqlnd el nombre 20-mysqlnd-azure.ini.

  7. En el nuevo .ini archivo, agregue las siguientes líneas para habilitar el redireccionamiento.

    extension=mysqlnd_azure
    mysqlnd_azure.enableRedirect = on/off/preferred
    

Confirmación del redireccionamiento

También puede confirmar que el redireccionamiento está configurado con el siguiente código PHP de ejemplo. Cree un archivo PHP denominado mysqlConnect.php y pegue el código siguiente. Reemplace el nombre del servidor, el nombre de usuario y la contraseña por sus propios valores.

<?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();
  }
?>

Pasos siguientes

Para obtener más información sobre las cadenas de conexión, consulte Cadenas de conexión.