Plug-in mysql_request

O plug-in mysql_request envia uma consulta SQL a um ponto de extremidade de rede do MySQL Server e retorna o primeiro conjunto de linhas dos resultados. A consulta pode retornar mais de um conjunto de linhas, mas apenas o primeiro conjunto de linhas é disponibilizado para o restante da consulta Kusto.

O plug-in é invocado com o evaluate operador .

Importante

O mysql_request plug-in está desabilitado por padrão. Para habilitar o plug-in, execute o .enable plugin mysql_request comando . Para ver quais plug-ins estão habilitados, use .show plugin comandos de gerenciamento.

Syntax

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

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
ConnectionString string ✔️ O cadeia de conexão que aponta para o ponto de extremidade de rede do MySQL Server. Confira autenticação e como especificar o ponto de extremidade de rede.
SqlQuery string ✔️ A consulta que deve ser executada no ponto de extremidade sql. Deve retornar um ou mais conjuntos de linhas. Somente o primeiro conjunto é disponibilizado para o restante da consulta.
SqlParameters dynamic Um objeto de recipiente de propriedades que contém pares chave-valor para passar como parâmetros junto com a consulta.
OutputSchema Os nomes e tipos para as colunas esperadas da saída do mysql_request plug-in.

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

Observação

  • Especificar o OutputSchema é altamente recomendável, pois permite que o plug-in seja usado em cenários que, de outra forma, podem não funcionar sem ele, como uma consulta entre clusters. O OutputSchema também pode habilitar várias otimizações de consulta.
  • Um erro será gerado se o esquema em tempo de execução do primeiro conjunto de linhas retornado pelo ponto de extremidade de rede SQL não corresponder ao esquema OutputSchema .

Autenticação e autorização

Para autorizar um ponto de extremidade de rede do MySQL Server, você precisa especificar as informações de autorização no cadeia de conexão. O método de autorização com suporte é por meio de nome de usuário e senha.

Definir política de texto explicativo

O plug-in faz textos explicativos para o banco de dados MySql. Verifique se a política de texto explicativo do cluster habilita chamadas do tipo mysql para o MySqlDbUri de destino.

O exemplo a seguir mostra como definir a política de texto explicativo para bancos de dados MySQL. É recomendável restringir a política de texto explicativo a pontos de extremidade 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 a seguir mostra um .alter callout policy comando para mysqlCalloutType:

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

Nome de usuário e autenticação de senha

O mysql_request plug-in dá suporte apenas à autenticação de nome de usuário e senha para o ponto de extremidade do servidor MySQL e não se integra à autenticação Microsoft Entra.

O nome de usuário e a senha são fornecidos como parte da cadeia de conexões usando os seguintes parâmetros:

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

Aviso

As informações confidenciais ou protegidas devem ser ofuscadas de cadeias de conexão e consultas para que sejam omitidas de qualquer rastreamento do Kusto. Para obter mais informações, consulte literais de cadeia de caracteres ofuscados.

Validação de criptografia e servidor

Para segurança, SslMode é definido incondicionalmente como Required ao se conectar a um ponto de extremidade de rede do servidor MySQL. Como resultado, o servidor deve ser configurado com um certificado de servidor SSL/TLS válido.

Especificar o ponto de extremidade de rede

Especifique o ponto de extremidade de rede MySQL como parte do cadeia de conexão.

Sintaxe:

Server=FQDN [Port=Porta]

Em que:

  • FQDN é o nome de domínio totalmente qualificado do ponto de extremidade.
  • A porta é a porta TCP do ponto de extremidade. Por padrão, 3306 é assumido.

Exemplos

Consulta SQL para o BD MySQL do Azure

O exemplo a seguir envia uma consulta SQL para um banco de dados MySQL do Azure. Ele recupera todos os registros de [dbo].[Table]e processa os resultados.

Observação

Este exemplo não deve ser usado como uma recomendação para filtrar ou projetar dados dessa maneira. As consultas SQL devem ser construídas para retornar 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 um banco de dados MySQL do Azure com modificações

O exemplo a seguir envia uma consulta SQL para um banco de dados MySQL do Azure recuperando todos os registros de [dbo].[Table], acrescentando outra datetime coluna e processando os resultados no lado do Kusto. Ele especifica um parâmetro SQL (@param0) a ser usado 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 um banco de dados MySQL do Azure sem um esquema de saída definido por consulta

O exemplo a seguir envia uma consulta SQL para um banco de dados MySQL do Azure sem um esquema de saída. Isso não é recomendado, a menos que o esquema seja desconhecido, pois 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

Não há suporte para essa funcionalidade no Azure Monitor.