Použití databází sledujících
Funkce databáze followerů umožňuje připojit databázi umístěnou v jiném clusteru ke 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, která byla ingestovaná do vodicí databáze. Databáze sledujících synchronizuje změny v vodicích databázích. Kvůli synchronizaci dochází k prodlevě dat od několika sekund do několika minut v dostupnosti dat. Délka časové prodlevy závisí na celkové velikosti metadat databáze leader. Databáze leaderů a sledujících používají k načtení dat stejný účet úložiště. Vlastníkem úložiště je databáze leader. Databáze sledující data zobrazí, aniž by je bylo nutné ingestovat. Vzhledem k tomu, že připojená databáze je databáze jen pro čtení, data, tabulky a zásady v databázi se nedají 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í a teprve potom mohou být odstraněny.
Připojení databáze k jinému clusteru pomocí funkce follower 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í je také možné použít k přidružení nákladů na cluster Azure Data Explorer straně, která spouští dotazy na data.
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.
- Clustery se strojem v3 můžou sledovat pouze clustery se strojem v3 a podobně clustery se strojem v2 můžou sledovat pouze clustery se strojem v2.
Požadavky
- Předplatné Azure. Vytvořte si bezplatný účet Azure.
- Cluster a databáze Azure Data Explorer pro vedoucího a sledujícího. Vytvořte cluster a databázi.
- Vodicí databáze by měla obsahovat data. Data můžete ingestovat pomocí jedné z metod probíraný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í C#, Pythonu, PowerShellu nebo šablony Azure Resource Manager. Pokud chcete připojit databázi, musíte mít identitu uživatele, skupiny, instančního objektu nebo spravované identity s alespoň rolí přispěvatele ve 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í 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 dohromady je 100.
Poznámka
Sdílení na úrovni tabulky není podporováno při použití notace "*" všech databází.
Poznámka
Při zahrnutí materializovaných zobrazení jsou zahrnuté i jejich zdrojové tabulky.
Příklady
Zahrnout všechny tabulky. Není potřeba žádný znak *, protože všechny tabulky jsou ve výchozím nastavení následovány:
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 nastavit, aby se název databáze v clusteru sledujících lišit 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 Microsoft.Azure.Management.Kusto.
- Pro ověřování nainstalujte Microsoft.Rest.ClientRuntime.Azure.Authentication.
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 = 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
);
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 = 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
);
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 = 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
);
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í řídicích příkazů ke konfiguraci autorizovaných objektů zabezpečení najdete v tématu Řídicí příkazy 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í. Viz správa oprávnění v Azure Portal.
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í řídicích příkazů ke konfiguraci zásad ukládání do mezipaměti v databázi nebo tabulce sledování najdete v tématu Řídicí příkazy 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.
- Šifrování dat pomocí klíčů spravovaných zákazníkem se nepodporuje v clusterech vedoucích i sledujících.
- 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 nejsou podporovány při sledování všech databází.
Další kroky
- Informace o konfiguraci clusteru sledování najdete v tématu Řídicí příkazy pro správu clusteru sledování.