Použití databází sledujících
Funkce databáze follower umožňuje připojit databázi umístěnou v jiném clusteru k vašemu clusteru Azure Data Explorer. Databáze sledujících je připojena v režimu jen pro čtení, což umožňuje zobrazit data a spouštět dotazy na data ingestovaná do vedoucí databáze. Databáze sledujících synchronizuje změny v vodicích databázích. Kvůli synchronizaci dochází k prodlevě dat v dostupnosti několika sekund až několika minut. Délka časové prodlevy závisí na celkové velikosti metadat vodicí databáze. Databáze leaderů a sledujících používají k načtení dat stejný účet úložiště. Vlastníkem úložiště je vedoucí databáze. Databáze sledujícího data zobrazí, aniž by je potřebovala ingestovat. Vzhledem k tomu, že připojená databáze je 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. Musí být odpojeny vedoucím nebo sledujícími a teprve potom mohou být odstraněny.
Připojení databáze k jinému clusteru pomocí funkce sledujícího se používá jako infrastruktura pro 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í. Sledování se dá také použít k přidružení nákladů na cluster Azure Data Explorer straně, která spouští dotazy na data.
Ukázky kódu založené na předchozích verzích sady SDK najdete v archivovaného článku.
Které databáze se používají?
- 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 vedoucích clusterů.
- Cluster může obsahovat databáze sledujících i vedoucí databáze.
Požadavky
- Předplatné Azure. Vytvořte si bezplatný účet Azure.
- Cluster Azure Data Explorer a databázi pro vedoucího a sledujíého. Vytvořte cluster a databázi.
- Vodicí databáze by měla obsahovat data. Ingestovat data můžete některou z metod popsaných v přehledu příjmu dat.
Připojení databáze
Existují různé metody, které můžete použít k připojení databáze. V tomto článku probereme připojení databáze pomocí jazyka C#, Pythonu, 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 vedoucím clusteru a clusteru sledujících. Přidání nebo odebrání přiřazení rolí pomocí Azure Portal, PowerShellu, Azure CLI a šablony ARM Přečtěte si další informace o řízení přístupu na základě role v Azure (Azure RBAC) a různých rolích.
Sdílení na úrovni tabulky
Při připojování databáze se dodržují také všechny tabulky, externí tabulky a materializovaná zobrazení. Můžete sdílet konkrétní tabulky, externí tabulky nebo materializovaná zobrazení tak, že nakonfigurujete vlastnosti 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 dohromady je 100.
Poznámka
- Sdílení na úrovni tabulky není podporováno při použití notace "*" všech databází.
- Pokud jsou zahrnutá materializovaná zobrazení, zahrnou se i jejich zdrojové tabulky.
Příklady
Zahrnout všechny tabulky Není potřeba žádný znak *, protože ve výchozím nastavení následují všechny tabulky:
tablesToInclude = []
Zahrňte všechny tabulky s názvy, které začínají na "Logs":
tablesToInclude = ["Logs*"]
Vyloučit všechny externí tabulky:
externalTablesToExclude = ["*"]
Vyloučit všechna materializovaná zobrazení:
materializedViewsToExclude=["*"]
Přepsání názvu databáze
Volitelně můžete název databáze v clusteru sledujících nastavit tak, aby se odlišil od vedoucího clusteru. Můžete například chtít připojit stejný název databáze z několika vedoucích clusterů 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
- Nainstalujte Azure.ResourceManager.Kusto.
- Nainstalujte Azure.Identity pro ověřování.
Příklad jazyka C#
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 = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, followerSubscriptionId);
var followerResourceGroupName = "followerResourceGroup";
var followerClusterName = "follower";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(followerResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(followerClusterName)).Value;
var attachedDatabaseConfigurations = cluster.GetKustoAttachedDatabaseConfigurations();
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration"
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var leaderResourceGroup = "leaderResourceGroup";
var leaderClusterName = "leader";
var attachedDatabaseConfigurationData = new KustoAttachedDatabaseConfigurationData
{
ClusterResourceId = new ResourceIdentifier($"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}"),
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, vyhledejte připojené databáze v Azure Portal. Můžete ověřit, že databáze byly úspěšně připojeny v clusteru sledujících nebo vedoucích clusterů.
Kontrola clusteru followerů
Přejděte do clusteru sledujících a vyberte Databáze.
V seznamu databází vyhledejte nové databáze jen pro čtení.
Tento seznam můžete zobrazit také na stránce přehledu databáze:
Kontrola vedoucího clusteru
Přejděte do vedoucího clusteru a vyberte Databáze.
Zkontrolujte, jestli jsou příslušné databáze označené jako SDÍLENÉ S OSTATNÍMI.>Ano.
Přepnutím odkazu na relaci zobrazíte podrobnosti.
Můžete si to také prohlédnout na stránce s přehledem databáze:
Odpojení databáze followerů
Poznámka
Pokud chcete databázi odpojit od sledujícího nebo vedoucího uživatele, musíte mít v clusteru, ze kterého databázi oddělujete, uživatele, skupinu, instanční objekt nebo spravovanou identitu s alespoň rolí přispěvatele. V následujícím příkladu používáme instanční objekt.
Odpojení připojené databáze sledujích od clusteru sledování pomocí C#**
Cluster followerů může libovolnou připojenou databázi sledování odpojit následujícím způsobem:
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 = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, followerSubscriptionId);
var followerResourceGroupName = "testrg";
//The cluster and database attached database configuration are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(followerResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(followerClusterName)).Value;
var attachedDatabaseConfiguration = (await cluster.GetKustoAttachedDatabaseConfigurationAsync(attachedDatabaseConfigurationsName)).Value;
await attachedDatabaseConfiguration.DeleteAsync(WaitUntil.Completed);
Odpojení připojené databáze sledujících od vedoucího clusteru pomocí jazyka C#
Vedoucí cluster může libovolnou připojenou databázi odpojit následujícím způsobem:
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 = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, leaderSubscriptionId);
var leaderResourceGroupName = "testrg";
var leaderClusterName = "leader";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(leaderResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(leaderClusterName)).Value;
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 KustoFollowerDatabaseDefinition(
clusterResourceId: new ResourceIdentifier($"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}"),
attachedDatabaseConfigurationName: attachedDatabaseConfigurationsName
);
await cluster.DetachFollowerDatabasesAsync(WaitUntil.Completed, followerDatabaseDefinition);
Správa objektů zabezpečení, 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í druh úpravy objektů zabezpečení". Ve výchozím nastavení se zkombinují přepsání autorizovaných objektů zabezpečení s kolekcí autorizovaných objektů zabezpečení vedoucí databáze.
Druh | Popis |
---|---|
Unie | Připojené objekty zabezpečení databáze budou vždy obsahovat původní objekty databáze a další nové objekty zabezpečení přidané do databáze sledujících. |
Nahrazení | Žádná dědičnost objektů zabezpečení z původní databáze. Pro připojenou databázi se musí vytvořit nové objekty zabezpečení. |
Žádný | 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ů pro správu ke konfiguraci autorizovaných objektů zabezpečení najdete v tématu Příkazy pro správu pro správu clusteru sledujících.
Správa 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 téma Správa databázových oprávnění v Azure Portal nebo použití příkazů pro správu ke správě rolí zabezpečení databáze.
Konfigurace zásad ukládání do mezipaměti
Správce databáze, který následuje, může upravit zásady ukládání do mezipaměti připojené databáze nebo kterékoli z jejích tabulek v hostitelském clusteru. Ve výchozím nastavení se zdrojová databáze v databázi vedoucího clusteru a zásady ukládání do mezipaměti na úrovni tabulky zkombinují 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 pro databázi leader pro spouštění měsíčních sestav a třídenní zásadu ukládání do mezipaměti pro databázi sledujících, aby se při řešení potíží dotazovaly pouze na poslední data. Další informace o použití příkazů pro správu ke konfiguraci zásad ukládání do mezipaměti v databázi sledování nebo tabulce najdete v tématu Příkazy pro správu pro správu clusteru sledující.
Poznámky
- Pokud dojde ke konfliktům mezi databázemi clusterů leader/follower a za všemi databázemi následuje cluster sledujících, vyřeší se následujícím způsobem:
- Databáze s názvem DB vytvořená v clusteru sledujících má přednost před databází se stejným názvem, která byla vytvořena v vedoucím clusteru. Proto je potřeba databázi databáze v clusteru sledujících odebrat nebo přejmenovat, aby cluster sledujících zahrnoval databázi vedoucí databáze.
- Databáze s názvem DB , za kterou následují dva nebo více vedoucí clustery, se libovolně vybere z jednoho z vedoucích clusterů a nebude se sledovat více než jednou.
- Příkazy pro zobrazení protokolu aktivit a historie clusteru spuštěné na clusteru sledujících zobrazí aktivitu a historii v clusteru sledujících a jejich sady výsledků nebudou zahrnovat výsledky vedoucího clusteru nebo clusterů.
- Příklad: Příkaz spuštěný
.show queries
v clusteru sledujících zobrazí pouze dotazy spuštěné v databázích následovaných clusterem sledujících, a ne dotazy spuštěné pro stejnou databázi v vedoucím clusteru.
- Příklad: Příkaz spuštěný
Omezení
- Sledující a vedoucí clustery musí být ve stejné oblasti.
- Pokud se u databáze, kterou sledujete, používá ingestování streamování , měl by být v clusteru sledující povolený příjem streamů, aby bylo možné sledovat streamovaná data příjmu dat.
- Sledování clusteru s šifrováním dat s využitím klíčů spravovaných zákazníkem (CMK) se podporuje s následujícími omezeními:
- Cluster sledujících ani vedoucí cluster nesledují jiné clustery.
- Pokud cluster sledujících sleduje vedoucí cluster s povoleným klíčem CMK a přístup vedoucího serveru ke klíči je odvolán, cluster vedoucího serveru i cluster sledujících se pozastaví. V této situaci můžete buď vyřešit problém s cmk a pak obnovit cluster sledujících, nebo můžete odpojit databáze sledujících od clusteru sledujících a pokračovat nezávisle na vedoucím clusteru.
- Databázi, která je připojená k jinému clusteru, nemůžete před odpojením odstranit.
- Před odpojením clusteru, který má databázi připojenou k jinému clusteru, není možné odstranit.
- Vlastnosti sdílení na úrovni tabulky se nepodporují při sledování všech databází.
- Pokud chcete v databázích sledujících dotazovat externí tabulky, které jako metodu ověřování používají spravovanou identitu, musí se spravovaná identita přidat do clusteru sledujících. Tato funkce nefunguje, pokud jsou vedoucí clustery a clustery sledujících zřízeny v různých tenantech.
Další krok
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro