Partilhar via


Usar bancos de dados de seguidores

O recurso de banco de dados de seguidores permite anexar um banco de dados localizado em um cluster diferente ao cluster do Azure Data Explorer. O banco de dados de seguidores é anexado no modo somente leitura , tornando possível visualizar os dados e executar consultas sobre os dados que foram ingeridos no banco de dados líder. O banco de dados de seguidores sincroniza as alterações nos bancos de dados de líderes. Devido à sincronização, há um atraso de dados de alguns segundos a alguns minutos na disponibilidade de dados. A duração do intervalo de tempo depende do tamanho total dos metadados do banco de dados líder. Os bancos de dados de líderes e seguidores usam a mesma conta de armazenamento para buscar os dados. O banco de dados líder é o proprietário do armazenamento. O banco de dados de seguidores visualiza os dados sem precisar ingeri-los. Como o banco de dados anexado é um banco de dados somente leitura, os dados, tabelas e políticas no banco de dados não podem ser modificados, exceto para políticas de cache, entidades e permissões. Os bancos de dados anexados não podem ser excluídos. O líder ou seguidor deve desanexar bancos de dados antes da exclusão.

Anexar um banco de dados a um cluster diferente usando o recurso de seguidor é usado como a infraestrutura para compartilhar dados entre organizações e equipes. O recurso é útil para segregar recursos de computação para proteger um ambiente de produção de casos de uso que não sejam de produção. O Follower também pode ser usado para associar o custo do cluster do Azure Data Explorer à parte interessada que executa consultas nos dados.

Observação

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

Que bases de dados são seguidas?

O seguinte aplica-se aos clusters:

  • Um cluster pode seguir um banco de dados, vários bancos de dados ou todos os bancos de dados de um cluster líder.
  • Um único cluster pode seguir bancos de dados de vários clusters líderes.
  • Um cluster pode conter bancos de dados de seguidores e bancos de dados de líderes.

Pré-requisitos

Anexar uma base de dados

Há vários métodos que você pode usar para anexar um banco de dados. Neste artigo, discutimos a anexação de um banco de dados usando C#, Python, PowerShell ou um modelo do Azure Resource Manager. Para anexar um banco de dados, você deve ter usuário, grupo, entidade de serviço ou identidade gerenciada com pelo menos a função de colaborador no cluster de líderes e no cluster de seguidores. Adicione ou remova atribuições de função usando o portal do Azure, PowerShell, CLI do Azure e modelo ARM. Saiba mais sobre o controle de acesso baseado em função do Azure (Azure RBAC) e as diferentes funções.

Observação

Não é necessário pré-criar um banco de dados de seguidores, pois um é criado durante o processo de associação.

Partilha ao nível da tabela

Quando você anexa bancos de dados, todas as tabelas, tabelas externas e exibições materializadas também são seguidas. Você pode compartilhar tabelas específicas/tabelas externas/exibições materializadas configurando o 'TableLevelSharingProperties'.

'TableLevelSharingProperties' contém oito matrizes de cadeias de caracteres: tablesToInclude, tablesToExclude, externalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, functionsToIncludee functionsToExclude. O número máximo de entradas em todas as matrizes juntas é 100.

Observação

  • O compartilhamento no nível da tabela não é suportado ao usar a notação '*' de todos os bancos de dados.
  • Quando as visualizações materializadas são incluídas, suas tabelas de origem também são incluídas.

Exemplos

O exemplo a seguir inclui todas as tabelas. Por padrão, todas as tabelas são seguidas sem usar a notação '*':

tablesToInclude = []

O exemplo a seguir inclui todas as funções. Por padrão, todas as funções são seguidas sem usar a notação '*':

functionsToInclude = []

O exemplo a seguir inclui todas as tabelas com nomes que começam com "Logs":

tablesToInclude = ["Logs*"]

O exemplo a seguir inclui todas as tabelas externas:

externalTablesToExclude = ["*"]

O exemplo a seguir inclui todas as vistas materializadas:

materializedViewsToExclude=["*"]

Substituição do nome do banco de dados

