Freigeben über


Verwenden von Followerdatenbanken

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

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

  1. Alle Tabellen einschließen. Es ist kein '*' erforderlich, da allen Tabellen standardmäßig gefolgt wird.

    tablesToInclude = []
    
  2. Fügen Sie alle Tabellen mit Namen ein, die mit "Logs" beginnen:

    tablesToInclude = ["Logs*"]
    
  3. Alle externen Tabellen ausschließen:

    externalTablesToExclude = ["*"]
    
  4. 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

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

  1. Navigieren Sie zum Followercluster, und wählen Sie "Datenbanken" aus.

  2. Suchen Sie in der Datenbankliste nach neuen schreibgeschützten Datenbanken.

    Screenshot der schreibgeschützten Follower-Datenbanken im Portal.

    Sie können diese Liste auch auf der Datenbankübersichtsseite anzeigen:

    Screenshot der Übersichtsseite der Datenbanken mit liste der Followercluster.

Überprüfen Ihres Leaderclusters

  1. Navigieren Sie zum Leadercluster, und wählen Sie "Datenbanken" aus.

  2. Überprüfen Sie, ob die relevanten Datenbanken als "FÜR ANDERE> FREIGEGEBEN" gekennzeichnet sindJa

  3. Schalten Sie den Beziehungslink um, um Details anzuzeigen.

    Screenshot der Datenbanken, die für andere freigegeben wurden, um den Leadercluster zu überprüfen.

    Sie können dies auch auf der Datenbankübersichtsseite anzeigen:

    Screenshot der Übersicht mit einer Liste der Datenbanken, die für andere Personen freigegeben wurden.

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.

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