Korzystanie z baz danych obserwowanych
Funkcja bazy danych obserwowanej umożliwia dołączenie bazy danych znajdującej się w innym klastrze do klastra usługi Azure Data Explorer. Baza danych obserwowanych jest dołączona w trybie tylko do odczytu, umożliwiając wyświetlanie danych i uruchamianie zapytań dotyczących danych pozyskanych do bazy danych lidera. Baza danych obserwowanych synchronizuje zmiany w bazach danych liderów. Ze względu na synchronizację występuje opóźnienie danych od kilku sekund do kilku minut w dostępności danych. Długość opóźnienia zależy od ogólnego rozmiaru metadanych bazy danych lidera. Bazy danych liderów i obserwowanych używają tego samego konta magazynu, aby pobrać dane. Magazyn jest własnością bazy danych lidera. Baza danych obserwowanych wyświetla dane bez konieczności ich pozyskiwania. 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. Muszą być odłączone przez lidera lub zwolennika, a dopiero wtedy można je usunąć.
Dołączanie bazy danych do innego klastra przy użyciu funkcji obserwowania jest używane jako infrastruktura do udostępniania danych między organizacjami i zespołami. Ta funkcja jest przydatna do segregowania zasobów obliczeniowych w celu ochrony środowiska produkcyjnego przed przypadkami użycia nieprodukcyjnymi. Obserwowanie może również służyć do skojarzenia kosztów klastra usługi Azure Data Explorer z partią, która uruchamia zapytania dotyczące danych.
Które bazy danych są przestrzegane?
- Klaster może podążać za jedną bazą danych, kilkoma bazami danych lub wszystkimi bazami danych klastra lidera.
- Pojedynczy klaster może śledzić bazy danych z wielu klastrów liderów.
- Klaster może zawierać zarówno bazy danych obserwowanych, jak i bazy danych liderów.
- Klastry EngineV3 mogą być zgodne tylko z klastrami EngineV3, analogicznie klastry EngineV2 mogą być zgodne tylko z klastrami V2.
Wymagania wstępne
- Subskrypcja platformy Azure. Utwórz bezpłatne konto platformy Azure.
- Klaster i baza danych usługi Azure Data Explorer dla lidera i obserwowanego. Utwórz klaster i bazę danych.
- Baza danych lidera powinna zawierać dane. Dane można pozyskiwać przy użyciu jednej z metod omówionych w przeglądzie pozyskiwania.
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 usługi Azure Resource Manager. Aby dołączyć bazę danych, musisz mieć tożsamość użytkownika, grupy, jednostki usługi lub tożsamości zarządzanej z co najmniej rolą współautora w klastrze liderów i klastrem obserwowanym. Dodawanie lub usuwanie przypisań ról przy użyciu Azure Portal, programu PowerShell, interfejsu wiersza polecenia platformy Azure i szablonu usługi ARM. Dowiedz się więcej na temat kontroli dostępu opartej na rolach (RBAC) platformy Azure i różnych ról.
Udostępnianie na poziomie tabeli
Podczas dołączania bazy danych wszystkie tabele są również obserwowane tabele zewnętrzne i zmaterializowane widoki. Możesz udostępniać określone tabele/tabele zewnętrzne/zmaterializowane widoki, konfigurując właściwość "TableLevelSharingProperties".
Element "TableLevelSharingProperties" zawiera osiem tablic ciągów: tablesToInclude
, , tablesToExclude
materializedViewsToInclude
externalTablesToExclude
materializedViewsToExclude
externalTablesToInclude
functionsToInclude
i .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 "*" wszystkich baz danych.
Uwaga
Po dołączeniu zmaterializowanych widoków są również uwzględniane ich tabele źródłowe.
Przykłady
Uwzględnij wszystkie tabele. Nie jest potrzebny żaden element "*", ponieważ wszystkie tabele są domyślnie przestrzegane:
tablesToInclude = []
Uwzględnij wszystkie tabele o nazwach rozpoczynających się od "Dzienniki":
tablesToInclude = ["Logs*"]
Wyklucz wszystkie tabele zewnętrzne:
externalTablesToExclude = ["*"]
Wyklucz wszystkie zmaterializowane widoki:
materializedViewsToExclude=["*"]
Zastępowanie nazwy bazy danych
Opcjonalnie możesz ustawić nazwę bazy danych w klastrze obserwowanym inaczej niż klaster liderów. Na przykład możesz 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".
- C#
- Python
- PowerShell
- szablon Resource Manager
Dołączanie bazy danych przy użyciu języka C #
Wymagane pakiety NuGet
- Zainstaluj program Microsoft.Azure.Management.Kusto.
- Zainstaluj program Microsoft.Rest.ClientRuntime.Azure.Authentication na potrzeby uwierzytelniania.
Przykład języka 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
);
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 Azure Portal. Możesz sprawdzić, czy bazy danych zostały pomyślnie dołączone do klastrów obserwowanych lub liderów .
Sprawdzanie klastra obserwowanych
Przejdź do klastra obserwowanego 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 lidera
Przejdź do klastra lidera i wybierz pozycję Bazy danych
Sprawdź, czy odpowiednie bazy danych są oznaczone jako UDOSTĘPNIONE INNYM OSOBOM>Tak
Przełącz link relacji, aby wyświetlić szczegóły.
Można to również wyświetlić na stronie przeglądu bazy danych:
Odłączanie bazy danych obserwowanej bazy danych
Uwaga
Aby odłączyć bazę danych od obserwowanej strony lub lidera, musisz mieć użytkownika, grupę, jednostkę usługi lub tożsamość zarządzaną z co najmniej rolą współautora w klastrze, z którego odłączasz bazę danych. W poniższym przykładzie używamy jednostki usługi.
- C#
- Python
- PowerShell
- szablon Resource Manager
Odłącz dołączoną bazę danych obserwowanych z klastra obserwowanego przy użyciu języka C#**
Klaster obserwowany może odłączyć dowolną dołączoną bazę danych obserwowanych w następujący sposób:
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
);
Odłącz dołączoną bazę danych obserwowanych z klastra lidera przy użyciu języka C #
Klaster liderów może odłączyć dowolną dołączoną bazę danych w następujący sposób:
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
);
Zarządzanie zasadami podmiotów zabezpieczeń, uprawnieniami i buforowaniem
Zarządzanie podmiotami zabezpieczeń
Podczas dołączania bazy danych określ "domyślny rodzaj modyfikacji podmiotów zabezpieczeń". Wartość domyślna polega na połączeniu autoryzowanych podmiotów zabezpieczeń z kolekcją baz danych lidera autoryzowanych podmiotów zabezpieczeń
Rodzaj | Opis |
---|---|
Unii | Dołączone podmioty zabezpieczeń bazy danych będą zawsze zawierać oryginalne podmioty zabezpieczeń bazy danych oraz inne nowe podmioty zabezpieczeń dodane do bazy danych obserwowanej bazy danych. |
Zamień | Brak dziedziczenia podmiotów z oryginalnej bazy danych. Dla dołączonej bazy danych należy utworzyć nowe podmioty zabezpieczeń. |
Brak | Dołączone podmioty zabezpieczeń bazy danych zawierają tylko podmioty zabezpieczeń oryginalnej bazy danych bez innych podmiotów zabezpieczeń. |
Aby uzyskać więcej informacji na temat używania poleceń sterowania do konfigurowania autoryzowanych podmiotów zabezpieczeń, zobacz Control commands for managing a follower cluster (Sterowanie poleceniami do zarządzania klastrem obserwowanych).
Zarządzanie uprawnieniami
Zarządzanie uprawnieniami bazy danych tylko do odczytu jest takie samo jak dla wszystkich typów baz danych. Zobacz zarządzanie uprawnieniami w Azure Portal.
Konfigurowanie zasad buforowania
Administrator bazy danych obserwowanej może zmodyfikować zasady buforowania dołączonej bazy danych lub dowolnej z jego tabel w klastrze hostingu. Ustawieniem domyślnym jest połączenie źródłowej bazy danych w bazie danych klastra lidera i zasad buforowania na poziomie tabeli przy użyciu zasad zdefiniowanych 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 comiesięcznego raportowania i trzydniowe zasady buforowania w bazie danych obserwowanych w celu wykonywania zapytań dotyczących tylko ostatnich danych na potrzeby rozwiązywania problemów. Aby uzyskać więcej informacji na temat używania poleceń sterowania do konfigurowania zasad buforowania w bazie danych lub tabeli obserwowanej, zobacz Sterowanie poleceniami do zarządzania klastrem obserwowanym.
Uwagi
- Jeśli występują konflikty między bazami danych klastrów liderów/obserwowanych, gdy wszystkie bazy danych są obserwowane przez klaster obserwowany, są rozwiązywane w następujący sposób:
- Baza danych o nazwie DB utworzona w klastrze obserwowanym ma pierwszeństwo przed bazą danych o takiej samej nazwie, która została utworzona w klastrze liderów. Dlatego baza danych bazy danych w klastrze obserwowanym musi zostać usunięta lub zmieniona dla klastra obserwowanego, aby zawierał bazę danych bazy 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 klastra i historii uruchamiania w klastrze obserwowanym będą pokazywać aktywność i historię w klastrze obserwowanym, a ich zestawy wyników nie będą zawierać tych wyników klastra lidera ani klastrów.
- Na przykład:
.show queries
polecenie uruchomione w klastrze obserwowanym spowoduje wyświetlenie tylko zapytań uruchamianych w bazach danych, po których następuje klaster obserwowany, a nie zapytania uruchamiane względem tej samej bazy danych w klastrze liderów.
- Na przykład:
Ograniczenia
- Obserwowanie i klastry liderów muszą znajdować się w tym samym regionie.
- Jeśli pozyskiwanie przesyłania strumieniowego jest używane w bazie danych, która jest obserwowana, klaster obserwowany powinien być włączony dla pozyskiwania przesyłania strumieniowego, aby zezwolić na następujące dane pozyskiwania przesyłania strumieniowego.
- Szyfrowanie danych przy użyciu kluczy zarządzanych przez klienta nie jest obsługiwane zarówno w klastrach lidera, jak i w klastrach obserwowanych.
- Przed odłączeniem nie można usunąć bazy danych dołączonej do innego klastra.
- 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 w przypadku obserwowaniu wszystkich baz danych.
Następne kroki
- Aby uzyskać informacje na temat konfiguracji klastra obserwowanego, zobacz Control commands for managing a follower cluster (Sterowanie poleceniami do zarządzania klastrem obserwowanych).