Opcionalmente, você pode tornar o nome do banco de dados no cluster de seguidores diferente do cluster de líderes. Por exemplo, talvez você queira anexar o mesmo nome de banco de dados de vários clusters de líderes a um cluster de seguidores. Para especificar um nome de banco de dados diferente, configure a propriedade 'DatabaseNameOverride' ou 'DatabaseNamePrefix'.

Anexar um banco de dados usando C#

Pacotes NuGet necessários

Exemplo de C#

var followerClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "followerResourceGroup", clusterName: "follower");
var leaderClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "leaderResourceGroup", clusterName: "leader");
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration";

var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var followerCluster = resourceManagementClient.GetKustoClusterResource(followerClusterId);
var attachedDatabaseConfigurations = followerCluster.GetKustoAttachedDatabaseConfigurations();
var attachedDatabaseConfigurationData = new KustoAttachedDatabaseConfigurationData
{
    ClusterResourceId = leaderClusterId,
    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 o banco de dados foi anexado com êxito

Para verificar se o banco de dados foi anexado com êxito, localize seus bancos de dados anexados no portal do Azure. Você pode verificar se os bancos de dados foram anexados com êxito nos clusters de seguidores ou líderes .

Verifique o seu grupo de seguidores

  1. Navegue até o cluster de seguidores e selecione Bancos de dados.

  2. Na lista de bancos de dados, procure novos bancos de dados somente leitura.

    Captura de tela de bancos de dados de seguidores somente leitura no portal.

    Você também pode exibir essa lista na página de visão geral do banco de dados:

    Captura de tela da página de visão geral de bancos de dados com lista de clusters de seguidores.

Verifique o seu cluster de líderes

  1. Navegue até o cluster líder e selecione Bancos de dados

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

  3. Alterne o link de relacionamento para exibir detalhes.

    Captura de tela de bancos de dados compartilhados com outras pessoas para verificar o cluster de líderes.

    Você também pode visualizar isso na página de visão geral do banco de dados:

    Captura de tela da visão geral com a lista de bancos de dados compartilhados com outras pessoas.

Desanexar o banco de dados de seguidores

Observação

Para desanexar um banco de dados do lado do seguidor ou líder, você deve ter usuário, grupo, entidade de serviço ou identidade gerenciada com pelo menos a função de colaborador no cluster do qual está desanexando o banco de dados. No exemplo abaixo, usamos a entidade de serviço.

Desanexe o banco de dados de seguidores anexado do cluster de seguidores usando C#**

O cluster de seguidores pode desanexar qualquer banco de dados de seguidores anexado da seguinte maneira:

var attachedDatabaseConfigurationId = KustoAttachedDatabaseConfigurationResource.CreateResourceIdentifier(
    subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "testrg", clusterName: "follower",
    attachedDatabaseConfigurationName: "attachedDatabaseConfiguration");
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var attachedDatabaseConfiguration = resourceManagementClient.GetKustoAttachedDatabaseConfigurationResource(attachedDatabaseConfigurationId);
await attachedDatabaseConfiguration.DeleteAsync(WaitUntil.Completed);

Desanexar o banco de dados de seguidores anexado do cluster de líderes usando C#

O cluster líder pode desanexar qualquer banco de dados anexado da seguinte maneira:

var leaderClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "testrg", clusterName: "leader");
var followerClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "followerResourceGroup", clusterName: "follower");
var followerDatabaseDefinition = new KustoFollowerDatabaseDefinition(
    clusterResourceId: followerClusterId,
    attachedDatabaseConfigurationName: "attachedDatabaseConfiguration"
);
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var leaderCluster = resourceManagementClient.GetKustoClusterResource(leaderClusterId);
await leaderCluster.DetachFollowerDatabasesAsync(WaitUntil.Completed, followerDatabaseDefinition);

Gerir entidades, permissões e política de cache

Gerir principais

Ao anexar um banco de dados, especifique o "tipo de modificação de entidades padrão". O padrão é combinar as entidades autorizadas de substituição com a coleção de banco de dados líder de entidades autorizadas

Amável Descrição
União As entidades de banco de dados anexadas sempre incluirão as entidades de banco de dados originais mais outras novas entidades adicionadas ao banco de dados de seguidores.
Substituir Nenhuma herança de entidades do banco de dados original. Devem ser criados novos principais para o banco de dados anexado.
Nenhum Os principais anexados do banco de dados incluem apenas os principais do banco de dados original, sem outros principais.

