Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O recurso de replicação de banco de dados permite conectar um banco de dados que está localizado em um cluster diferente ao cluster do Azure Data Explorer. O banco de dados seguidor é anexado no modo de somente leitura , tornando possível exibir os dados e executar consultas nos dados que foram inseridos no banco de dados líder . O banco de dados seguidor sincroniza as alterações nos bancos de dados líderes. Devido à sincronização, há um atraso de dados de alguns segundos a alguns minutos na disponibilidade dos dados. O tamanho do atraso depende do tamanho geral dos metadados do banco de dados líder. Os bancos de dados líder e seguidor usam a mesma conta de armazenamento para buscar os dados. O armazenamento pertence ao banco de dados líder. O banco de dados seguidor 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 a política de cache , os principais e as permissões . Bancos de dados anexados não podem ser excluídos. Eles devem ser desanexados pelo líder ou pelo seguidor e só então poderão ser excluídos.
Anexar um banco de dados a um cluster diferente utilizando a funcionalidade de seguidor serve como infraestrutura para compartilhar dados entre organizações e equipes. O recurso é útil para separar recursos de computação para proteger um ambiente de produção contra casos de uso que não são de produção. O seguidor de dados também pode ser usado para associar o custo do cluster do Azure Data Explorer à parte responsável por executar consultas nos dados.
Quais bancos de dados são seguidos?
- 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 seguidor e bancos de dados líderes.
- Os clusters EngineV3 só podem seguir clusters EngineV3; da mesma forma, clusters EngineV2 só podem seguir clusters V2.
Pré-requisitos
- Uma assinatura do Azure. Criar uma conta gratuita do Azure.
- Um cluster do Azure Data Explorer e um banco de dados para o líder e o seguidor. Criar um cluster e um banco de dados.
- O banco de dados líder deve conter dados. Você pode ingerir dados usando um dos métodos discutidos em visão geral da ingestão.
Anexar um banco de dados
Há vários métodos que você pode usar para anexar um banco de dados. Neste artigo, discutiremos 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 líder e no cluster de seguidor. Adicione ou remova atribuições de função usando portal do Azure, PowerShell do Azure, CLI do Azuree modelo ARM. Saiba mais sobre o controle de acesso baseado em função do Azure (Azure RBAC) e os diferentes papéis.
Compartilhamento de nível de tabela
Ao anexar o banco de dados, todas as tabelas, tabelas externas e visões materializadas são incluídas também. 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
Não há suporte para o compartilhamento de nível de tabela ao usar a notação '*' para todos os bancos de dados.
Observação
Quando as exibições materializadas são incluídas, suas tabelas de origem também são incluídas.
Exemplos
Inclua todas as tabelas. Nenhuma '*' é necessária, pois todas as tabelas são seguidas por padrão:
tablesToInclude = []Inclua todas as tabelas com nomes que começam com "Logs":
tablesToInclude = ["Logs*"]Excluir todas as tabelas externas:
externalTablesToExclude = ["*"]Excluir todas as visões materializadas:
materializedViewsToExclude=["*"]
Substituição do nome do banco de dados
Opcionalmente, você pode tornar o nome do banco de dados no cluster de seguidor diferente do cluster líder. Por exemplo, talvez você queira anexar o mesmo nome de banco de dados de vários clusters líderes a um cluster de seguidor. 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
- Instale Microsoft.Azure.Management.Kusto.
- Instale Microsoft.Rest.ClientRuntime.Azure.Authentication para autenticação.
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 = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = followerSubscriptionId };
var followerResourceGroupName = "followerResourceGroup";
var followerClusterName = "follower";
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration"
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var leaderResourceGroup = "leaderResourceGroup";
var leaderClusterName = "leader";
var attachedDatabaseConfigurationData = new AttachedDatabaseConfiguration
{
ClusterResourceId = $"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}",
DatabaseName = "<databaseName>", // Can be specific database name or * for all databases
DefaultPrincipalsModificationKind = "Union",
Location = "North Central US"
};
// 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 TableLevelSharingProperties(
tablesToInclude:new List<string> { "table1" },
tablesToExclude:new List<string> { "table2" },
externalTablesToInclude:new List<string> { "exTable1" },
externalTablesToExclude:new List<string> { "exTable2" },
materializedViewsToInclude:new List<string> { "matTable1" },
materializedViewsToExclude:new List<string> { "matTable2" }
);
}
await resourceManagementClient.AttachedDatabaseConfigurations.CreateOrUpdateAsync(
followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationName, attachedDatabaseConfigurationData
);
Verifique se o banco de dados foi anexado com êxito
Para verificar se o banco de dados foi anexado com êxito, localize os bancos de dados anexados no portal do Azure . Você pode verificar se os bancos de dados foram anexados com êxito nos clusters seguidor ou líder .
Confira seu cluster de seguidores
Navegue até o cluster seguinte e selecione Bancos de Dados.
Na lista de bancos de dados, pesquise por novos bancos de dados de leitura apenas.
Você também pode exibir essa lista na página de visão geral do banco de dados:
Verifique o cluster líder
Navegue até o cluster líder e selecione Bancos de Dados
Verifique se os bancos de dados relevantes estão marcados como COMPARTILHADO COM OUTROS>#YES
Alterne o link de relação para exibir detalhes.
Você também pode exibir isso na página de visão geral do banco de dados:
Desanexar o banco de dados do seguidor
Observação
Para desanexar um banco de dados do lado seguidor ou líder, você deve ter um usuário, grupo, principal de serviço ou identidade gerenciada com pelo menos a função de contribuinte no cluster do qual você está desanexando o banco de dados. No exemplo abaixo, usamos o service principal.
Desanexar o banco de dados seguidor anexado do cluster de seguidor usando C#**
O cluster de seguidores pode desanexar qualquer banco de dados de seguidor que esteja anexado da seguinte maneira:
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 = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = followerSubscriptionId };
var followerResourceGroupName = "testrg";
//The cluster and database attached database configuration are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
await resourceManagementClient.AttachedDatabaseConfigurations.DeleteAsync(
followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationsName
);
Desanexar o banco de dados seguidor anexado do cluster líder usando C#
O cluster líder pode desanexar qualquer banco de dados anexado da seguinte maneira:
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 = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(credentials) { SubscriptionId = leaderSubscriptionId };
var leaderResourceGroupName = "testrg";
var leaderClusterName = "leader";
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 FollowerDatabaseDefinition
{
ClusterResourceId = $"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}",
AttachedDatabaseConfigurationName = attachedDatabaseConfigurationsName
};
await resourceManagementClient.Clusters.DetachFollowerDatabasesAsync(
leaderResourceGroupName, leaderClusterName, followerDatabaseDefinition
);
Gerenciar principais, permissões e política de cache
Gerenciar identidades
Ao anexar um banco de dados, especifique o "tipo de modificação de entidades padrão". O padrão é combinar as entidades autorizadas de sobreposição com o banco de dados principal da coleção de entidades autorizadas
| tipo | Descrição |
|---|---|
| Union | Os principais de banco de dados anexados sempre incluirão os principais de banco de dados originais, mais outros novos principais adicionados ao banco de dados seguidor. |
| Substituir | Nenhuma herança de principais do banco de dados original. Novos principais devem ser criados para o banco de dados anexado. |
| Nenhum | Os principais do banco de dados incluídos são apenas os principais do banco de dados original, sem outros principais. |
Para obter mais informações sobre como usar comandos de controle para configurar os principais autorizados, veja Comandos de controle para gerenciamento de um cluster seguidor.
Gerenciar permissões
O gerenciamento de permissões de banco de dados somente leitura é o mesmo para todos os tipos de banco de dados. Consulte gerenciar permissões no portal do Azure.
Configurar a política de cache
O administrador do banco de dados seguidor pode modificar a política de cache do banco de dados anexado ou de 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 do seguidor para consultar apenas os dados recentes para solução de problemas. Para obter mais informações sobre como usar comandos de controle para configurar a política de cache no banco de dados ou tabela do seguidor, consulte Comandos de controle para gerenciar um cluster de seguidor.
Anotações
- Se houver conflitos entre bancos de dados de clusters líder/seguidor, quando todos os bancos de dados forem seguidos pelo cluster de seguidor, eles serão resolvidos da seguinte maneira:
- Um banco de dados chamado DB criado no cluster seguidor 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 no cluster de seguidores precisa ser removido ou renomeado, para que o cluster de seguidores possa incluir o banco de dados do líder .
- Um banco de dados chamado DB que provém de dois ou mais clusters líderes será escolhido arbitrariamente de um dos clusters líderes, e não será seguido mais de uma vez.
- Os comandos para mostrar o log de atividades do cluster e o histórico, quando executados em um cluster seguidor, mostrarão a atividade e o histórico nesse cluster seguidor, e seus conjuntos de resultados não incluirão aqueles dos resultados do cluster ou clusters líderes.
- Por exemplo: um comando
.show queriesexecutado no cluster de seguidor mostrará apenas consultas executadas em bancos de dados seguidos pelo cluster seguidor e não consultas executadas no mesmo banco de dados no cluster líder.
- Por exemplo: um comando
Limitações
- Os clusters seguidor e líder devem estar na mesma região.
- Se ingestão de streaming for usada em um banco de dados que está sendo seguido, o cluster de seguidor deverá ser habilitado para ingestão de streaming para permitir o acompanhamento dos dados de ingestão de streaming.
- Não há suporte para criptografia de dados usando chaves gerenciadas pelo cliente em clusters líder e seguidor.
- Você não pode 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.
- As propriedades de compartilhamento no nível da tabela não são suportadas quando se está seguindo todos os bancos de dados.
Próximas etapas
- Para obter informações sobre a configuração do cluster de seguidor, consulte Comandos de controle para gerenciar um cluster de seguidor.