Använda följardatabaser
Med följardatabasfunktionen kan du koppla en databas som finns i ett annat kluster till ditt Azure Data Explorer kluster. Följardatabasen är ansluten i skrivskyddat läge, vilket gör det möjligt att visa data och köra frågor på de data som matades in i leader-databasen . Följardatabasen synkroniserar ändringar i ledande databaser. På grund av synkroniseringen finns det en datafördröjning på några sekunder till några minuter i datatillgänglighet. Längden på tidsfördröjning beror på den övergripande storleken på metadata för den ledande databasen. Databaserna för ledare och följare använder samma lagringskonto för att hämta data. Lagringen ägs av den ledande databasen. Följardatabasen visar data utan att behöva mata in dem. Eftersom den anslutna databasen är en skrivskyddade databas kan data, tabeller och principer i databasen inte ändras förutom cachelagringsprincipen ,huvudnamnenoch behörigheterna. Anslutna databaser kan inte tas bort. De måste vara frånkopplade av ledaren eller följare och först då kan de tas bort.
Att koppla en databas till ett annat kluster med hjälp av följarfunktion används som infrastruktur för att dela data mellan organisationer och team. Funktionen är användbar för att åtsega beräkningsresurser för att skydda en produktionsmiljö från icke-produktionsanvändningsfall. Följare kan också användas för att associera kostnaden för Azure Data Explorer kluster till den part som kör frågor på data.
Vilka databaser följs?
- Ett kluster kan följa en databas, flera databaser eller alla databaser i ett ledande kluster.
- Ett enskilt kluster kan följa databaser från flera ledande kluster.
- Ett kluster kan innehålla både följardatabaser och ledande databaser.
- EngineV3-kluster kan bara följa EngineV3-kluster, på liknande sätt kan EngineV2-kluster endast följa V2-kluster.
Förutsättningar
- En Azure-prenumeration. Skapa ett kostnadsfritt Azure-konto.
- Skapa ett kluster och en databas för ledaren.
- Skapa ett kluster och en databas för följare.
- Mata in data till leader-databasen med någon av de olika metoderna som beskrivs i översikten över inmatning.
Ansluta en databas
Det finns olika metoder som du kan använda för att koppla en databas. I den här artikeln diskuterar vi hur du kopplar en databas med C#, Python, PowerShell eller en Azure Resource Manager mall. Om du vill koppla en databas måste du ha användar-, grupp-, tjänsthuvudnamn eller hanterad identitet med minst deltagarroll i klustret för ledare och följarklustret. Lägg till eller ta bort rolltilldelningar med Azure Portal,PowerShell,Azure CLIoch ARM-mall. Läs mer om rollbaserad åtkomstkontroll i Azure (Azure RBAC) och de olika rollerna.
Delning på tabellnivå
När du kopplar databasen följs även alla tabeller, externa tabeller och materialiserade vyer. Du kan dela specifika tabeller/externa tabeller/materialiserade vyer genom att konfigurera"TableLevelSharingProperties".
TableLevelSharingPropertiesinnehåller sex matriser med strängar: , , , , och tablesToExcludeexternalTablesToIncludeexternalTablesToExcludematerializedViewsToIncludematerializedViewsToExclude . Det maximala antalet poster i alla matriser tillsammans är 100.
Anteckning
Delning på tabellnivå stöds inte när du använder "*" alla databas notation.
Anteckning
När materialiserade vyer ingår inkluderas även deras källtabeller.
Exempel
Inkludera alla tabeller. Nej "*" behövs eftersom alla tabeller följs av standard:
tablesToInclude = []Inkludera alla tabeller med namn som börjar med "Loggar":
tablesToInclude = ["Logs*"]Exkludera alla externa tabeller:
externalTablesToExclude = ["*"]Exkludera alla materialiserade vyer:
materializedViewsToExclude=["*"]
Koppla en databas med C #
Nödvändiga NuGets
- Installera Microsoft.Azure.Management.Kusto.
- Installera Microsoft.Rest.ClientRuntime.Azure.Authentication för autentisering.
Exempel
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
SubscriptionId = followerSubscriptionId
};
var followerResourceGroupName = "followerResouceGroup";
var leaderResourceGroup = "leaderResouceGroup";
var leaderClusterName = "leader";
var followerClusterName = "follower";
var attachedDatabaseConfigurationName = "uniqueNameForAttachedDatabaseConfiguration";
var databaseName = "db"; // Can be specific database name or * for all databases
var defaultPrincipalsModificationKind = "Union";
var location = "North Central US";
TableLevelSharingProperties tls;
if (databaseName == "*")
{
// Table level sharing properties are not supported when using '*' all databases notation.
tls = null;
}
else
{
// Set up the table level sharing properties - the following is just an example.
var tablesToInclude = new List<string>
{
"table1",
"table2",
"table3"
};
var externalTablesToExclude = new List<string>
{
"Logs*"
};
var tls = new TableLevelSharingProperties(tablesToInclude: tablesToInclude, externalTablesToExclude: externalTablesToExclude);
}
AttachedDatabaseConfiguration attachedDatabaseConfigurationProperties = new AttachedDatabaseConfiguration()
{
ClusterResourceId = $"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}",
DatabaseName = databaseName,
DefaultPrincipalsModificationKind = defaultPrincipalsModificationKind,
Location = location,
TableLevelSharingProperties = tls
};
var attachedDatabaseConfigurations = resourceManagementClient.AttachedDatabaseConfigurations.CreateOrUpdate(followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationName, attachedDatabaseConfigurationProperties);
Kontrollera att databasen har kopplats
Kontrollera att databasen har kopplats genom att leta upp de anslutna databaserna i Azure Portal. Du kan kontrollera att databaserna har kopplats i antingen följar- eller ledande kluster.
Kontrollera ditt följarkluster
Gå till följarklustret och välj Databaser
Sök efter nya skrivskyddade databaser i databaslistan.

