Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonctionnalité de base de données de suiveur vous permet d’attacher une base de données située dans un autre cluster à votre cluster Azure Data Explorer. La base de données follower est attachée en mode lecture seule , ce qui permet d’afficher les données et d’exécuter des requêtes sur les données ingérées dans la base de données leader . La base de données d’abonné synchronise les modifications apportées aux bases de données de responsable. En raison de la synchronisation, il existe un décalage de données de quelques secondes à quelques minutes au niveau de la disponibilité des données. La durée du décalage dépend de la taille globale des métadonnées de la base de données du responsable. Les bases de données de responsable et d’abonné utilisent le même compte de stockage pour extraire les données. Le stockage appartient à la base de données principale. La base de données d’abonné affiche les données sans qu’il soit nécessaire de les ingérer. Étant donné que la base de données jointe est une base de données en lecture seule, les données, les tables et les stratégies de la base de données ne peuvent pas être modifiées, sauf pour stratégie de mise en cache, principauxet les autorisations de . Les bases de données jointes ne peuvent pas être supprimées. Ils doivent être détachés par le responsable ou le suiveur, et ce n'est qu'alors qu'ils peuvent être supprimés.
L’attachement d’une base de données à un autre cluster à l’aide de la fonctionnalité de suivi est utilisé comme infrastructure pour partager des données entre les organisations et les équipes. La fonctionnalité est utile pour séparer les ressources de calcul pour protéger un environnement de production contre les cas d’usage hors production. Le suiveur peut également être utilisé pour associer le coût du cluster Azure Data Explorer au tiers qui exécute des requêtes sur les données.
Quelles bases de données sont suivies ?
- Un cluster peut suivre une base de données, plusieurs bases de données ou toutes les bases de données d’un cluster leader.
- Un seul cluster peut suivre les bases de données de plusieurs clusters leader.
- Un cluster peut contenir à la fois des bases de données de suivi et des bases de données leader.
- Les clusters EngineV3 peuvent uniquement suivre des clusters EngineV3, de même que les clusters EngineV2 peuvent uniquement suivre des clusters EngineV2.
Conditions préalables
- Un abonnement Azure. Créez un compte Azure gratuit.
- Un cluster et une base de données Azure Data Explorer pour le responsable et le suiveur. Créez un cluster et une base de données.
- La base de données leader doit contenir des données. Vous pouvez ingérer des données en utilisant l'une des méthodes décrites dans aperçu de l'ingestion.
Attacher une base de données
Il existe différentes méthodes que vous pouvez utiliser pour attacher une base de données. Dans cet article, nous abordons l’attachement d’une base de données à l’aide de C#, Python, PowerShell ou d’un modèle Azure Resource Manager. Pour attacher une base de données, vous devez disposer d’un utilisateur, d’un groupe, d’un principal de service ou d’une identité managée avec au moins un rôle contributeur sur le cluster leader et le cluster de suivi. Ajoutez ou supprimez des attributions de rôles à l’aide portail Azure, PowerShell, azure CLIet modèle ARM. En savoir plus sur contrôle d’accès en fonction du rôle Azure (Azure RBAC) et les différents rôles.
Partage au niveau de la table
Lors de l’attachement de la base de données, toutes les tables, y compris les tables externes et les vues matérialisées, sont également prises en compte. Vous pouvez partager des tables spécifiques, tables externes, ou vues matérialisées en configurant les 'TableLevelSharingProperties'.
'TableLevelSharingProperties' contient huit tableaux de chaînes : tablesToInclude, tablesToExclude, externalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, functionsToIncludeet functionsToExclude. Le nombre maximal d’entrées dans tous les tableaux est de 100.
Remarque
Le partage au niveau de la table n’est pas pris en charge lorsqu'on utilise la notation '*' pour toutes les bases de données.
Remarque
Lorsque des vues matérialisées sont incluses, leurs tables sources qui leur sont associées sont incluses également.
Exemples
Incluez toutes les tables. Aucun '*' n’est nécessaire, car toutes les tables sont suivies par défaut :
tablesToInclude = []Inclure toutes les tables avec des noms qui commencent par « Logs » :
tablesToInclude = ["Logs*"]Excluez toutes les tables externes :
externalTablesToExclude = ["*"]Excluez toutes les vues matérialisées :
materializedViewsToExclude=["*"]
Remplacement du nom de la base de données
Vous pouvez éventuellement rendre le nom de la base de données dans le cluster de suivi différent du cluster leader. Par exemple, vous souhaiterez peut-être attacher le même nom de base de données à partir de plusieurs clusters leader à un cluster de suivi. Pour spécifier un autre nom de base de données, configurez la propriété 'DatabaseNameOverride' ou 'DatabaseNamePrefix'.
Attacher une base de données à l’aide de C#
Packages NuGet requis
- Installez Microsoft.Azure.Management.Kusto.
- Installez Microsoft.Rest.ClientRuntime.Azure.Authentication pour l’authentification.
Exemple 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
);
Vérifiez que la base de données a été correctement attachée
Pour vérifier que la base de données a été correctement attachée, recherchez vos bases de données jointes dans le portail Azure. Vous pouvez vérifier que les bases de données ont été correctement attachées dans le suiveur ou leader clusters.
Vérifier votre cluster de suivi
Accédez au cluster de suivi et sélectionnez Bases de données.
Dans la liste des bases de données, recherchez de nouvelles bases de données en lecture seule.
Vous pouvez également afficher cette liste dans la page vue d’ensemble de la base de données :
Vérifier votre cluster leader
Accédez au cluster leader et sélectionnez Bases de données
Vérifiez que les bases de données pertinentes sont marquées comme PARTAGÉES AVEC D'AUTRES>Oui
Activez le lien de relation pour afficher les détails.
Vous pouvez également l’afficher dans la page vue d’ensemble de la base de données :
Détacher la base de données du suiveur
Remarque
Pour détacher une base de données du côté suiveur ou leader, vous devez disposer d’un utilisateur, d’un groupe, d’un principal de service ou d’une identité managée avec au moins un rôle contributeur sur le cluster à partir duquel vous détachez la base de données. Dans l’exemple ci-dessous, nous utilisons un service principal.
Détachez la base de données du suiveur attaché du cluster follower à l’aide de C#**
Le cluster de suivi peut détacher n’importe quelle base de données de suiveur attachée comme suit :
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
);
Détacher la base de données de suivi jointe du cluster leader à l’aide de C#
Le cluster leader peut détacher n’importe quelle base de données attachée comme suit :
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
);
Gérer les entités principales, les autorisations et la stratégie de mise en cache
Gérer les principaux
Lors de l’attachement d’une base de données, spécifiez le « type de modification des principaux par défaut ». La valeur par défaut consiste à combiner les mandants autorisés de la substitution avec la collection de mandants autorisés de la base de données principale
| Type | Description |
|---|---|
| Union | Les principaux de base de données attachés incluront toujours les principaux de base de données d'origine ainsi que d'autres nouveaux principaux ajoutés à la base de données secondaire. |
| remplacer | Aucun héritage des principaux de la base de données d’origine. De nouveaux principaux doivent être créés pour la base de données jointe. |
| Aucun | Les principaux de la base de données attachée incluent uniquement ceux de la base de données d'origine, sans aucun autre principal. |
Pour plus d’informations sur l’utilisation des commandes de contrôle pour configurer les principaux autorisés, consultez commandes de contrôle pour la gestion d’un cluster secondaire.
Gérer les autorisations
La gestion de l’autorisation de base de données en lecture seule est la même que pour tous les types de base de données. Consultez comment gérer les autorisations dans le portail Azure .
Configurer la stratégie de mise en cache
L’administrateur de base de données du suiveur peut modifier la stratégie de mise en cache de la base de données jointe ou de ses tables sur le cluster d’hébergement. La valeur par défaut consiste à combiner la base de données source dans la base de données du cluster leader et les stratégies de mise en cache au niveau de la table avec les stratégies définies dans la base de données et les stratégies de remplacement au niveau de la table. Vous pouvez, par exemple, disposer d’une stratégie de mise en cache de 30 jours sur la base de données leader pour exécuter des rapports mensuels et une stratégie de mise en cache de trois jours sur la base de données de suivi pour interroger uniquement les données récentes pour la résolution des problèmes. Pour plus d’informations sur l’utilisation des commandes de contrôle pour configurer la stratégie de mise en cache sur la base de données ou la table du suiveur, consultez Commandes de contrôle pour la gestion d’un cluster de suivi.
Remarques
- S'il existe des conflits entre les bases de données dans des clusters leader/suiveur, lorsque le cluster suiveur suit toutes les bases de données, ils sont résolus comme suit :
- Une base de données nommée créée sur le cluster suiveur est prioritaire sur une base de données portant le même nom qui a été créée sur le cluster leader. C’est pourquoi la base de données DB dans le cluster de suivi doit être supprimée ou renommée afin que le cluster de suivi puisse inclure la base de données du responsable DB.
- Une base de données nommée DB suivie de deux ou plusieurs clusters principaux sera choisie arbitrairement à partir de un des clusters principaux et ne sera pas suivie plusieurs fois.
- Les commandes pour afficher le journal d’activité du cluster et l’historique exécutées sur un cluster suiveur montreront l’activité et l’historique sur le cluster suiveur, et leurs jeux de résultats n’incluront pas ceux du cluster ou des clusters leader.
- Par exemple : une commande
.show queriesexécutée sur le cluster de suivi affiche uniquement les requêtes exécutées sur les bases de données suivies du cluster de suivi, et non sur la même base de données dans le cluster leader.
- Par exemple : une commande
Limites
- Les clusters suiveurs et les clusters leaders doivent se trouver dans la même région.
- Si l'ingestion en continu est utilisée sur une base de données suivie, le cluster de suivi doit être activé pour l'ingestion en continu afin de permettre le suivi des données d'ingestion en continu.
- Le chiffrement des données à l’aide de clés gérées par le client n’est pas pris en charge sur les clusters leader et suiveur.
- Vous ne pouvez pas supprimer une base de données attachée à un autre cluster avant de la détacher.
- Vous ne pouvez pas supprimer un cluster qui a une base de données attachée à un autre cluster avant de le détacher.
- Les propriétés de partage au niveau de la table ne sont pas prises en charge lorsqu'on suit toutes les bases de données.
Étapes suivantes
- Pour plus d’informations sur la configuration du cluster follower, consultez commandes Control pour la gestion d’un cluster de suivi.