Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja follower database umożliwia dołączenie bazy danych znajdującej się w innym klastrze do klastra Azure Data Explorer. Baza danych podrzędna jest dołączona w trybie tylko do odczytu, umożliwiając wyświetlanie danych i uruchamianie zapytań dotyczących danych wprowadzonych do bazy danych lidera. Baza danych podrzędnych synchronizuje się ze zmianami w bazach danych liderów. Ze względu na synchronizację, opóźnienie w dostępności danych wynosi od kilku sekund do kilku minut. Długość opóźnienia zależy od ogólnego rozmiaru metadanych bazy danych lidera. Baza danych lidera i obserwującego używa tego samego konta magazynowego, aby pobrać dane. Baza danych lidera jest właścicielem pamięci. Baza danych śledząca wyświetla dane bez konieczności ich wczytywania. Ponieważ dołączona baza danych jest bazą danych tylko do odczytu, nie można modyfikować danych, tabel i zasad w bazie danych z wyjątkiem zasad buforowania, podmiotów zabezpieczeń i uprawnień. Nie można usunąć dołączonych baz danych. Lider lub podążający musi odłączyć bazy danych przed ich usunięciem.
Dołączanie bazy danych do innego klastra przy użyciu możliwości podążania służy jako infrastruktura do udostępniania danych między organizacjami i zespołami. Funkcja jest przydatna do segregowania zasobów obliczeniowych w celu ochrony środowiska produkcyjnego przed przypadkami użycia nieprodukcyjnymi. Za pomocą narzędzia follower można również skojarzyć koszt klastra Azure Data Explorer z partią, która uruchamia zapytania dotyczące danych.
Uwaga
Przykłady kodu oparte na poprzednich wersjach zestawu SDK można znaleźć w zarchiwizowanym artykule.
Które bazy danych są obserwowane?
W przypadku klastrów mają zastosowanie następujące elementy:
- Klaster może podążać za jedną bazą danych, kilkoma bazami danych lub wszystkimi bazami danych klastra lidera.
- Pojedynczy klaster może podążać za bazami danych z wielu klastrów liderów.
- Klaster może zawierać zarówno bazy danych obserwowanych, jak i wiodące bazy danych.
Wymagania wstępne
- Subskrypcja Azure. Utwórz konto free Azure.
- Klaster i baza danych Azure Data Explorer dla lidera i obserwatora. Utwórz klaster i bazę danych.
- Baza danych lidera powinna zawierać dane. Można wchłaniać dane przy użyciu jednej z metod omówionych w przeglądzie wchłaniania.
Dołączanie bazy danych
Istnieją różne metody, których można użyć do dołączania bazy danych. W tym artykule omówiono dołączanie bazy danych przy użyciu języka C#, Python, programu PowerShell lub szablonu Azure Resource Manager. Aby dołączyć bazę danych, musisz mieć użytkownika, grupę, jednostkę usługi lub tożsamość zarządzaną z co najmniej rolą współautora w klastrze wiodącym i klastrze podrzędnym. Dodaj lub usuń przypisania ról przy użyciu Azure portal, PowerShell, Azure CLI i szablonu ARM. Dowiedz się więcej o kontroli dostępu opartej na rolach Azure (Azure RBAC) oraz różnych rolach.
Uwaga
Wstępne utworzenie bazy danych obserwujących nie jest konieczne, ponieważ jest ona tworzona podczas procesu dołączania.
Udostępnianie na poziomie tabeli
Przy dołączaniu baz danych, dołączane są również wszystkie tabele, tabele zewnętrzne i zmaterializowane widoki. Określone tabele/tabele zewnętrzne/zmaterializowane widoki można udostępniać, konfigurując właściwość "TableLevelSharingProperties".
Element „TableLevelSharingProperties” zawiera osiem tablic ciągów: , tablesToInclude, tablesToExclude, externalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, i functionsToInclude. functionsToExclude Maksymalna liczba wpisów we wszystkich tablicach wynosi 100.
Uwaga
- Udostępnianie na poziomie tabeli nie jest obsługiwane w przypadku używania notacji '*' dla wszystkich baz danych.
- W przypadku uwzględnienia zmaterializowanych widoków, również ich tabele źródłowe są uwzględniane.
Przykłady
Poniższy przykład zawiera wszystkie tabele. Domyślnie wszystkie tabele są śledzone bez użycia notacji "*".
tablesToInclude = []
Poniższy przykład obejmuje wszystkie funkcje. Domyślnie wszystkie funkcje są stosowane bez użycia notacji "*".
functionsToInclude = []
Poniższy przykład obejmuje wszystkie tabele, których nazwy rozpoczynają się od "Logs".
tablesToInclude = ["Logs*"]
Poniższy przykład obejmuje wszystkie tabele zewnętrzne:
externalTablesToExclude = ["*"]
Poniższy przykład obejmuje wszystkie zmaterializowane widoki:
materializedViewsToExclude=["*"]
Nadpisanie nazwy bazy danych
Możesz opcjonalnie ustawić nazwę bazy danych w klastrze obserwowanym inaczej niż w klastrze lidera. Możesz na przykład dołączyć tę samą nazwę bazy danych z wielu klastrów liderów do klastra obserwowanego. Aby określić inną nazwę bazy danych, skonfiguruj właściwość "DatabaseNameOverride" lub "DatabaseNamePrefix".
Dołączanie bazy danych przy użyciu języka C#
Wymagane pakiety NuGet
- Zainstaluj Azure. ResourceManager.Kusto.
- Zainstaluj Azure.Identity do uwierzytelniania.
Przykład w języku 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);
Sprawdź, czy baza danych została pomyślnie dołączona
Aby sprawdzić, czy baza danych została pomyślnie dołączona, znajdź dołączone bazy danych w portalu Azure. Możesz sprawdzić, czy bazy danych zostały pomyślnie dołączone w klastrze obserwujących lub lidera.
Sprawdź klaster obserwujących
Przejdź do klastra podrzędnego i wybierz pozycję Bazy danych.
Na liście baz danych wyszukaj nowe bazy danych tylko do odczytu.
Tę listę można również wyświetlić na stronie przeglądu bazy danych:
Sprawdzanie klastra liderów
Przejdź do klastra lidera i wybierz pozycję Bazy danych
Sprawdź, czy odpowiednie bazy danych są oznaczone jako UDOSTĘPNIONE INNYM>Tak
Przełącz link relacji, aby wyświetlić szczegóły.
Można to również wyświetlić na stronie przeglądu bazy danych:
Odłącz bazę danych podrzędną
Uwaga
Aby odłączyć bazę danych od strony obserwowanej lub lidera, musisz posiadać użytkownika, grupę, głównego użytkownika usługi lub tożsamość zarządzaną z co najmniej rolą współpracownika w klastrze, z którego odłączasz bazę danych. W poniższym przykładzie używamy jednostki usługi.
Odłącz dołączoną bazę danych obserwowanych z klastra obserwowanego przy użyciu języka C#**
Klaster obserwowania może odłączyć dowolną dołączoną bazę danych obserwowanych w następujący sposób:
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);
Odłącz przyłączoną bazę danych follower od klastra lidera za pomocą języka C#
Klaster liderów może odłączyć dowolną dołączoną bazę danych w następujący sposób:
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);
Zarządzanie podmiotami, uprawnieniami i polityką buforowania
Zarządzanie podmiotami głównymi
Podczas dołączania bazy danych określ "domyślny rodzaj modyfikacji podmiotów". Wartością domyślną jest połączenie przesłonięć autoryzowanych podmiotów zabezpieczeń z kolekcją bazy danych lidera autoryzowanych podmiotów zabezpieczeń
| Rodzaj | Opis |
|---|---|
| Unia | Dołączone podmioty zabezpieczeń bazy danych zawsze będą zawierać oryginalne podmioty zabezpieczeń bazy danych oraz inne nowe podmioty zabezpieczeń dodane do bazy danych obserwowanej bazy danych. |
| Zastąp | Brak dziedziczenia zasad użytkowników z oryginalnej bazy danych. Dla podłączonej bazy danych trzeba utworzyć nowe zasady. |
| Brak | Dołączone podmioty bazy danych obejmują tylko podmioty oryginalnej bazy danych, bez żadnych innych podmiotów. |
Aby uzyskać więcej informacji na temat używania poleceń zarządzania do konfigurowania uprawnionych podmiotów, zobacz Polecenia zarządzania klastrem obserwującym.
Zarządzaj uprawnieniami
Zarządzanie uprawnieniami bazy danych tylko do odczytu jest takie samo jak w przypadku wszystkich typów baz danych. Aby przypisać uprawnienia, zobacz Zarządzanie uprawnieniami bazy danych w portalu Azure lub użyj poleceń zarządzania do Zarządzanie rolami zabezpieczeń bazy danych.
Konfigurowanie zasad buforowania
Administrator bazy danych obserwowanej może zmodyfikować zasady buforowania dołączonej bazy danych lub dowolnej z jej tabel w klastrze hostingu. Ustawieniem domyślnym jest połączenie źródłowej bazy danych w bazie danych klastra wiodącego i zasad buforowania na poziomie tabeli z zasadami zdefiniowanymi w bazie danych i zasadach zastępowania na poziomie tabeli. Możesz na przykład mieć 30-dniowe zasady buforowania w bazie danych lidera do uruchamiania raportowania miesięcznego i trzydniowe zasady buforowania w bazie danych obserwowanych, aby wykonywać zapytania tylko o ostatnie dane na potrzeby rozwiązywania problemów. Aby uzyskać więcej informacji na temat używania poleceń zarządzania w celu konfigurowania zasad buforowania w bazie danych podrzędnej lub tabeli, zobacz Polecenia zarządzania dla klastra podrzędnego.
Uwagi
Przejrzyj następujące uwagi:
- Jeśli występują konflikty między bazami danych klastrów liderów/obserwujących, gdy wszystkie bazy danych są śledzone przez klaster obserwujący, są one rozwiązywane w następujący sposób:
- Baza danych o nazwie DB utworzona w klastrze obserwowanym ma pierwszeństwo przed bazą danych o tej samej nazwie, która została utworzona w klastrze liderów. Dlatego baza danych w klastrze podrzędnym musi zostać usunięta lub zmieniona, aby klaster podrzędny mógł uwzględniać bazę danych lidera .
- Baza danych o nazwie DB, po której następuje co najmniej dwa klastry liderów, zostanie dowolnie wybrana z jednego z klastrów liderów i nie będzie obserwowana więcej niż raz.
- Polecenia służące do wyświetlania dziennika aktywności i historii klastra uruchomionego w klastrze obserwowanym pokazują aktywność i historię w klastrze obserwowanym, a ich zestawy wyników nie zawierają tych wyników klastra lidera ani klastrów.
- Na przykład: Polecenie uruchomione
.show queriesw klastrze podrzędnym pokazuje tylko zapytania uruchomione w bazach danych, które są śledzone przez klaster podrzędny, a nie zapytania uruchomione w tych samych bazach danych w klastrze głównym.
- Na przykład: Polecenie uruchomione
Ograniczenia
Zapoznaj się z następującymi ograniczeniami:
- Klastry obserwujące i klastry liderów muszą znajdować się w tym samym regionie.
- Jeśli w bazie danych, która jest śledzona, używane jest pozyskiwanie strumieniowe, klaster śledzący powinien mieć włączoną funkcję pozyskiwania strumieniowego, aby umożliwić śledzenie danych pozyskiwanych strumieniowo.
- Stosowanie klastra z szyfrowaniem danych przy użyciu kluczy zarządzanych przez klienta (CMK) jest obsługiwane z następującymi ograniczeniami:
- Klaster śledzący lub klaster lider nie podąża za innymi klastrami.
- Jeśli klaster podrzędny śledzi klaster lidera z włączonym CMK, a dostęp lidera do klucza zostanie odwołany, zarówno klaster lidera, jak i klaster podrzędny zostaną zawieszone. W takiej sytuacji można rozwiązać problem z kluczem CMK, a następnie wznowić klaster podrzędny lub odłączyć bazy danych podrzędnych z klastra podrzędnego oraz wznowić je niezależnie od klastra lidera.
- Nie można usunąć bazy danych dołączonej do innego klastra przed odłączeniem.
- Nie można usunąć klastra, który ma bazę danych dołączoną do innego klastra przed odłączeniem go.
- Właściwości udostępniania na poziomie tabeli nie są obsługiwane przy stosowaniu do wszystkich baz danych.
- W bazach danych obserwujących, aby wysyłać zapytania do tabel zewnętrznych używających tożsamości zarządzanej jako metody uwierzytelniania, tożsamość zarządzana musi zostać dodana do klastra obserwującego. Ta funkcja nie działa, gdy klaster główny i klaster podrzędny są wdrażane w różnych tenantach.
- Nie można przechowywać wyników zapytań w bazie danych o dostępie tylko do odczytu.