Kontrollera ditt ledande kluster
Gå till ledande kluster och välj Databaser
Kontrollera att relevanta databaser är markerade som DELADE MED ANDRAJa

Koppla från följardatabasen
Anteckning
Om du vill koppla bort en databas från följare eller ledare måste du ha användar-, grupp-, tjänsthuvudnamn eller hanterad identitet med minst deltagarroll i klustret som du vill koppla från databasen från. I exemplet nedan använder vi tjänstens huvudnamn.
Koppla bort den anslutna följardatabasen från följarklustret med C #
Följarklustret kan koppla från alla anslutna följardatabaser på följande sätt:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
SubscriptionId = followerSubscriptionId
};
var followerResourceGroupName = "testrg";
//The cluster and database that are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "uniqueName";
resourceManagementClient.AttachedDatabaseConfigurations.Delete(followerResourceGroupName, followerClusterName, attachedDatabaseConfigurationsName);
Koppla bort den anslutna följardatabasen från klustret med C #
Ledareklustret kan koppla från alla anslutna databaser på följande sätt:
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";//Application ID
var clientSecret = "xxxxxxxxxxxxxx";//Client secret
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var followerSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
var resourceManagementClient = new KustoManagementClient(serviceCreds){
SubscriptionId = leaderSubscriptionId
};
var leaderResourceGroupName = "testrg";
var followerResourceGroupName = "followerResouceGroup";
var leaderClusterName = "leader";
var followerClusterName = "follower";
//The cluster and database that are created as part of the Prerequisites
var followerDatabaseDefinition = new FollowerDatabaseDefinition()
{
AttachedDatabaseConfigurationName = "uniqueName",
ClusterResourceId = $"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}"
};
resourceManagementClient.Clusters.DetachFollowerDatabases(leaderResourceGroupName, leaderClusterName, followerDatabaseDefinition);
Hantera huvudnamn, behörigheter och cachelagringsprincip
Hantera huvudnamn
När du kopplar en databas anger du "standardändrings kind för huvudnamn". Standardvärdet är att behålla den ledande databassamlingen med auktoriserade huvudnamn
| Variant | Beskrivning |
|---|---|
| Union | De anslutna databashuvudnamnen innehåller alltid de ursprungliga databashuvudnamnen plus andra nya huvudnamn som läggs till i den följardatabasen. |
| Ersätt | Inget arv av huvudobjekt från den ursprungliga databasen. Nya huvudnamn måste skapas för den anslutna databasen. |
| Ingen | De anslutna databashuvudnamnen innehåller endast huvudnamnen för den ursprungliga databasen utan några andra huvudnamn. |
Mer information om hur du använder kontrollkommandon för att konfigurera auktoriserade huvudnamn finns i Kontrollkommandon för att hantera ett följarkluster.
Hantera behörigheter
Hantering av skrivskyddade databasbehörigheter är samma som för alla databastyper. Se hantera behörigheter i Azure Portal.
Konfigurera cachelagringsprincip
Den följande databasadministratören kan ändra cachelagringsprincipen för den anslutna databasen eller någon av dess tabeller i värdklustret. Standardinställningen är att behålla den ledande databassamlingen med principer för databas- och cachelagring på tabellnivå. Du kan till exempel ha en 30-dagars cachelagringsprincip på leader-databasen för att köra månatlig rapportering och en tredagars cachelagringsprincip på den följardatabasen för att endast fråga efter de senaste data för felsökning. Mer information om hur du använder kontrollkommandon för att konfigurera cachelagringsprincipen på den följardatabasen eller -tabellen finns i Kontrollkommandon för att hantera ett följarkluster.
Kommentarer
- Om det finns konflikter mellan databaser i leader-/följarkluster, när alla databaser följs av följarklustret, löses de på följande sätt:
- En databas med namnet DB som skapats i följarklustret har företräde framför en databas med samma namn som skapades i ledareklustret. Det är därför databasdatabasen i följarklustret måste tas bort eller byta namn för att följarklustret ska inkludera ledarens databasdatabas.
- En databas med namnet DB som följs av två eller flera ledande kluster väljs godtyckligt från ett av de ledande klustren och följs inte mer än en gång.
- Kommandon för att visa aktivitetsloggen och historiken för kluster som körs i ett följarkluster visar aktiviteten och historiken i följarklustret, och deras resultatuppsättningar innehåller inte dessa resultat från ledareklustret eller -klustren.
- Ett kommando som körs i klustret med följare visar till exempel bara frågor som körs på databaser följt av följarkluster och inte frågor som körs mot samma databas i
.show queriesledareklustret.
- Ett kommando som körs i klustret med följare visar till exempel bara frågor som körs på databaser följt av följarkluster och inte frågor som körs mot samma databas i
Begränsningar
- Följare och ledare måste finnas i samma region.
- Strömningsinmatning kan inte användas på en databas som följs.
- Datakryptering med kund hanterade nycklar stöds inte i både ledare och följarkluster.
- Du kan inte ta bort en databas som är ansluten till ett annat kluster innan du tar bort den.
- Du kan inte ta bort ett kluster som har en databas som är kopplad till ett annat kluster innan du frånkopplade det.
- Delningsegenskaper på tabellnivå stöds inte när du följer alla databaser.
Nästa steg
- Information om klusterkonfiguration för följare finns i Kontrollkommandon för att hantera ett följarkluster.
