Použijte sledovací databáze

Funkce follower database umožňuje připojit databázi umístěnou v jiném clusteru ke clusteru Azure Data Explorer. Následující databáze je připojena v režimu jen pro čtení, takže je možné zobrazit data a spouštět dotazy na data, která byla ingestována do databáze vedoucí databáze. Následující databáze synchronizuje změny v databázích vedoucího serveru. Kvůli synchronizaci dochází ke zpoždění v dostupnosti dat o několik sekund až několik minut. Délka časové prodlevy závisí na celkové velikosti metadat databáze vedoucího serveru. Databáze vedoucího a následníka používají k načtení dat stejný účet úložiště. Databáze leader vlastní úložiště. Sledující databáze zobrazí data, aniž by je potřebovala ingestovat. Vzhledem k tomu, že připojená databáze je databáze určená jen pro čtení, data, tabulky a zásady v databázi nelze upravovat s výjimkou zásad ukládání do mezipaměti, objektů zabezpečení a oprávnění. Připojené databáze nelze odstranit. Vedoucí nebo následníci musí před odstraněním odpojit databáze.

Připojení databáze k jinému clusteru pomocí následující funkce se používá jako infrastruktura ke sdílení dat mezi organizacemi a týmy. Tato funkce je užitečná k oddělení výpočetních prostředků za účelem ochrany produkčního prostředí před neprodukčními případy použití. Sledující může také přiřadit náklady na provoz clusteru Azure Data Explorer subjektu, který spouští dotazy na data.

Poznámka:

Ukázky kódu založené na předchozích verzích sady SDK najdete v archivovaného článku.

Které databáze se následují?

Následující informace platí pro clustery:

  • Cluster může sledovat jednu databázi, několik databází nebo všechny databáze vedoucího clusteru.
  • Jeden cluster může sledovat databáze z několika clusterů leaderů.
  • Cluster může obsahovat databáze sledujících i vedoucí databáze.

Požadavky

Připojení databáze

K připojení databáze můžete použít různé metody. V tomto článku probereme připojení databáze pomocí jazyka C#, Python, PowerShellu nebo šablony Azure Resource Manager. Pokud chcete připojit databázi, musíte mít uživatele, skupinu, instanční objekt nebo spravovanou identitu s alespoň rolí přispěvatele v clusteru vedoucího serveru a clusteru sledujících. Přidání nebo odebrání přiřazení rolí pomocí portálu Azure, PowerShell, Azure CLI a šablonyARM. Přečtěte si další informace o Azure řízení přístupu na základě role (Azure RBAC) a různých rolích.

Poznámka:

Není nutné předem vytvářet databázi následníka, protože se vytvoří během procesu připojení.

Sdílení na úrovni tabulky

Při připojení databází se zahrnou také všechny tabulky, externí tabulky a materializovaná zobrazení. Konkrétní tabulky, externí tabulky nebo materializovaná zobrazení můžete sdílet konfigurací TableLevelSharingProperties.

'TableLevelSharingProperties' obsahuje osm polí řetězců: tablesToInclude, tablesToExclude, externalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, functionsToInclude a functionsToExclude. Maximální počet položek ve všech polích je 100.

Poznámka:

  • Sdílení na úrovni tabulky není podporováno při použití notace '*' pro všechny databáze.
  • Při zahrnutí materializovaných zobrazení jsou zahrnuté i jejich zdrojové tabulky.

Příklady

Následující příklad obsahuje všechny tabulky. Ve výchozím nastavení se všechny tabulky automaticky sledují bez použití notace '*'.

tablesToInclude = []

Následující příklad obsahuje všechny funkce. Ve výchozím nastavení následují všechny funkce bez použití notace *:

functionsToInclude = []

Následující příklad obsahuje všechny tabulky s názvy, které začínají na "Logs":

tablesToInclude = ["Logs*"]

Následující příklad obsahuje všechny externí tabulky:

externalTablesToExclude = ["*"]

Následující příklad obsahuje všechna materializovaná zobrazení:

materializedViewsToExclude=["*"]

Přepsání názvu databáze

Volitelně můžete nastavit název databáze v clusteru sledujících, který se liší od vedoucího clusteru. Můžete například chtít připojit stejný název databáze z několika clusterů leaderů ke clusteru sledujících. Pokud chcete zadat jiný název databáze, nakonfigurujte vlastnost DatabaseNameOverride nebo DatabaseNamePrefix.

Připojení databáze pomocí jazyka C#

Požadované balíčky NuGet

Příklad jazyka C#

var followerClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "followerResourceGroup", clusterName: "follower");
var leaderClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "leaderResourceGroup", clusterName: "leader");
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration";

