Utilizar bases de dados de seguidores

A funcionalidade de base de dados do seguidor permite-lhe anexar uma base de dados localizada num cluster diferente ao cluster do Azure Data Explorer. A base de dados do seguidor é anexada no modo só de leitura , o que permite ver os dados e executar consultas nos dados que foram ingeridos na base de dados leader. A base de dados do seguidor sincroniza as alterações nas bases de dados leader. Devido à sincronização, existe um atraso de dados de alguns segundos a alguns minutos na disponibilidade de dados. A duração do atraso de tempo depende do tamanho geral dos metadados da base de dados principal. As bases de dados de coordenador e seguidor utilizam a mesma conta de armazenamento para obter os dados. O armazenamento pertence à base de dados leader. A base de dados do seguidor vê os dados sem ter de os ingerir. Uma vez que a base de dados anexada é uma base de dados só de leitura, os dados, tabelas e políticas na base de dados não podem ser modificados, exceto para políticas de colocação em cache, principais e permissões. As bases de dados anexadas não podem ser eliminadas. Têm de ser desanexados pelo líder ou seguidor e só assim podem ser eliminados.

A anexação de uma base de dados a um cluster diferente com a capacidade do seguidor é utilizada como a infraestrutura para partilhar dados entre organizações e equipas. A funcionalidade é útil para segregar recursos de computação para proteger um ambiente de produção de casos de utilização não produtivos. O seguidor também pode ser utilizado para associar o custo do cluster do Azure Data Explorer à entidade que executa consultas nos dados.

Para exemplos de código baseados em versões anteriores do SDK, veja o artigo arquivado.

Que bases de dados são seguidas?

  • Um cluster pode seguir uma base de dados, várias bases de dados ou todas as bases de dados de um cluster líder.
  • Um único cluster pode seguir bases de dados de vários clusters líderes.
  • Um cluster pode conter bases de dados de seguidores e bases de dados de líder.

Pré-requisitos

Anexar uma base de dados

Existem vários métodos que pode utilizar para anexar uma base de dados. Neste artigo, vamos abordar a anexação de uma base de dados com C#, Python, PowerShell ou um modelo de Resource Manager do Azure. Para anexar uma base de dados, tem de ter utilizador, grupo, principal de serviço ou identidade gerida com, pelo menos, a função de contribuidor no cluster de líderes e no cluster de seguidores. Adicione ou remova atribuições de funções com portal do Azure, PowerShell, CLI do Azure e modelo do ARM. Saiba mais sobre o controlo de acesso baseado em funções do Azure (RBAC do Azure) e as diferentes funções.

Partilha ao nível da tabela

Ao anexar todas as tabelas da base de dados, também são seguidas tabelas externas e vistas materializadas. Pode partilhar tabelas/tabelas externas/vistas materializadas ao configurar "TableLevelSharingProperties".

"TableLevelSharingProperties" contém oito matrizes de cadeias: tablesToInclude, , externalTablesToIncludetablesToExclude, externalTablesToExclude, , materializedViewsToInclude, materializedViewsToExclude, functionsToIncludee functionsToExclude. O número máximo de entradas em todas as matrizes em conjunto é 100.

Nota

  • A partilha ao nível da tabela não é suportada ao utilizar a notação "*" de todas as bases de dados.
  • Quando as vistas materializadas são incluídas, as respetivas tabelas de origem também são incluídas.

Exemplos

  1. Inclua todas as tabelas. Não é necessário "*", uma vez que todas as tabelas são seguidas por predefinição:

    tablesToInclude = []
    
  2. Inclua todas as tabelas com nomes que comecem por "Registos":

    tablesToInclude = ["Logs*"]
    
  3. Excluir todas as tabelas externas:

    externalTablesToExclude = ["*"]
    
  4. Excluir todas as vistas materializadas:

    materializedViewsToExclude=["*"]
    

Substituição do nome da base de dados

Opcionalmente, pode tornar o nome da base de dados no cluster de seguidores diferente do cluster de líderes. Por exemplo, poderá querer anexar o mesmo nome de base de dados de vários clusters de líderes a um cluster de seguidores. Para especificar um nome de base de dados diferente, configure a propriedade "DatabaseNameOverride" ou "DatabaseNamePrefix".

Anexar uma base de dados com C#

Pacotes NuGet necessários

