Volgdatabases gebruiken
Met de functie volgdatabase kunt u een database in een ander cluster koppelen aan uw Azure Data Explorer cluster. De volgdatabase is gekoppeld in de modus Alleen-lezen, zodat u de gegevens kunt bekijken en query's kunt uitvoeren op de gegevens die zijn opgenomen in de leiderdatabase. De volgdatabase synchroniseert wijzigingen in de leiderdatabases. Vanwege de synchronisatie is er sprake van een gegevensvertraging van enkele seconden tot enkele minuten in de beschikbaarheid van gegevens. De duur van de vertraging is afhankelijk van de totale grootte van de metagegevens van de leiderdatabase. De leider- en volgdatabases gebruiken hetzelfde opslagaccount om de gegevens op te halen. De opslag is eigendom van de leiderdatabase. De volgdatabase bekijkt de gegevens zonder deze op te nemen. Omdat de gekoppelde database een alleen-lezen database is, kunnen de gegevens, tabellen en beleidsregels in de database niet worden gewijzigd, met uitzondering van cachingbeleid,principalsen machtigingen. Gekoppelde databases kunnen niet worden verwijderd. Ze moeten worden losgekoppeld door de leider of volger en alleen dan kunnen ze worden verwijderd.
Het koppelen van een database aan een ander cluster met behulp van de volgfunctie wordt gebruikt als de infrastructuur voor het delen van gegevens tussen organisaties en teams. De functie is handig voor het scheiden van rekenresources om een productieomgeving te beschermen tegen niet-productiegebruiksgevallen. Volger kan ook worden gebruikt om de kosten van het Azure Data Explorer cluster te koppelen aan de partij die query's op de gegevens uitvoeren.
Welke databases worden gevolgd?
- Een cluster kan één database, meerdere databases of alle databases van een leidercluster volgen.
- Eén cluster kan databases uit meerdere leiderclusters volgen.
- Een cluster kan zowel volgdatabases als leiderdatabases bevatten.
- EngineV3-clusters kunnen alleen EngineV3-clusters volgen, op dezelfde manier kunnen EngineV2-clusters alleen V2-clusters volgen.
Vereisten
- Een Azure-abonnement. Maak een gratis Azure-account.
- Maak een cluster en database voor de leider.
- Maak een cluster en database voor de volger.
- Gegevens opnemen in de leiderdatabase met behulp van een van de verschillende methoden die ingestion overview (Overzicht van opname) zijn besproken.
Een database koppelen
Er zijn verschillende methoden die u kunt gebruiken om een database te koppelen. In dit artikel bespreken we het koppelen van een database met behulp van C#, Python, PowerShell of een Azure Resource Manager sjabloon. Als u een database wilt koppelen, moet u een gebruiker, groep, service-principal of beheerde identiteit hebben met ten minste de rol Inzender voor het leidercluster en het volgcluster. Roltoewijzingen toevoegen of verwijderen met behulp Azure Portal,PowerShell,Azure CLIen ARM-sjabloon. Meer informatie over op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) en de verschillende rollen.
Delen op tabelniveau
Bij het koppelen van de database worden ook alle externe tabellen en ge materialiseerde weergaven gevolgd. U kunt specifieke tabellen/externe tabellen/materialized weergaven delen doorTableLevelSharingProperties teconfigureren.
TableLevelSharingPropertiesbevat zes matrices met tekenreeksen: , , , , en tablesToExcludeexternalTablesToIncludeexternalTablesToExcludematerializedViewsToIncludematerializedViewsToExclude . Het maximum aantal vermeldingen in alle matrices is 100.
Notitie
Delen op tabelniveau wordt niet ondersteund bij het gebruik van de notatie '*' voor alle databases.
Notitie
Wanneer er materialized weergaven zijn opgenomen, worden de brontabellen ook opgenomen.
Voorbeelden
Neem alle tabellen op. Er is geen '*' nodig, omdat alle tabellen standaard worden gevolgd:
tablesToInclude = []Neem alle tabellen op met namen die beginnen met 'Logboeken':
tablesToInclude = ["Logs*"]Sluit alle externe tabellen uit:
externalTablesToExclude = ["*"]Sluit alle materialized weergaven uit:
materializedViewsToExclude=["*"]
Een database koppelen met C #
Benodigde NuGets
- Installeer Microsoft.Azure.Management.Kusto.
- Installeer Microsoft.Rest.ClientRuntime.Azure.Authentication voor verificatie.
Voorbeeld
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);
Controleren of de database is gekoppeld
Als u wilt controleren of de database is gekoppeld, gaat u naar de gekoppelde databases in de Azure Portal. U kunt controleren of de databases zijn gekoppeld aan de volg- of leiderclusters.
Controleer uw volgcluster
Navigeer naar het volgcluster en selecteer Databases
Zoek naar nieuwe alleen-lezendatabases in de lijst met databases.