var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var followerCluster = resourceManagementClient.GetKustoClusterResource(followerClusterId);
var attachedDatabaseConfigurations = followerCluster.GetKustoAttachedDatabaseConfigurations();
var attachedDatabaseConfigurationData = new KustoAttachedDatabaseConfigurationData
{
    ClusterResourceId = leaderClusterId,
    DatabaseName = "<databaseName>", // Can be a specific database name in a leader cluster or * for all databases
    DefaultPrincipalsModificationKind = KustoDatabaseDefaultPrincipalsModificationKind.Union,
    Location = AzureLocation.NorthCentralUS
};

// 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 KustoDatabaseTableLevelSharingProperties();
    attachedDatabaseConfigurationData.TableLevelSharingProperties.TablesToInclude.Add("table1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.TablesToExclude.Add("table2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.ExternalTablesToExclude.Add("exTable1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.ExternalTablesToInclude.Add("exTable2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.MaterializedViewsToInclude.Add("matTable1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.MaterializedViewsToExclude.Add("matTable2");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.FunctionsToInclude.Add("func1");
    attachedDatabaseConfigurationData.TableLevelSharingProperties.FunctionsToExclude.Add("func2");
}

await attachedDatabaseConfigurations.CreateOrUpdateAsync(WaitUntil.Completed, attachedDatabaseConfigurationName, attachedDatabaseConfigurationData);

Ověření úspěšného připojení databáze

Pokud chcete ověřit úspěšné připojení databáze, najděte připojené databáze na portálu Azure. Můžete ověřit, že databáze byly úspěšně připojeny buď ve follower clusterech, nebo leader clusterech.

Zkontrolujte svůj skupinu sledovatelů

  1. Přejděte k následnickému clusteru a vyberte Databáze.

  2. V seznamu databází vyhledejte nové databáze jen pro čtení.

    Snímek obrazovky s databázemi sledujících jen pro čtení na portálu

    Tento seznam můžete zobrazit také na stránce přehledu databáze:

    Snímek obrazovky se stránkou s přehledem databází se seznamem následných clusterů

Kontrola clusteru vedoucího serveru

  1. Přejděte do clusteru vedoucího serveru a vyberte Databáze.

  2. Zkontrolujte, jestli jsou příslušné databáze označené jako sdílené s ostatními>ano.

  3. Přepněte odkaz na relaci a zobrazte podrobnosti.

    Snímek obrazovky s databázemi sdílenými s ostatními za účelem kontroly clusteru vedoucího serveru

    Můžete si to také prohlédnout na stránce přehledu databáze:

    Snímek obrazovky s přehledem se seznamem databází sdílených s ostatními

Odpojení následných databází

Poznámka:

Pokud chcete odpojit databázi ze strany sledujícího nebo vedoucího, musíte mít uživatele, skupinu, klienta služby nebo spravovanou identitu s alespoň rolí přispěvatele v clusteru, ze kterého databázi odpojíte. V následujícím příkladu používáme služební principál.

Odpojte připojenou databázi následovníka z clusteru následovníků pomocí jazyka C#**

Cluster následovníků může odpojit jakoukoli připojenou follower databázi následujícím způsobem:

var attachedDatabaseConfigurationId = KustoAttachedDatabaseConfigurationResource.CreateResourceIdentifier(
    subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "testrg", clusterName: "follower",
    attachedDatabaseConfigurationName: "attachedDatabaseConfiguration");
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var attachedDatabaseConfiguration = resourceManagementClient.GetKustoAttachedDatabaseConfigurationResource(attachedDatabaseConfigurationId);
await attachedDatabaseConfiguration.DeleteAsync(WaitUntil.Completed);

Odpojte připojenou následnou databázi od clusteru vedoucího serveru pomocí jazyka C.#

Vedoucí cluster může odpojit jakoukoli připojenou databázi následujícím způsobem:

var leaderClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "testrg", clusterName: "leader");
var followerClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "followerResourceGroup", clusterName: "follower");
var followerDatabaseDefinition = new KustoFollowerDatabaseDefinition(
    clusterResourceId: followerClusterId,
    attachedDatabaseConfigurationName: "attachedDatabaseConfiguration"
);
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var leaderCluster = resourceManagementClient.GetKustoClusterResource(leaderClusterId);
await leaderCluster.DetachFollowerDatabasesAsync(WaitUntil.Completed, followerDatabaseDefinition);

Správa uživatelů, oprávnění a zásad ukládání do mezipaměti

Správa objektů zabezpečení

Při připojování databáze zadejte "výchozí typ úpravy principálů". Výchozí možností je kombinovat autorizované osoby pro přepsání s kolekcí vedoucí databáze autorizovaných osob.

