Ligar à Base de Dados do Azure para MySQL com redirecionamento
APLICA-SE A: Banco de Dados do Azure para MySQL - Servidor Único
Importante
O servidor único do Banco de Dados do Azure para MySQL está no caminho de desativação. É altamente recomendável que você atualize para o Banco de Dados do Azure para o servidor flexível MySQL. Para obter mais informações sobre como migrar para o Banco de Dados do Azure para servidor flexível MySQL, consulte O que está acontecendo com o Banco de Dados do Azure para Servidor Único MySQL?
Este artigo explica como conectar um aplicativo ao seu Banco de Dados do Azure para servidor MySQL com o modo de redirecionamento. O redirecionamento reduz a latência da rede entre aplicativos cliente e servidores MySQL, permitindo que os aplicativos se conectem diretamente aos nós do servidor back-end.
Antes de começar
Inicie sessão no portal do Azure. Crie um Banco de Dados do Azure para o servidor MySQL com a versão 5.6, 5.7 ou 8.0 do mecanismo.
Para obter detalhes, consulte como criar um Banco de Dados do Azure para o servidor MySQL usando o portal do Azure ou a CLI do Azure.
Importante
Atualmente, não há suporte para o redirecionamento com o Private Link for Azure Database for MySQL.
Ativar redirecionamento
No seu Banco de Dados do Azure para servidor MySQL, configure o parâmetro para ON
permitir conexões com o redirect_enabled
modo de redirecionamento. Para atualizar esse parâmetro de servidor, use o portal do Azure ou a CLI do Azure.
PHP
Suporte para redirecionamento em aplicações PHP está disponível através da extensão mysqlnd_azure , desenvolvido pela Microsoft.
A extensão mysqlnd_azure está disponível para adicionar a aplicativos PHP através do PECL, e é altamente recomendável instalar e configurar a extensão através do pacote PECL publicado oficialmente.
Importante
O suporte para redirecionamento na extensão PHP mysqlnd_azure está atualmente em visualização.
Lógica de redirecionamento
Importante
A lógica/comportamento de redirecionamento a partir da versão 1.1.0 foi atualizada e recomenda-se o uso da versão 1.1.0+.
O comportamento de redirecionamento é determinado pelo valor de mysqlnd_azure.enableRedirect
. A tabela abaixo descreve o comportamento do redirecionamento com base no valor desse parâmetro a partir da versão 1.1.0+.
Se você estiver usando uma versão mais antiga da extensão mysqlnd_azure (versão 1.0.0-1.0.3), o comportamento de redirecionamento será determinado pelo valor de mysqlnd_azure.enabled
. Os valores válidos são off
(age de forma semelhante ao comportamento descrito na tabela abaixo) e on
(age como preferred
na tabela abaixo).
mysqlnd_azure.enableValor de redirecionamento | Comportamento |
---|---|
off ou 0 |
O redirecionamento não será usado. |
on ou 1 |
- Se a conexão não usar SSL no lado do driver, nenhuma conexão será feita. O seguinte erro é retornado: "mysqlnd_azure.enableRedirect está ativado, mas a opção SSL não está definida na cadeia de conexão. O redirecionamento só é possível com SSL." - Se o SSL for usado no lado do driver, mas o redirecionamento não for suportado no servidor, a primeira conexão será abortada e o seguinte erro será retornado: "Conexão abortada porque o redirecionamento não está habilitado no servidor MySQL ou o pacote de rede não atende ao protocolo de redirecionamento." - Se o servidor MySQL suporta redirecionamento, mas a conexão redirecionada falhou por qualquer motivo, também aborte a primeira conexão proxy. Retornar o erro da conexão redirecionada. |
preferred ou 2 (valor padrão) |
- mysqlnd_azure usará o redirecionamento, se possível. - Se a conexão não usar SSL no lado do driver, o servidor não suportar redirecionamento ou a conexão redirecionada não conseguir se conectar por qualquer motivo não fatal enquanto a conexão proxy ainda é válida, ela retornará à primeira conexão proxy. |
Para uma conexão bem-sucedida com o Banco de Dados do Azure para servidor único MySQL usando mysqlnd_azure.enableRedirect
o , você precisa seguir as etapas obrigatórias de combinar seu certificado raiz de acordo com os requisitos de conformidade. Para mais detalhes, visite o link.
As seções subsequentes do documento descrevem como instalar a mysqlnd_azure
extensão usando PECL e definir o valor desse parâmetro.
Pré-requisitos
- PHP versões 7.2.15+ e 7.3.2+
- PERA PHP
- php-mysql
- Base de Dados do Azure para servidor MySQL
Instale mysqlnd_azure com PECL. Recomenda-se usar a versão 1.1.0+.
sudo pecl install mysqlnd_azure
Localize o diretório de extensão (
extension_dir
) executando o seguinte:php -i | grep "extension_dir"
Altere os diretórios para a pasta retornada e verifique se
mysqlnd_azure.so
está localizado nessa pasta.Localize a pasta para .ini arquivos executando o seguinte:
php -i | grep "dir for additional .ini files"
Altere os diretórios para esta pasta retornada.
Crie um novo arquivo de .ini para
mysqlnd_azure
o . Certifique-se de que a ordem alfabética do nome é posterior à de mysqnld, uma vez que os módulos são carregados de acordo com a ordem de nomes dos arquivos ini. Por exemplo, semysqlnd
.ini for nomeado, nomeie10-mysqlnd.ini
o mysqlnd ini como20-mysqlnd-azure.ini
.Dentro do novo arquivo .ini, adicione as seguintes linhas para habilitar o redirecionamento.
extension=mysqlnd_azure mysqlnd_azure.enableRedirect = on/off/preferred
Confirmar redirecionamento
Você também pode confirmar que o redirecionamento está configurado com o código PHP de exemplo abaixo. Crie um arquivo PHP chamado mysqlConnect.php
e cole o código abaixo. Atualize o nome do servidor, o nome de usuário e a senha com o seu próprio.
<?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();
}
?>
Próximos passos
- Para obter mais informações sobre cadeias de conexão, consulte Cadeias de conexão.