Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit dem Feature "Follower-Datenbank " können Sie eine Datenbank in einem anderen Cluster an Ihren Azure Data Explorer-Cluster anfügen. Die Followerdatenbank wird im schreibgeschützten Modus angefügt, sodass auf die Daten zugegriffen und Abfragen zu den Daten ausgeführt werden können, die in die Leaderdatenbank aufgenommen wurden. Die Follower-Datenbank synchronisiert Änderungen in den Leader-Datenbanken. Aufgrund der Synchronisierung gibt es bei der Datenverfügbarkeit eine Zeitverzögerung von einigen Sekunden bis zu einigen Minuten. Die Länge der Zeitverzögerung hängt von der Gesamtgröße der Metadaten in der Leader-Datenbank ab. Die Leader- und Follower-Datenbanken verwenden dasselbe Speicherkonto zum Abrufen der Daten. Der Speicher befindet sich im Besitz der Leader-Datenbank. Die Follower-Datenbank zeigt die Daten an, ohne sie erfassen zu müssen. Da es sich bei der angefügten Datenbank um eine schreibgeschützte Datenbank handelt, können die Daten, Tabellen und Richtlinien in der Datenbank nicht geändert werden, mit Ausnahme von Zwischenspeicherungsrichtlinien, Prinzipale und Berechtigungen. Angefügte Datenbanken können nicht gelöscht werden. Sie müssen vom Leiter oder Follower getrennt werden, und nur dann können sie gelöscht werden.
Das Anfügen einer Datenbank an einen anderen Cluster mithilfe der Follower-Funktion wird als Infrastruktur zum Freigeben von Daten zwischen Organisationen und Teams verwendet. Das Feature ist nützlich, um Computeressourcen zu trennen, um eine Produktionsumgebung vor Nicht-Produktions-Anwendungsfällen zu schützen. Der Follower kann auch verwendet werden, um die Kosten des Azure Data Explorer-Clusters der Partei zuzuordnen, die Abfragen zu den Daten ausführt.
Welche Datenbanken werden befolgt?
- Ein Cluster kann einer Datenbank, mehreren Datenbanken oder allen Datenbanken eines Leaderclusters folgen.
- Ein einzelner Cluster kann Datenbanken aus mehreren Führungsclustern folgen.
- Ein Cluster kann sowohl Followerdatenbanken als auch Führungsliniendatenbanken enthalten.
- EngineV3-Cluster können nur EngineV3-Clustern folgen, ähnlich können EngineV2-Cluster nur EngineV2-Clustern folgen.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Azure-Konto.
- Ein Azure Data Explorer-Cluster und eine Datenbank für das Führer- und das Follower-System. Erstellen Sie einen Cluster und eine Datenbank.
- Die Führungsliniendatenbank sollte Daten enthalten. Sie können Daten importieren mithilfe einer der in der Ingestionsübersicht erläuterten Methoden.
Anfügen einer Datenbank
Es gibt verschiedene Methoden, mit denen Sie eine Datenbank anfügen können. In diesem Artikel besprechen wir das Anfügen einer Datenbank mit C#, Python, PowerShell oder einer Azure Resource Manager-Vorlage. Um eine Datenbank anzufügen, müssen Sie über Benutzer-, Gruppen-, Dienstprinzipal- oder verwaltete Identitäten verfügen, die mindestens die Rolle "Mitwirkender" im Leadercluster und im Folgecluster aufweisen. Hinzufügen oder Entfernen von Rollenzuweisungen mithilfe der Azure-Portal-, PowerShell-, Azure CLI- und ARM-Vorlage. Erfahren Sie mehr über die rollenbasierte Zugriffssteuerung (Azure RBAC) und die verschiedenen Rollen.
Freigabe auf Tabellenebene
Beim Anfügen der Datenbank werden auch alle Tabellen, externen Tabellen und materialisierten Ansichten mit aufgenommen. Sie können bestimmte Tabellen/externe Tabellen/materialisierte Ansichten freigeben, indem Sie die 'TableLevelSharingProperties' konfigurieren.
'TableLevelSharingProperties' enthält acht Arrays von Zeichenfolgen: tablesToInclude, , tablesToExclude, externalTablesToInclude, , externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, functionsToIncludeund functionsToExclude. Die maximale Anzahl von Einträgen in allen Arrays ist 100.
Hinweis
Die Freigabe auf Tabellenebene wird nicht unterstützt, wenn die Notation "*" für alle Datenbanken verwendet wird.
Hinweis
Wenn materialisierte Ansichten enthalten sind, werden auch ihre Quelltabellen einbezogen.
Beispiele
Alle Tabellen einschließen. Es ist kein '*' erforderlich, da allen Tabellen standardmäßig gefolgt wird.
tablesToInclude = []Fügen Sie alle Tabellen mit Namen ein, die mit "Logs" beginnen:
tablesToInclude = ["Logs*"]Alle externen Tabellen ausschließen:
externalTablesToExclude = ["*"]Alle materialisierten Ansichten ausschließen:
materializedViewsToExclude=["*"]
Außerkraftsetzung des Datenbanknamens
Sie können optional den Datenbanknamen im Folgecluster vom Leadercluster unterscheiden. Sie können z. B. denselben Datenbanknamen aus mehreren Führungsclustern an einen Folgecluster anfügen. Um einen anderen Datenbanknamen anzugeben, konfigurieren Sie die Eigenschaft 'DatabaseNameOverride' oder 'DatabaseNamePrefix'.
Anfügen einer Datenbank mit C#
Erforderliche NuGet-Pakete
- Installieren Sie Microsoft.Azure.Management.Kusto.
- Installieren Sie Microsoft.Rest.ClientRuntime.Azure.Authentication für die Authentifizierung.
C#-Beispiel
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
);
Überprüfen, ob die Datenbank erfolgreich angefügt wurde
Um zu überprüfen, ob die Datenbank erfolgreich angefügt wurde, suchen Sie ihre angefügten Datenbanken im Azure-Portal. Sie können überprüfen, ob die Datenbanken erfolgreich entweder im Follower oder im Leader-Cluster angehängt wurden.
Überprüfe deinen Follower-Cluster
Navigieren Sie zum Followercluster, und wählen Sie "Datenbanken" aus.
Suchen Sie in der Datenbankliste nach neuen schreibgeschützten Datenbanken.
Sie können diese Liste auch auf der Datenbankübersichtsseite anzeigen:
Überprüfen Ihres Leaderclusters
Navigieren Sie zum Leadercluster, und wählen Sie "Datenbanken" aus.
Überprüfen Sie, ob die relevanten Datenbanken als "FÜR ANDERE> FREIGEGEBEN" gekennzeichnet sindJa
Schalten Sie den Beziehungslink um, um Details anzuzeigen.
Sie können dies auch auf der Datenbankübersichtsseite anzeigen:
Trennen Sie die Datenbank der Follower
Hinweis
Um eine Datenbank von der Follower- oder Leiterseite zu trennen, müssen Sie über Benutzer, Gruppen, Diensteprinzipale oder verwaltete Identitäten verfügen, die mindestens die Rolle eines Mitwirkenden im Cluster haben, von dem Sie die Datenbank trennen. Im folgenden Beispiel verwenden wir den Service Principal.
Trennen Sie die angefügte Followerdatenbank vom Followercluster mithilfe von C#**
Der Follower-Cluster kann eine angehängte Follower-Datenbank folgendermaßen trennen:
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
);
Trennen Sie die angefügte Followerdatenbank vom Leadercluster mit C.#
Der Führungscluster kann jede angefügte Datenbank wie folgt trennen:
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
);
Verwalten Sie Akteure, Berechtigungen und Cache-Richtlinien
Verwalten von Prinzipale
Geben Sie beim Anfügen einer Datenbank die Art der Änderung für Standardprinzipale an. Standardmäßig werden die überschriebenen autorisierten Prinzipalen mit der Sammlung autorisierter Prinzipalen in der Hauptdatenbank kombiniert.
| Kind | Beschreibung |
|---|---|
| Vereinigung | Die angefügten Datenbankprinzipale enthalten immer die ursprünglichen Datenbankprinzipale sowie andere neue Prinzipale, die der Folgedatenbank hinzugefügt wurden. |
| Ersetzen | Keine Vererbung von Prinzipien aus der ursprünglichen Datenbank. Für die angefügte Datenbank müssen neue Prinzipale erstellt werden. |
| Nichts | Die angefügten Datenbankprinzipale enthalten nur die Prinzipale der ursprünglichen Datenbank ohne andere Prinzipale. |
Weitere Informationen zum Verwenden von Steuerelementbefehlen zum Konfigurieren der autorisierten Prinzipale finden Sie unter Steuerelementbefehle zum Verwalten eines Followerclusters.
Berechtigungen verwalten
Das Verwalten schreibgeschützter Datenbankberechtigungen ist identisch mit allen Datenbanktypen. Siehe Verwalten von Berechtigungen im Azure-Portal.
Konfigurieren der Zwischenspeicherungsrichtlinie
Der Follower-Datenbankadministrator kann die Zwischenspeicherungsrichtlinie der angefügten Datenbank oder einer der zugehörigen Tabellen im Hostingcluster ändern. Die Standardeinstellung besteht darin, die Quelldatenbank in der Clusterdatenbank des Leiters und die Caching-Strategien auf Tabellenebene mit den Richtlinien zu kombinieren, die in den Überschreibungsrichtlinien auf Datenbank- und Tabellenebene definiert sind. Sie können z. B. eine Zwischenspeicherungsrichtlinie von 30 Tagen in der Leader-Datenbank für die Ausführung monatlicher Berichte und eine dreitägige Zwischenspeicherungsrichtlinie in der Followerdatenbank verwenden, um nur die zuletzt verwendeten Daten zur Problembehandlung abzufragen. Weitere Informationen zum Verwenden von Steuerelementbefehlen zum Konfigurieren der Zwischenspeicherungsrichtlinie in der Followerdatenbank oder -tabelle finden Sie unter "Steuerungsbefehle für die Verwaltung eines Followerclusters".
Hinweise
- Wenn es Konflikte zwischen Datenbanken von Leader-/Followerclustern gibt, werden sie wie folgt aufgelöst, wenn alle Datenbanken vom Followercluster gefolgt werden:
- Eine Datenbank mit dem Namen DB , die auf dem Followercluster erstellt wurde, hat Vorrang vor einer Datenbank mit demselben Namen, der im Leadercluster erstellt wurde. Aus diesem Grund muss datenbank DB im Follower-Cluster entfernt oder umbenannt werden, damit der Followercluster die Datenbank DB des Leiters enthält.
- Eine Datenbank mit dem Namen DB , die von zwei oder mehr Leaderclustern gefolgt wird, wird willkürlich aus einem der Leadercluster ausgewählt und wird nicht mehr als einmal befolgt.
- Befehle zum Anzeigen von Clusteraktivitätsprotokoll und Verlauf, die auf einem Follower-Cluster ausgeführt werden, zeigen die Aktivität und den Verlauf des Follower-Clusters an, und ihre Ergebnismengen enthalten nicht die Ergebnisse des Leader-Clusters oder anderer Cluster.
- Beispiel: Ein
.show queries-Befehl, der auf dem Follower-Cluster ausgeführt wird, zeigt nur Abfragen an, die auf Datenbanken im Follower-Cluster ausgeführt werden, und nicht die Abfragen, die im Leader-Cluster für dieselbe Datenbank ausgeführt werden.
- Beispiel: Ein
Einschränkungen
- Der Followercluster und die Leadercluster müssen sich in derselben Region befinden.
- Wenn Streaming Ingestion für eine überwachte Datenbank verwendet wird, sollte der Follower-Cluster für Streaming Ingestion aktiviert sein, um das Verfolgen von Streaming-Daten zu ermöglichen.
- Die Datenverschlüsselung mithilfe von vom Kunden verwalteten Schlüsseln wird sowohl für Führungs- als auch für Followercluster nicht unterstützt.
- Sie können eine Datenbank, die an einen anderen Cluster angefügt ist, nicht löschen, bevor Sie sie trennen.
- Sie können einen Cluster nicht löschen, der eine Datenbank an einen anderen Cluster angefügt hat, bevor Sie ihn trennen.
- Freigabeeigenschaften auf Tabellenebene werden nicht unterstützt, wenn alle Datenbanken berücksichtigt werden.
Nächste Schritte
- Informationen zur Konfiguration des Followerclusters finden Sie unter "Steuerungsbefehle zum Verwalten eines Followerclusters".