Druh Popis
Unie Připojené objekty zabezpečení databáze budou vždy zahrnovat původní objekty zabezpečení databáze a další nové objekty zabezpečení přidané do následující databáze.
Nahradit Žádná dědičnost uživatelů, skupin nebo rolí z původní databáze. Pro připojenou databázi je nutné vytvořit nové principály.
Nic Připojené objekty zabezpečení databáze zahrnují pouze objekty zabezpečení původní databáze bez dalších objektů zabezpečení.

Další informace o použití příkazů ke konfiguraci autorizovaných subjektů naleznete v tématu Příkazy pro správu následného clusteru.

Spravovat oprávnění

Správa oprávnění databáze jen pro čtení je stejná jako u všech typů databází. Pokud chcete přiřadit oprávnění, přečtěte si informace o oprávněních databáze Na portálu Azure nebo použijte příkazy pro správu k Spravování rolí zabezpečení databáze.

Konfigurace zásad ukládání do mezipaměti

Správce následných databází může upravit zásady ukládání do mezipaměti připojené databáze nebo některé z jejích tabulek v hostitelském clusteru. Výchozí možností je kombinovat zdrojovou databázi v databázi vedoucího clusteru a zásady ukládání do mezipaměti na úrovni tabulky se zásadami definovanými v zásadách přepsání na úrovni databáze a tabulky. Můžete mít například 30denní zásadu ukládání do mezipaměti v hlavní databázi pro generování měsíčních sestav a 3denní zásadu ukládání do mezipaměti v následující databázi pro dotazování pouze na nedávná data při řešení problémů. Další informace o použití příkazů pro správu ke konfiguraci zásad cache na podřízené databázi nebo tabulce naleznete v části Příkazy pro správu u podřízených clusterů.

Poznámky

Projděte si následující poznámky:

  • Pokud dojde ke konfliktům mezi databázemi clusterů leader/follower, když všechny databáze následuje cluster follower, budou vyřešeny následujícím způsobem:
    • Databáze s názvem DATABÁZE vytvořená v clusteru sledujících má přednost před databází se stejným názvem, který byl vytvořen v clusteru vedoucího serveru. Proto je potřeba databázi DB v následnickém clusteru odebrat nebo přejmenovat, aby následnický cluster zahrnoval databázi DB vůdce.
    • Databáze s názvem DB , po které následují dva nebo více hlavních clusterů, bude libovolně vybrána z jednoho z hlavních clusterů a nebude následovat více než jednou.
  • Příkazy pro zobrazení protokolu aktivit clusteru a historie spuštěné v clusteru sledujících zobrazují aktivitu a historii v clusteru sledujících a jejich sady výsledků nezahrnují tyto výsledky vedoucího clusteru nebo clusterů.
    • Příklad: Příkaz spuštěný .show queries v následujícím clusteru zobrazuje pouze dotazy spuštěné v databázích následovaných následným clusterem, a ne dotazy spuštěné ve stejné databázi v clusteru leader.

Omezení

Projděte si následující omezení:

  • Sledující a vedoucí clustery musí být ve stejné oblasti.
  • Pokud je příjem streamování používán na sledované databázi, měl by být follower cluster povolen pro příjem dat streamování, aby bylo umožněno následování streamovaných dat.
  • Sledování clusteru s šifrováním dat pomocí klíčů spravovaných zákazníkem (CMK) se podporuje s následujícími omezeními:
    • Následující cluster nebo vedoucí cluster nesledují jiné clustery.
    • Pokud sledující cluster sleduje vedoucí cluster s povoleným CMK a přístup vedoucího clusteru ke klíči je odvolán, oba, jak vedoucí, tak sledující clustery, budou pozastaveny. V takovém případě můžete problém s CMK vyřešit a pak obnovit následný cluster, nebo můžete odpojit databáze následného clusteru a pokračovat nezávisle na vedoucím clusteru.
  • Před odpojením nemůžete odstranit databázi, která je připojená k jinému clusteru.
  • Před odpojením clusteru nemůžete odstranit cluster, který má databázi připojenou k jinému clusteru.
  • Při sledování všech databází nejsou podporovány vlastnosti sdílení na úrovni tabulky.
  • Pokud chcete v následných databázích dotazovat externí tabulky, které jako metodu ověřování používají spravovanou identitu, musí být spravovaná identita přidána do clusteru sledujících. Tato funkce nefunguje, když jsou clustery vedoucího a následníka zřízené v různých tenantech.
  • Výsledky dotazu nemůžete uložit do sledované databáze jen pro čtení.

Další krok