Delen via


Verbinding maken met Azure Database for MariaDB met omleiding

Belangrijk

Azure Database for MariaDB bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan om te migreren naar Azure Database for MySQL. Zie Wat gebeurt er met Azure Database for MariaDB voor meer informatie over migreren naar Azure Database for MySQL.

In dit onderwerp wordt uitgelegd hoe u een toepassing verbindt met uw Azure Database for MariaDB-server met de omleidingsmodus. Omleiding is bedoeld om de netwerklatentie tussen clienttoepassingen en MariaDB-servers te verminderen door toepassingen rechtstreeks verbinding te laten maken met back-endserverknooppunten.

Voordat u begint

Meld u aan bij het Azure-portaal. Maak een Azure Database for MariaDB-server met engineversie 10.2 of 10.3.

Raadpleeg voor meer informatie hoe u een Azure Database for MariaDB-server maakt met behulp van Azure Portal of Azure CLI.

Belangrijk

Omleiding wordt momenteel niet ondersteund met Private Link voor Azure Database for MariaDB.

Omleiding inschakelen

Configureer op uw Azure Database for MariaDB-server de redirect_enabled parameter om verbindingen met de omleidingsmodus toe te ON staan. Als u deze serverparameter wilt bijwerken, gebruikt u Azure Portal of Azure CLI.

PHP

Ondersteuning voor omleiding in PHP-toepassingen is beschikbaar via de mysqlnd_azure-extensie , ontwikkeld door Microsoft.

De mysqlnd_azure-extensie is beschikbaar om toe te voegen aan PHP-toepassingen via PECL en het wordt ten zeerste aanbevolen om de extensie te installeren en te configureren via het officieel gepubliceerde PECL-pakket.

Belangrijk

Ondersteuning voor omleiding in de PHP-mysqlnd_azure-extensie is momenteel in preview.

Omleidingslogica

Belangrijk

Omleidingslogica/gedrag vanaf versie 1.1.0 is bijgewerkt en het wordt aanbevolen om versie 1.1.0+ te gebruiken.

Het omleidingsgedrag wordt bepaald door de waarde van mysqlnd_azure.enableRedirect. In de onderstaande tabel wordt het gedrag van omleiding beschreven op basis van de waarde van deze parameter vanaf versie 1.1.0+.

Als u een oudere versie van de mysqlnd_azure-extensie (versie 1.0.0-1.0.3) gebruikt, wordt het omleidingsgedrag bepaald door de waarde van mysqlnd_azure.enabled. De geldige waarden zijn off (werkt op dezelfde manier als het gedrag dat in de onderstaande tabel wordt beschreven) en on (fungeert als preferred in de onderstaande tabel).

mysqlnd_azure.enableRedirect-waarde Gedrag
off of 0 Omleiding wordt niet gebruikt.
on of 1 - Als de verbinding geen SSL aan de stuurprogrammazijde gebruikt, wordt er geen verbinding gemaakt. De volgende fout wordt geretourneerd: 'mysqlnd_azure.enableRedirect is ingeschakeld, maar de SSL-optie is niet ingesteld in verbindingsreeks. Omleiding is alleen mogelijk met SSL."
- Als SSL wordt gebruikt aan de stuurprogrammazijde, maar omleiding niet wordt ondersteund op de server, wordt de eerste verbinding afgebroken. De volgende fout wordt geretourneerd: 'Verbinding is afgebroken omdat omleiding niet is ingeschakeld op de MariaDB-server of het netwerkpakket voldoet niet aan het omleidingsprotocol'.
- Als de MariaDB-server om welke reden dan ook omleiding ondersteunt, maar de omgeleide verbinding is mislukt, wordt ook de eerste proxyverbinding afgebroken. Retourneer de fout van de omgeleide verbinding.
preferred of 2
(standaardwaarde)
- mysqlnd_azure maakt indien mogelijk gebruik van omleiding.
- Als de verbinding geen SSL aan de stuurprogrammazijde gebruikt, biedt de server geen ondersteuning voor omleiding of kan de omgeleide verbinding om een niet-willekeurige reden geen verbinding maken terwijl de proxyverbinding nog steeds een geldige is, dan valt deze terug op de eerste proxyverbinding.

De volgende secties van het documentoverzicht over het installeren van de mysqlnd_azure extensie met PECL en het instellen van de waarde van deze parameter.

Vereisten

  • PHP-versies 7.2.15+ en 7.3.2+
  • PHP PEREN
  • php-mysql
  • Azure Database for MariaDB-server
  1. Installeer mysqlnd_azure met PECL. Het is raadzaam om versie 1.1.0+ te gebruiken.

    sudo pecl install mysqlnd_azure
    
  2. Zoek de extensiemap (extension_dir) door het onderstaande uit te voeren:

    sudo php -i | grep "extension_dir"
    
  3. Wijzig mappen in de geretourneerde map en zorg ervoor dat mysqlnd_azure.so deze zich in deze map bevindt.

  4. Zoek de map voor .ini bestanden door de onderstaande opdracht uit te voeren:

    sudo hp -i | grep "dir for additional .ini files"
    
  5. Wijzig mappen in deze geretourneerde map.

  6. Maak een nieuw .ini bestand voor mysqlnd_azure. Zorg ervoor dat de alfabetvolgorde van de naam zich achter de mysqnld naam bevindt, omdat de modules worden geladen volgens de naamvolgorde van de ini-bestanden. Als .ini bijvoorbeeld mysqlnd de naam 10-mysqlnd.iniheeft, noemt u de mysqlnd ini als 20-mysqlnd-azure.ini.

  7. Voeg in het nieuwe .ini bestand de volgende regels toe om omleiding in te schakelen.

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

Omleiding bevestigen

U kunt ook controleren of de omleiding is geconfigureerd met de onderstaande PHP-voorbeeldcode. Maak een PHP-bestand met de naam mysqlConnect.php en plak de onderstaande code. Werk de servernaam, gebruikersnaam en wachtwoord bij met uw eigen naam.

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

Volgende stappen

Zie Verbindingsreeksen voor meer informatie over verbindingsreeks s.