Partilhar via


mysql_request plugin

O mysql_request plug-in envia uma consulta SQL para um ponto final de rede do MySQL Server e devolve o primeiro conjunto de linhas nos resultados. A consulta pode devolver mais do que um conjunto de linhas, mas apenas o primeiro conjunto de linhas é disponibilizado para o resto da consulta Kusto.

O plug-in é invocado com o evaluate operador .

Importante

O mysql_request plug-in está desativado por predefinição. Para ativar o plug-in, execute o .enable plugin mysql_request comando . Para ver que plug-ins estão ativados, utilize .show plugin comandos de gestão.

Syntax

evaluatemysql_request(ConnectionString,SqlQuery [,SqlParameters] ) [:OutputSchema]

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
ConnectionString string ✔️ O cadeia de ligação que aponta para o ponto final de rede do Servidor MySQL. Veja a autenticação e como especificar o ponto final de rede.
SqlQuery string ✔️ A consulta que vai ser executada no ponto final do SQL. Tem de devolver um ou mais conjuntos de linhas. Apenas o primeiro conjunto é disponibilizado para o resto da consulta.
SqlParameters dynamic Um objeto de conjunto de propriedades que contém pares chave-valor para transmitir como parâmetros juntamente com a consulta.
OutputSchema Os nomes e tipos das colunas esperadas da saída do mysql_request plug-in.

Sintaxe: (ColumnName:ColumnType [, ...] )

Nota

  • Especificar o OutputSchema é altamente recomendado, uma vez que permite que o plug-in seja utilizado em cenários que, de outra forma, não funcionarão sem ele, como uma consulta entre clusters. O OutputSchema também pode ativar várias otimizações de consultas.
  • É gerado um erro se o esquema de tempo de execução do primeiro conjunto de linhas devolvido pelo ponto final de rede SQL não corresponder ao esquema OutputSchema .

Autenticação e autorização

Para autorizar um ponto final de rede do Servidor MySQL, tem de especificar as informações de autorização no cadeia de ligação. O método de autorização suportado é através do nome de utilizador e da palavra-passe.

Definir política de nota de aviso

O plug-in faz notas de aviso para a base de dados MySql. Confirme que a política de nota de aviso do cluster ativa as chamadas do tipo mysql para o MySqlDbUri de destino.

O exemplo seguinte mostra como definir a política de nota de aviso para bases de dados MySQL. Recomendamos que restrinja a política de nota de aviso a pontos finais específicos (my_endpoint1, my_endpoint2).

[
  {
    "CalloutType": "mysql",
    "CalloutUriRegex": "my_endpoint1\\.mysql\\.database\\.azure\\.com",
    "CanCall": true
  },
  {
    "CalloutType": "mysql",
    "CalloutUriRegex": "my_endpoint2\\.mysql\\.database\\.azure\\.com",
    "CanCall": true
  }
]

O exemplo seguinte mostra um .alter callout policy comando para mysqlCalloutType:

.alter cluster policy callout @'[{"CalloutType": "mysql", "CalloutUriRegex": "\\.mysql\\.database\\.azure\\.com", "CanCall": true}]'

Autenticação de nome de utilizador e palavra-passe

O mysql_request plug-in só suporta a autenticação de nome de utilizador e palavra-passe no ponto final do servidor MySQL e não se integra na autenticação Microsoft Entra.

O nome de utilizador e a palavra-passe são fornecidos como parte da cadeia de ligações com os seguintes parâmetros:

User ID=...; Password=...;

Aviso

As informações confidenciais ou guardadas devem ser ocultadas de cadeias de ligação e consultas para que sejam omitidas de qualquer rastreio do Kusto. Para obter mais informações, veja literais de cadeias ocultas.

Encriptação e validação do servidor

Por motivos de segurança, SslMode é definido incondicionalmente como Required ao ligar a um ponto final de rede do servidor MySQL. Como resultado, o servidor tem de ser configurado com um certificado de servidor SSL/TLS válido.

Especificar o ponto final de rede

Especifique o ponto final de rede mySQL como parte do cadeia de ligação.

Sintaxe:

Server=FQDN [Port=Porta]

Em que:

  • FQDN é o nome de domínio completamente qualificado do ponto final.
  • A porta é a porta TCP do ponto final. Por predefinição, 3306 é assumido.

Exemplos

Consulta SQL para a BD MySQL do Azure

O exemplo seguinte envia uma consulta SQL para uma base de dados MySQL do Azure. Obtém todos os registos de [dbo].[Table]e, em seguida, processa os resultados.

Nota

Este exemplo não deve ser considerado como uma recomendação para filtrar ou projetar dados desta forma. As consultas SQL devem ser construídas para devolver o menor conjunto de dados possível.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select * from `dbo`.`Table`') : (Id: int, Name: string)
| where Id > 0
| project Name

Consulta SQL para uma base de dados MySQL do Azure com modificações

O exemplo seguinte envia uma consulta SQL para uma base de dados MySQL do Azure que obtém todos os registos de [dbo].[Table], ao acrescentar outra datetime coluna e, em seguida, processa os resultados no lado do Kusto. Especifica um parâmetro SQL (@param0) a ser utilizado na consulta SQL.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select *, @param0 as dt from `dbo`.`Table`',
    dynamic({'param0': datetime(2020-01-01 16:47:26.7423305)})) : (Id:long, Name:string, dt: datetime)
| where Id > 0
| project Name

Consulta SQL para uma base de dados MySQL do Azure sem um esquema de saída definido pela consulta

O exemplo seguinte envia uma consulta SQL para uma base de dados MySQL do Azure sem um esquema de saída. Isto não é recomendado a menos que o esquema seja desconhecido, uma vez que pode afetar o desempenho da consulta.

evaluate mysql_request(
    'Server=contoso.mysql.database.azure.com; Port = 3306;'
    'Database=Fabrikam;'
    h'UID=USERNAME;'
    h'Pwd=PASSWORD;',
    'select * from `dbo`.`Table`')
| where Id > 0
| project Name

Esta capacidade não é suportada no Azure Monitor.