Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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ředplatné Azure. Vytvořte účet free Azure.
- Cluster a databáze Azure Data Explorer pro hlavního a podřízeného. Vytvořte cluster a databázi.
- Databáze vedoucí by měla obsahovat data. Data můžete přijmout pomocí jedné z metod diskutovaných v přehledu ingestování dat.
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.
- C#
- Python
- PowerShell
- šablona Resource Manager
Připojení databáze pomocí jazyka C#
Požadované balíčky NuGet
- Nainstalujte Azure. ResourceManager.Kusto.
- Nainstalujte Azure. Identita pro ověřování
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ů
Přejděte k následnickému clusteru 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 clusteru vedoucího serveru
Přejděte do clusteru vedoucího serveru a vyberte Databáze.
Zkontrolujte, jestli jsou příslušné databáze označené jako sdílené s ostatními>ano.
Přepněte odkaz na relaci a zobrazte podrobnosti.
Můžete si to také prohlédnout na stránce přehledu databáze:
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.
- C#
- Python
- PowerShell
- šablona Resource Manager
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 queriesv 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.
- Příklad: Příkaz spuštěný
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í.