Udostępnij przez


Korzystanie z baz danych obserwowanych

Funkcja bazy danych typu follower umożliwia dołączenie bazy danych znajdującej się w innym klastrze do klastra usługi Azure Data Explorer. Baza danych podrzędna jest dołączona w trybie tylko do odczytu, co umożliwia wyświetlanie danych i uruchamianie zapytań dotyczących danych pozyskanych do bazy danych głównej. Baza danych podrzędnych synchronizuje zmiany w bazach danych nadrzędnych. Ze względu na synchronizację dostępność danych może być opóźniona od kilku sekund do kilku minut. Długość opóźnienia zależy od ogólnego rozmiaru metadanych bazy danych lidera. Bazy danych lidera i obserwujących używają tego samego konta przechowywania do pobierania danych. Przechowywanie jest własnością wiodącej bazy danych. Baza danych śledząca wyświetla dane bez konieczności ich wczytywania. Ponieważ dołączona baza danych jest bazą tylko do odczytu, nie można modyfikować w niej danych, tabel i zasad, z wyjątkiem zasad buforowania , podmiotów oraz 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 śledzenia 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. Narzędzie Follower można również wykorzystać do powiązania kosztów klastra Azure Data Explorer z stroną, która uruchamia zapytania dotyczące danych.

Które bazy danych są obserwowane?

  • 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.
  • Klastry EngineV3 mogą być zgodne tylko z klastrami EngineV3, analogicznie klastry EngineV2 mogą być zgodne tylko z klastrami V2.

Wymagania wstępne

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ć użytkownika, grupę, jednostkę usługi lub tożsamość zarządzaną z co najmniej rolą współpracownika w klastrze głównym i klastrze podążającym. Dodawanie lub usuwanie przypisań ról przy użyciu witryny Azure Portal, programu PowerShell, interfejsu wiersza polecenia platformy Azurei szablonu usługi ARM . Dowiedz się więcej na temat kontroli dostępu opartej na rolach (Azure RBAC) oraz różnych ról.

Udostępnianie na poziomie tabeli

Podczas dołączania bazy danych uwzględniane są wszystkie tabele, tabele zewnętrzne i zmaterializowane widoki. Określone tabele/tabele zewnętrzne/zmaterializowane widoki można udostępniać, konfigurującTableLevelSharingProperties".

'TableLevelSharingProperties' zawiera osiem tablic ciągów: tablesToInclude, tablesToExclude, externalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, functionsToIncludei functionsToExclude. Maksymalna liczba wpisów we wszystkich tablicach wynosi 100.

Uwaga

Udostępnianie na poziomie tabeli nie jest obsługiwane przy użyciu notacji „*” dla wszystkich baz danych.

Uwaga

Po dołączeniu zmaterializowanych widoków uwzględnia się również ich tabele źródłowe.

Przykłady

  1. Uwzględnij wszystkie tabele. Nie jest wymagany znak "*", ponieważ wszystkie tabele są domyślnie śledzone.

    tablesToInclude = []
    
  2. Uwzględnij wszystkie tabele, których nazwy rozpoczynają się od "Dzienniki".

    tablesToInclude = ["Logs*"]
    
  3. Wyklucz wszystkie tabele zewnętrzne:

    externalTablesToExclude = ["*"]
    
  4. Wyklucz wszystkie zmaterializowane widoki:

    materializedViewsToExclude=["*"]
    

Nadpisanie nazwy bazy danych

Opcjonalnie możesz ustawić nazwę bazy danych w klastrze podrzędnym inaczej niż w klastrze nadrzędnym. 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

Przykład w języku 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ź swoje bazy danych w portalu Azure. Możesz sprawdzić, czy bazy danych zostały pomyślnie dołączone do klastrów typu follower lub leader.

Sprawdź grupę obserwujących

  1. Przejdź do klastra podrzędnego i wybierz pozycję Databases.

  2. Na liście baz danych wyszukaj nowe bazy danych tylko do odczytu.

    Zrzut ekranu przedstawiający bazy danych obserwujących tylko do odczytu w portalu.

    Tę listę można również wyświetlić na stronie przeglądu bazy danych:

    zrzut ekranu przedstawiający stronę przeglądu baz danych z listą klastrów obserwujących.

Sprawdzanie klastra liderów

  1. Przejdź do klastra liderów i wybierz pozycję Databases

  2. Sprawdź, czy odpowiednie bazy danych są oznaczone jako UDOSTĘPNIONE INNYM>Tak

  3. Przełącz link relacji, aby wyświetlić szczegóły.

    Zrzut ekranu przedstawiający bazy danych udostępnione innym osobom w celu sprawdzenia klastra liderów.

    Można to również wyświetlić na stronie przeglądu bazy danych:

    Zrzut ekranu przedstawiający przegląd z listą baz danych udostępnionych innym osobom.