Uw leidercluster controleren
Navigeer naar het leidercluster en selecteer Databases
Controleer of de relevante databases zijn gemarkeerd als GEDEELD MET ANDERENJa

De volgdatabase loskoppelen
Notitie
Als u een database wilt loskoppelen van de volger- of leiderzijde, moet u de rol gebruiker, groep, service-principal of beheerde identiteit hebben met ten minste de rol Inzender voor het cluster van waaruit u de database loskoppelt. In het onderstaande voorbeeld gebruiken we service-principal.
Koppel de gekoppelde volgerdatabase los van het volgcluster met C #
Het volgcluster kan elke gekoppelde volgdatabase als volgt loskoppelen:
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);
Koppel de gekoppelde volgerdatabase los van het leidercluster met C #
Het leidercluster kan elke gekoppelde database als volgt loskoppelen:
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);
Principals, machtigingen en beleid voor caching beheren
Principals beheren
Geef bij het koppelen van een database het 'type standaard principals-wijziging' op. De standaardinstelling is het bewaren van de leiderdatabaseverzameling van geautoriseerde principals
| Soort | Beschrijving |
|---|---|
| Union | De gekoppelde database-principals bevatten altijd de oorspronkelijke database-principals plus andere nieuwe principals die zijn toegevoegd aan de volgdatabase. |
| Vervangen | Er is geen overname van principals uit de oorspronkelijke database. Er moeten nieuwe principals worden gemaakt voor de gekoppelde database. |
| Geen | De gekoppelde database-principals bevatten alleen de principals van de oorspronkelijke database zonder andere principals. |
Zie Besturingsopdrachten voor het beheren van een volgcluster voor meer informatie over het gebruik van besturingsopdrachten om de geautoriseerde principals te configureren.
Machtigingen beheren
Het beheren van alleen-lezen databasemachtigingen is hetzelfde als voor alle databasetypen. Zie Machtigingen beheren in de Azure Portal.
Cachingbeleid configureren
De beheerder van de volgdatabase kan het cachingbeleid van de gekoppelde database of een van de tabellen in het hostingcluster wijzigen. De standaardinstelling is het bewaren van de leiderdatabaseverzameling van cachingbeleidsregels op database- en tabelniveau. U kunt bijvoorbeeld een cachingbeleid van 30 dagen hebben op de leiderdatabase voor het uitvoeren van maandelijkse rapportage en een beleid voor drie dagen opslaan in de vervolgdatabase om alleen de recente gegevens op te vragen voor probleemoplossing. Zie Besturingsopdrachten voor het beheren van een volgcluster voor meer informatie over het gebruik van besturingsopdrachten voor het configureren van het cachingbeleidin de volgdatabase of tabel.
Notities
- Als er conflicten zijn tussen databases van leader/follower-clusters en alle databases worden gevolgd door het volgcluster, worden deze als volgt opgelost:
- Een database met de naam DB die is gemaakt op het volgcluster heeft voorrang op een database met dezelfde naam die is gemaakt op het leidercluster. Daarom moet de databasedatabase in het volgcluster worden verwijderd of hernoemd voor het volgcluster om de databasedatabase van de leider op te nemen.
- Een database met de naam DB gevolgd door twee of meer leiderclusters wordt willekeurig gekozen uit een van de leiderclusters en wordt niet meer dan één keer gevolgd.
- Opdrachten voor het weergeven van het activiteitenlogboek van het cluster en de geschiedenis die worden uitgevoerd op een volgcluster, tonen de activiteit en geschiedenis op het volgcluster. De resultatensets bevatten niet de resultaten van het leidercluster of de clusters.
- Bijvoorbeeld: een opdracht die wordt uitgevoerd op het volgcluster toont alleen query's die worden uitgevoerd op databases, gevolgd door het volgcluster, en geen query's die worden uitgevoerd op dezelfde database in het
.show queriesleidercluster.
- Bijvoorbeeld: een opdracht die wordt uitgevoerd op het volgcluster toont alleen query's die worden uitgevoerd op databases, gevolgd door het volgcluster, en geen query's die worden uitgevoerd op dezelfde database in het
Beperkingen
- De volger- en leiderclusters moeten zich in dezelfde regio hebben.
- Streaming-opname kan niet worden gebruikt voor een database die wordt gevolgd.
- Gegevensversleuteling met behulp van door de klant beheerde sleutels wordt niet ondersteund op clusters met zowel de leider als de volger.
- U kunt een database die is gekoppeld aan een ander cluster niet verwijderen voordat u deze loskoppelt.
- U kunt een cluster dat is gekoppeld aan een ander cluster niet verwijderen voordat u het ontkoppelt.
- Eigenschappen voor delen op tabelniveau worden niet ondersteund bij het volgen van alle databases.
Volgende stappen
- Zie Besturingsopdrachten voor het beheren van een volgcluster voor meer informatie over de configuratie van volgcluster.