Para obter mais informações sobre como usar comandos de gerenciamento para configurar as entidades autorizadas, consulte Comandos de gerenciamento para gerenciar um cluster de seguidores.

Gerenciar permissões

O gerenciamento da permissão de banco de dados somente leitura é o mesmo que para todos os tipos de banco de dados. Para atribuir permissões, consulte Gerenciar permissões de banco de dados no portal do Azure ou usar comandos de gerenciamento para Gerenciar funções de segurança de banco de dados.

Configurar política de cache

O administrador do banco de dados de seguidores pode modificar a política de cache do banco de dados anexado ou qualquer uma de suas tabelas no cluster de hospedagem. O padrão é combinar o banco de dados de origem no banco de dados de cluster líder e as políticas de cache no nível da tabela com as políticas definidas no banco de dados e nas políticas de substituição no nível da tabela. Você pode, por exemplo, ter uma política de cache de 30 dias no banco de dados líder para executar relatórios mensais e uma política de cache de três dias no banco de dados de seguidores para consultar apenas os dados recentes para solução de problemas. Para obter mais informações sobre como usar comandos de gerenciamento para configurar a política de cache no banco de dados ou tabela de seguidores, consulte Comandos de gerenciamento para gerenciar um cluster de seguidores.

Observações

Analise as seguintes notas:

  • Se houver conflitos entre bancos de dados de clusters de líderes/seguidores, quando todos os bancos de dados forem seguidos pelo cluster de seguidores, eles serão resolvidos da seguinte forma:
    • Um banco de dados chamado DB criado no cluster de seguidores tem precedência sobre um banco de dados com o mesmo nome que foi criado no cluster líder. É por isso que o banco de dados DB no cluster seguidor precisa ser removido ou renomeado para que o cluster seguidor inclua o banco de dados DB do líder.
    • Um banco de dados chamado DB seguido de dois ou mais clusters de líderes será escolhido arbitrariamente de um dos clusters de líderes e não será seguido mais de uma vez.
  • Os comandos para mostrar o log de atividades e o histórico do cluster executados em um cluster de seguidores mostram a atividade e o histórico no cluster de seguidores, e seus conjuntos de resultados não incluem esses resultados do cluster ou clusters líderes.
    • Por exemplo: um .show queries comando executado no cluster de seguidores mostra apenas consultas executadas em bancos de dados seguidas por cluster de seguidores, e não consultas executadas no mesmo banco de dados no cluster de líderes.

Limitações

Analise as seguintes limitações:

  • Os clusters de seguidores e líderes devem estar na mesma região.
  • Se a ingestão de streaming for usada numa base de dados que está a ser seguida, o cluster seguidor deve ser habilitado para a ingestão de streaming para permitir o acompanhamento dos dados de ingestão de streaming.
  • Seguir um cluster com criptografia de dados usando chaves gerenciadas pelo cliente (CMK) é suportado com as seguintes limitações:
    • O cluster de seguidores ou o cluster de líderes não está seguindo outros clusters.
    • Se um cluster de seguidores estiver seguindo um cluster de líderes com CMK habilitada e o acesso do líder à chave for revogado, tanto o líder quanto os clusters de seguidores serão suspensos. Nessa situação, pode-se resolver o problema de CMK e, em seguida, retomar o cluster subordinado, ou optar por desanexar os bancos de dados subordinados do cluster subordinado e retomar o funcionamento de forma independente do cluster líder.
  • Não é possível excluir um banco de dados anexado a um cluster diferente antes de desanexá-lo.
  • Não é possível excluir um cluster que tenha um banco de dados anexado a um cluster diferente antes de desanexá-lo.
  • Não há suporte para propriedades de compartilhamento no nível de tabela ao seguir todos os bancos de dados.
  • Em bancos de dados de seguidores, para consultar tabelas externas que usam uma Identidade Gerenciada como método de autenticação, a Identidade Gerenciada deve ser adicionada ao cluster de seguidores. Esse recurso não funciona quando os clusters de líder e seguidor são provisionados em locatários diferentes.

Próximo passo