Exemplo de C#

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, followerSubscriptionId);
var followerResourceGroupName = "followerResourceGroup";
var followerClusterName = "follower";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(followerResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(followerClusterName)).Value;
var attachedDatabaseConfigurations = cluster.GetKustoAttachedDatabaseConfigurations();
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration"
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var leaderResourceGroup = "leaderResourceGroup";
var leaderClusterName = "leader";
var attachedDatabaseConfigurationData = new KustoAttachedDatabaseConfigurationData
{
    ClusterResourceId = new ResourceIdentifier($"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}"),
    DatabaseName = "<databaseName>", // Can be a specific database name in a leader cluster or * for all databases
    DefaultPrincipalsModificationKind = KustoDatabaseDefaultPrincipalsModificationKind.Union,
    Location = AzureLocation.NorthCentralUS
};
// Table level sharing properties are not supported when using '*' all databases notation.
if (attachedDatabaseConfigurationData.DatabaseName != "*")
{
    // Set up the table level sharing properties - the following is just an example.
    attachedDatabaseConfigurationData.TableLevelSharingProperties = new KustoDatabaseTableLevelSharingProperties();
    attachedDatabaseConfigurationData.TableLevelSharingProperties.TablesToInclude.Add("table1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.TablesToExclude.Add("table2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.ExternalTablesToExclude.Add("exTable1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.ExternalTablesToInclude.Add("exTable2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.MaterializedViewsToInclude.Add("matTable1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.MaterializedViewsToExclude.Add("matTable2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.FunctionsToInclude.Add("func1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.FunctionsToExclude.Add("func2");
}
await attachedDatabaseConfigurations.CreateOrUpdateAsync(WaitUntil.Completed, attachedDatabaseConfigurationName, attachedDatabaseConfigurationData);

Verifique se a base de dados foi anexada com êxito

Para verificar se a base de dados foi anexada com êxito, localize as bases de dados anexadas no portal do Azure. Pode verificar se as bases de dados foram anexadas com êxito nos clusters de seguimento ou de classificação.

Verificar o cluster de seguidores

  1. Navegue para o cluster de seguidores e selecione Bases de dados.

  2. Na lista de bases de dados, procure novas bases de dados só de leitura.

    Captura de ecrã a mostrar as bases de dados de seguidores só de leitura no portal.

    Também pode ver esta lista na página de descrição geral da base de dados:

    Captura de ecrã da página de descrição geral das bases de dados com a lista de clusters de seguidores.

Verificar o cluster de coordenadores

  1. Navegue para o cluster líder e selecione Bases de Dados

  2. Verifique se as bases de dados relevantes estão marcadas como PARTILHADAS COM OUTRAS Pessoas>– Sim

  3. Alterne a ligação de relação para ver os detalhes.

    Captura de ecrã das bases de dados partilhadas com outras pessoas para verificar o cluster de coordenadores.

    Também pode ver isto na página de descrição geral da base de dados:

    Captura de ecrã a mostrar a descrição geral com a lista de bases de dados partilhadas com outras pessoas.

Desanexar a base de dados do seguidor

Nota

Para desanexar uma base de dados do lado do seguidor ou do líder, tem de ter utilizador, grupo, principal de serviço ou identidade gerida com, pelo menos, a função de contribuidor no cluster a partir do qual está a desanexar a base de dados. No exemplo abaixo, utilizamos o principal de serviço.

Desanexe a base de dados do seguidor anexado do cluster de seguidores com C#**

O cluster de seguidores pode desanexar qualquer base de dados de seguidor anexada da seguinte forma:

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, followerSubscriptionId);
var followerResourceGroupName = "testrg";
//The cluster and database attached database configuration are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(followerResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(followerClusterName)).Value;
var attachedDatabaseConfiguration = (await cluster.GetKustoAttachedDatabaseConfigurationAsync(attachedDatabaseConfigurationsName)).Value;
await attachedDatabaseConfiguration.DeleteAsync(WaitUntil.Completed);

Desanexar a base de dados do seguidor anexado do cluster de coordenador com C#

O cluster de coordenadores pode desanexar qualquer base de dados anexada da seguinte forma:

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, leaderSubscriptionId);
var leaderResourceGroupName = "testrg";
var leaderClusterName = "leader";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(leaderResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(leaderClusterName)).Value;
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerResourceGroupName = "followerResourceGroup";
//The cluster and attached database configuration that are created as part of the Prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
var followerDatabaseDefinition = new KustoFollowerDatabaseDefinition(
    clusterResourceId: new ResourceIdentifier($"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}"),
    attachedDatabaseConfigurationName: attachedDatabaseConfigurationsName
);
await cluster.DetachFollowerDatabasesAsync(WaitUntil.Completed, followerDatabaseDefinition);

Gerir principais, permissões e política de colocação em cache

Gerir principais

Ao anexar uma base de dados, especifique o "tipo de modificação de principais predefinidos". A predefinição é combinar a substituição de principais autorizados com a coleção de bases de dados de coordenador de principais autorizados

Tipo Descrição
União Os principais de base de dados anexados incluirão sempre os principais de base de dados originais e outros principais novos adicionados à base de dados de seguidores.
Substituir Nenhuma herança de principais da base de dados original. Têm de ser criados novos principais para a base de dados anexada.
Nenhuma Os principais de base de dados anexados incluem apenas os principais da base de dados original sem outros principais.

Para obter mais informações sobre como utilizar comandos de gestão para configurar os principais autorizados, veja Comandos de gestão para gerir um cluster de seguidores.

Gerir permissões

Gerir a permissão de base de dados só de leitura é o mesmo que para todos os tipos de base de dados. Para atribuir permissões, veja Gerir permissões de base de dados no portal do Azure ou utilizar comandos de gestão para Gerir funções de segurança de bases de dados.

Configurar a política de colocação em cache

O administrador da base de dados seguinte pode modificar a política de colocação em cache da base de dados anexada ou qualquer uma das respetivas tabelas no cluster de alojamento. A predefinição é combinar a base de dados de origem na base de dados do cluster líder e políticas de colocação em cache ao nível da tabela com as políticas definidas nas políticas de substituição ao nível da base de dados e da tabela. Pode, por exemplo, ter uma política de colocação em cache de 30 dias na base de dados leader para executar relatórios mensais e uma política de colocação em cache de três dias na base de dados do seguidor para consultar apenas os dados recentes para resolução de problemas. Para obter mais informações sobre como utilizar comandos de gestão para configurar a política de colocação em cache na base de dados ou tabela do seguidor, veja Comandos de gestão para gerir um cluster de seguidores.

Notas

  • Se existirem conflitos entre bases de dados de clusters de coordenador/seguidor, quando todas as bases de dados são seguidas pelo cluster de seguidores, estas são resolvidas da seguinte forma:
    • Uma base de dados com o nome BD criada no cluster de seguidores tem precedência sobre uma base de dados com o mesmo nome que foi criado no cluster de classificação. É por isso que a base de dados DB no cluster de seguidores tem de ser removida ou renomeada para que o cluster de seguidores inclua a base de dados do líder.
    • Uma base de dados com o nome BD seguida de dois ou mais clusters de coordenador será escolhida arbitrariamente a partir de um dos clusters de classificação e não será seguida mais do que uma vez.
  • Os comandos para mostrar o registo de atividades do cluster e a execução do histórico num cluster de seguidores mostrarão a atividade e o histórico no cluster de seguidores e os respetivos conjuntos de resultados não incluirão esses resultados do cluster ou clusters de classificação.
    • Por exemplo: uma .show queries execução de comandos no cluster de seguidores apenas mostrará as consultas executadas em bases de dados seguidas pelo cluster de seguidores e não as consultas são executadas na mesma base de dados no cluster de coordenadores.

Limitações

  • Os clusters de seguimento e de preenchimento têm de estar na mesma região.
  • Se a Ingestão de transmissão em fluxo for utilizada numa base de dados que está a ser seguida, o cluster de seguidores deve ser ativado para Ingestão de Transmissão em Fluxo para permitir o seguimento dos dados de ingestão de transmissão em fluxo.
  • Seguir um cluster com encriptação de dados com chaves geridas pelo cliente (CMK) é suportado com as seguintes limitações:
    • Nem o cluster de seguidores nem o cluster de classificação estão a seguir outros clusters.
    • Se um cluster de seguidores estiver a seguir um cluster de coordenador com CMK ativado e o acesso do coordenador à chave for revogado, os clusters de coordenador e de seguidor serão suspensos. Nesta situação, pode resolver o problema da CMK e, em seguida, retomar o cluster do seguidor ou desanexar as bases de dados de seguidores do cluster de seguidores e retomar independentemente do cluster de coordenadores.
  • Não pode eliminar uma base de dados anexada a um cluster diferente antes de a desanexar.
  • Não pode eliminar um cluster que tenha uma base de dados anexada a um cluster diferente antes de o desanexar.
  • As propriedades de partilha ao nível da tabela não são suportadas ao seguir todas as bases de dados.
  • Nas bases de dados de seguidores, para consultar tabelas externas que utilizam uma Identidade Gerida como método de autenticação, a Identidade Gerida tem de ser adicionada ao cluster de seguidores. Esta capacidade não funciona quando os clusters de coordenador e seguidor são aprovisionados em inquilinos diferentes.

Passo seguinte