Använda efterföljardatabaser
Med funktionen för uppföljningsdatabas 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 om de data som matades in i leader-databasen. Uppföljningsdatabasen synkroniserar ändringar i leaderdatabaserna. På grund av synkroniseringen finns det en datafördröjning på några sekunder till några minuter i datatillgängligheten. Längden på tidsfördröjningen beror på den totala storleken på metadata för leaderdatabasen. Databaserna leader och follower använder samma lagringskonto för att hämta data. Lagringen ägs av leaderdatabasen. Efterföljardatabasen visar data utan att behöva mata in dem. Eftersom den anslutna databasen är en skrivskyddad databas kan data, tabeller och principer i databasen inte ändras förutom cachelagringsprincip, huvudnamn och behörigheter. Anslutna databaser kan inte tas bort. De måste kopplas från av ledaren eller följaren och först då kan de tas bort.
Att koppla en databas till ett annat kluster med hjälp av uppföljningsfunktionen används som infrastruktur för att dela data mellan organisationer och team. Funktionen är användbar för att separera beräkningsresurser för att skydda en produktionsmiljö från användningsfall utanför produktion. 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 leaderkluster.
- Ett enda kluster kan följa databaser från flera leader-kluster.
- Ett kluster kan innehålla både efterföljardatabaser och ledardatabaser.
- EngineV3-kluster kan bara följa EngineV3-kluster och EngineV2-kluster bara kan följa V2-kluster.
Förutsättningar
- En Azure-prenumeration. Skapa ett kostnadsfritt Azure-konto.
- Ett Azure-Data Explorer kluster och en databas för ledare och följare. Skapa ett kluster och en databas.
- Ledardatabasen bör innehålla data. Du kan mata in data med någon av metoderna som beskrivs i inmatningsöversikten.
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 hjälp av C#, Python, PowerShell eller en Azure Resource Manager-mall. Om du vill koppla en databas måste du ha användare, grupp, tjänstens huvudnamn eller hanterad identitet med minst deltagarroll i leader-klustret och uppföljningsklustret. Lägg till eller ta bort rolltilldelningar med hjälp av mallen Azure Portal, PowerShell, Azure CLI och ARM. Läs mer om rollbaserad åtkomstkontroll i Azure (Azure RBAC) och de olika rollerna.
Delning på tabellnivå
När alla tabeller kopplas till databasen följs även externa tabeller och materialiserade vyer. Du kan dela specifika tabeller/externa tabeller/materialiserade vyer genom att konfigurera TableLevelSharingProperties.
TableLevelSharingProperties innehåller åtta matriser med strängar: tablesToInclude
, , tablesToExclude
externalTablesToInclude
, externalTablesToExclude
, materializedViewsToInclude
, , materializedViewsToExclude
, functionsToInclude
och functionsToExclude
. Det maximala antalet poster i alla matriser tillsammans är 100.
Anteckning
Delning på tabellnivå stöds inte när du använder notationen *.
Anteckning
När materialiserade vyer ingår ingår även deras källtabeller.
Exempel
Inkludera alla tabeller. Ingen *- krävs eftersom alla tabeller följs som standard:
tablesToInclude = []
Inkludera alla tabeller med namn som börjar med "Loggar":
tablesToInclude = ["Logs*"]
Undanta alla externa tabeller:
externalTablesToExclude = ["*"]
Undanta alla materialiserade vyer:
materializedViewsToExclude=["*"]
Åsidosättning av databasnamn
Du kan också göra databasnamnet i följeklustret annorlunda än leaderklustret. Du kanske till exempel vill koppla samma databasnamn från flera leader-kluster till ett uppföljningskluster. Om du vill ange ett annat databasnamn konfigurerar du egenskapen DatabaseNameOverride eller DatabaseNamePrefix.
Koppla en databas med C #
Nödvändiga NuGet-paket
- Installera Microsoft.Azure.Management.Kusto.
- Installera Microsoft.Rest.ClientRuntime.Azure.Authentication för autentisering.
C#-exempel
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
);
Kontrollera att databasen har kopplats
Du kan kontrollera att databasen har kopplats genom att leta rätt på de kopplade databaserna i Azure Portal. Du kan kontrollera att databaserna har kopplats i antingen följar - eller ledarklustren .
Kontrollera ditt följarkluster
Bläddra till följarklustret och välj Databaser.
I databaslistan söker du efter nya skrivskyddade databaser.
Du kan också visa den här listan på översiktssidan för databasen:
Kontrollera ditt ledarkluster
Bläddra till ledarklustret och välj Databaser
Kontrollera att de relevanta databaserna har markerats som DELADE MED ANDRA>Ja
Växla relationslänken för att visa information.
Du kan också visa detta på översiktssidan för databasen:
Koppla från uppföljningsdatabasen
Anteckning
Om du vill koppla från en databas från följaren eller ledaren måste du ha användare, grupp, tjänstens huvudnamn eller hanterad identitet med minst deltagarroll i klustret som du kopplar från databasen från. I exemplet nedan använder vi tjänstens huvudnamn.
Koppla från den anslutna uppföljningsdatabasen från följarklustret med C#**
Följeklustret kan koppla från alla anslutna uppföljningsdatabaser 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 = "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
);
Koppla från den anslutna uppföljningsdatabasen från leaderklustret med hjälp av C #
Leader-klustret 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 = "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
);
Hantera principer för huvudkonton, behörigheter och cachelagring
Hantera huvudkonton
När du kopplar en databas anger du ändringstypen "standardhuvudkonton". Standardinställningen är att kombinera åsidosättningsauktoriserade huvudkonton med leader-databassamlingen av auktoriserade huvudkonton
Variant | Beskrivning |
---|---|
Unionen | De kopplade databashuvudkontona innehåller alltid de ursprungliga databashuvudkontona plus andra nya huvudkonton som läggs till i den följande databasen. |
Ersätt | Inget arv av huvudkonton från den ursprungliga databasen. Nya huvudkonton måste skapas för den anslutna databasen. |
Ingen | De kopplade databashuvudkontona innehåller endast huvudnamnen för den ursprungliga databasen utan några andra huvudkonton. |
Mer information om hur du använder kontrollkommandon för att konfigurera auktoriserade huvudkonton finns i Kontrollkommandon för att hantera ett följarkluster.
Hantera behörigheter
Hantering av skrivskyddad databasbehörighet ä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 kombinera källdatabasen i leader-klusterdatabasen och cachelagringsprinciper på tabellnivå med de principer som definierats i principerna för åsidosättning på databas- och tabellnivå. Du kan till exempel ha en 30-dagars cachelagringsprincip på ledardatabasen för att köra månatlig rapportering och en tre dagars cachelagringsprincip på uppföljningsdatabasen för att endast köra frågor mot de senaste data för felsökning. Mer information om hur du använder kontrollkommandon för att konfigurera cachelagringsprincipen i följande databas eller tabell finns i Kontrollkommandon för att hantera ett uppföljningskluster.
Kommentarer
- Om det finns konflikter mellan databaser med leader/follower-kluster, och när alla databaser följs av det efterföljande klustret, 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 leaderklustret. Därför måste databasdatabasen i uppföljningsklustret tas bort eller byta namn för att följarklustret ska inkludera ledarens databasdatabas.
- En databas med namnet DB följt av två eller flera ledarkluster väljs godtyckligt från ett av ledarkluster och följs inte mer än en gång.
- Kommandon för att visa klusteraktivitetsloggen och historiken som körs på ett följarkluster visar aktiviteten och historiken i det följande klustret, och deras resultatuppsättningar inkluderar inte dessa resultat från leaderklustret eller klustren.
- Till exempel: ett
.show queries
kommando som körs på följarklustret visar bara frågor som körs på databaser följt av följarkluster och inte frågor som körs mot samma databas i leader-klustret.
- Till exempel: ett
Begränsningar
- Följaren och ledarklustren måste finnas i samma region.
- Om inmatning av direktuppspelning används på en databas som följs, bör följarklustret aktiveras för strömningsinmatning för att tillåta följande data för strömmande inmatning.
- Datakryptering med kundhanterade nycklar stöds inte i både ledar- och uppföljningskluster.
- Du kan inte ta bort en databas som är kopplad till ett annat kluster innan du kopplar från den.
- Du kan inte ta bort ett kluster som har en databas kopplad till ett annat kluster innan du kopplar från det.
- Delningsegenskaper på tabellnivå stöds inte när du följer alla databaser.
Nästa steg
- Information om klusterkonfiguration som följer finns i Kontrollera kommandon för att hantera ett uppföljningskluster.