Odłącz bazę danych obserwujących

Uwaga

Aby odłączyć bazę danych ze strony obserwatora lub lidera, musisz mieć użytkownika, grupę, główny obiekt usługi lub tożsamość zarządzaną przynajmniej z rolą współautora w klastrze, z którego odłączasz bazę danych. W poniższym przykładzie używamy głównej nazwy usługi.

Odłącz bazę danych obserwatora od klastra obserwatorów za pomocą C#**

Klaster obserwowania 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 bazę danych obserwatora, która jest dołączona do klastra lidera, korzystając z 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ądzaj podmiotami, uprawnieniami i polityką buforowania

Zarządzanie podmiotami

Podczas dołączania bazy danych określ "domyślny rodzaj modyfikacji podmiotów". Domyślnym ustawieniem jest połączenie nadrzędnych autoryzowanych podmiotów z kolekcją bazy danych lidera autoryzowanych podmiotów .

rodzaj Opis
Unii Dołączone podmioty bazy danych zawsze będą zawierać oryginalne podmioty bazy danych oraz inne nowe podmioty dodane do bazy danych obserwatora.
Zamień Brak dziedziczenia podmiotów z pierwotnej bazy danych. Dla dołączonej bazy danych należy utworzyć nowe podmioty.
Brak Dołączone projekty zabezpieczeń bazy danych obejmują tylko projekty zabezpieczeń oryginalnej bazy danych, bez innych projektów zabezpieczeń.

Aby uzyskać więcej informacji na temat używania poleceń sterujących do konfigurowania autoryzowanych podmiotów, zobacz Polecenia sterujące do zarządzania klastrem podrzędnym.

Zarządzanie uprawnieniami

Zarządzanie uprawnieniami bazy danych tylko do odczytu jest takie samo jak w przypadku wszystkich typów baz danych. Zobacz zarządzanie uprawnieniami w portalu Azure .

Konfigurowanie zasad buforowania

Administrator bazy danych obserwacyjnej może zmodyfikować politykę buforowania zarówno dołączonej bazy danych, jak i dowolnej z jej tabel na klastrze hostującym. 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ń kontrolnych do konfigurowania polityki buforowania w bazie danych lub tabeli podrzędnej, zobacz Control commands for managing a follower cluster.

Notatki

  • Jeśli występują konflikty między bazami danych klastrów liderów i klastrów obserwujących, gdy wszystkie bazy danych są obsługiwane przez klaster obserwujący, są one rozwiązywane w następujący sposób:
    • Baza danych o nazwie DB utworzona w klastrze podrzędnym ma pierwszeństwo przed bazą danych o tej samej nazwie, która została utworzona w klastrze nadrzędnym. Dlatego baza danych DB w klastrze obserwującym musi zostać usunięta lub zmieniona jej nazwa, aby w klastrze obserwującym mogła znaleźć się baza danych lidera DB.
    • Baza danych o nazwie DB, pochodząca z co najmniej dwóch klastrów liderów, zostanie dowolnie wybrana z jednego z klastrów liderów i nie będzie śledzona więcej niż raz.
  • Polecenia służące do wyświetlania dziennika aktywności i historii klastra uruchamiane na klastrze obserwowanym będą pokazywać aktywność i historię tego klastra, a ich zestawy wyników nie będą zawierać wyników klastra lidera lub klastrów lidera.
    • Na przykład: polecenie .show queries uruchamiane w klastrze obserwującym spowoduje wyświetlenie tylko zapytań uruchamianych w bazach danych takich jak te śledzone przez klaster obserwujący, a nie zapytań uruchamianych względem tej samej bazy danych w klastrze nadrzędnym.

Ograniczenia

  • Klastry obserwatorów oraz liderów muszą znajdować się w tym samym regionie.
  • Jeśli pozyskiwanie danych przesyłanych strumieniowo jest używane w bazie danych, która jest śledzona, klaster śledzący powinien być włączony do pozyskiwania danych przesyłanych strumieniowo, aby umożliwić śledzenie tego procesu.
  • Szyfrowanie danych przy użyciu kluczy zarządzanych przez klienta nie jest obsługiwane zarówno w klastrach liderów, jak i w klastrach obserwowanych.
  • 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 podczas przetwarzania wszystkich baz danych.

Następne kroki