Megosztás a következőn keresztül:


Követő adatbázisok használata

A követő adatbázis funkcióval egy másik fürtben található adatbázist csatolhat az Azure Data Explorer-fürthöz. A követő adatbázisírásvédett módban van csatolva, így megtekintheti az adatokat, és lekérdezéseket futtathat a vezető adatbázisba betöltött adatokon. A követő adatbázis szinkronizálja a vezető adatbázisok módosításait. A szinkronizálás miatt néhány másodperc és néhány perc közötti adatelmaradás tapasztalható az adatok rendelkezésre állásában. Az időeltolódás hossza a vezető adatbázis metaadatainak teljes méretétől függ. A vezető és követő adatbázisok ugyanazt a tárfiókot használják az adatok lekéréséhez. A tárterület a vezető adatbázis tulajdonában van. A követő adatbázis úgy tekinti meg az adatokat, hogy nem kell betöltődnie. Mivel a csatolt adatbázis írásvédett adatbázis, az adatbázisban lévő adatok, táblák és szabályzatok nem módosíthatók, kivéve a gyorsítótárazási szabályzatot, a tagokat és az engedélyeket. A csatolt adatbázisok nem törölhetők. A vezetőnek vagy a követőnek le kell választania őket, és csak akkor törölhetők.

Az adatbázis egy másik fürthöz való csatolása a követő képesség használatával infrastruktúraként szolgál az adatok szervezetek és csapatok közötti megosztásához. A funkció hasznos a számítási erőforrások elkülönítéséhez, hogy megvédje az éles környezetet a nem éles használati esetektől. A követő az Azure Data Explorer-fürt költségeit is társíthatja az adatokon lekérdezéseket futtató félhez.

A korábbi SDK-verziókon alapuló kódmintákért tekintse meg az archivált cikket.

Mely adatbázisokat követi a rendszer?

  • A fürtök egy adatbázist, több adatbázist vagy egy vezetőfürt összes adatbázisát követhetik.
  • Egyetlen fürt több vezető fürt adatbázisait is követheti.
  • A fürtök a követő adatbázisokat és a vezető adatbázisokat is tartalmazhatják.

Előfeltételek

Adatbázis csatolása

Az adatbázisok csatolására többféle módszer is használható. Ebben a cikkben egy adatbázis C#, Python, PowerShell vagy Azure Resource Manager sablon használatával történő csatolását tárgyaljuk. Adatbázis csatolásához rendelkeznie kell legalább közreműködői szerepkörrel rendelkező felhasználóval, csoporttal, szolgáltatásnévvel vagy felügyelt identitással a vezető fürtön és a követő fürtön. Szerepkör-hozzárendelések hozzáadása vagy eltávolítása Azure Portal, PowerShell, Azure CLI és ARM-sablon használatával. További információ az Azure szerepköralapú hozzáférés-vezérlésről (Azure RBAC) és a különböző szerepkörökről.

Táblaszintű megosztás

Az adatbázis csatolásakor a rendszer minden táblát, külső táblát és materializált nézetet is követ. A "TableLevelSharingProperties" konfigurálásával megoszthatja az adott táblákat/külső táblákat/materializált nézeteket.

A TableLevelSharingProperties nyolc sztringtömböt tartalmaz: tablesToInclude, , tablesToExclude, externalTablesToIncludeexternalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, functionsToIncludeés functionsToExclude. Az összes tömb bejegyzéseinek maximális száma 100.

Megjegyzés

  • A táblaszintű megosztás nem támogatott az összes adatbázis jelölésének *használata esetén.
  • A materializált nézetek belefoglalásakor a forrástáblák is bekerülnek.

Példák

  1. Foglalja bele az összes táblát. Nincs szükség *-ra, mivel az összes táblát alapértelmezés szerint a következő követi:

    tablesToInclude = []
    
  2. Adja meg a "Naplók" kezdetű összes táblát:

    tablesToInclude = ["Logs*"]
    
  3. Az összes külső tábla kizárása:

    externalTablesToExclude = ["*"]
    
  4. Az összes materializált nézet kizárása:

    materializedViewsToExclude=["*"]
    

Adatbázisnév felülbírálása

A követő fürtben lévő adatbázis nevét tetszés szerint eltérhet a vezetőfürttől. Előfordulhat például, hogy ugyanazt az adatbázisnevet szeretné csatolni több vezető fürtből egy követő fürthöz. Másik adatbázisnév megadásához konfigurálja a DatabaseNameOverride vagy a DatabaseNamePrefix tulajdonságot.

Adatbázis csatolása C használatával#

Szükséges NuGet-csomagok

C# példa

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 = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, followerSubscriptionId);
var followerResourceGroupName = "followerResourceGroup";
var followerClusterName = "follower";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(followerResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(followerClusterName)).Value;
var attachedDatabaseConfigurations = cluster.GetKustoAttachedDatabaseConfigurations();
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration"
var leaderSubscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var leaderResourceGroup = "leaderResourceGroup";
var leaderClusterName = "leader";
var attachedDatabaseConfigurationData = new KustoAttachedDatabaseConfigurationData
{
    ClusterResourceId = new ResourceIdentifier($"/subscriptions/{leaderSubscriptionId}/resourceGroups/{leaderResourceGroup}/providers/Microsoft.Kusto/Clusters/{leaderClusterName}"),
    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);

Ellenőrizze, hogy az adatbázis csatolása sikerült-e

Az adatbázis sikeres csatolásának ellenőrzéséhez keresse meg a csatolt adatbázisokat a Azure Portal. Ellenőrizheti, hogy az adatbázisok sikeresen csatolva lettek-e a követő vagy vezető fürtökön.

A követő fürt ellenőrzése

  1. Keresse meg a követő fürtöt, és válassza az Adatbázisok lehetőséget.

  2. Az adatbázislistában keressen új írásvédett adatbázisokat.

    Képernyőkép az írásvédett követő adatbázisokról a portálon.

    A listát az adatbázis áttekintési oldalán is megtekintheti:

    Képernyőkép az adatbázisok áttekintési oldaláról a követő fürtök listájával.

A vezető fürt ellenőrzése

  1. Tallózással keresse meg a vezetőfürtöt, és válassza az Adatbázisok lehetőséget

  2. Ellenőrizze, hogy a megfelelő adatbázisok meg vannak-e osztva másokkal>igen

  3. A részletek megtekintéséhez váltsa ki a kapcsolathivatkozást.

    Képernyőkép a vezető fürt ellenőrzéséhez másokkal megosztott adatbázisokról.

    Ezt az adatbázis áttekintési oldalán is megtekintheti:

    Képernyőkép az áttekintésről a másokkal megosztott adatbázisok listájával.

A követő adatbázis leválasztása

Megjegyzés

Ha le szeretne választani egy adatbázist a követő vagy a vezető oldalról, rendelkeznie kell legalább közreműködői szerepkörrel rendelkező felhasználóval, csoporttal, szolgáltatásnévvel vagy felügyelt identitással azon a fürtön, amelyről az adatbázist leválasztja. Az alábbi példában szolgáltatásnevet használunk.

A csatolt követő adatbázis leválasztása a követő fürtről a C#** használatával

A követő fürt az alábbiak szerint leválaszthatja a csatolt követő adatbázisokat:

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 = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, followerSubscriptionId);
var followerResourceGroupName = "testrg";
//The cluster and database attached database configuration are created as part of the prerequisites
var followerClusterName = "follower";
var attachedDatabaseConfigurationsName = "attachedDatabaseConfiguration";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(followerResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(followerClusterName)).Value;
var attachedDatabaseConfiguration = (await cluster.GetKustoAttachedDatabaseConfigurationAsync(attachedDatabaseConfigurationsName)).Value;
await attachedDatabaseConfiguration.DeleteAsync(WaitUntil.Completed);

A csatolt követő adatbázis leválasztása a vezető fürtről a C használatával#

A vezetőfürt az alábbi módon leválaszthatja a csatolt adatbázisokat:

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 = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, leaderSubscriptionId);
var leaderResourceGroupName = "testrg";
var leaderClusterName = "leader";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(leaderResourceGroupName)).Value;
var cluster = (await resourceGroup.GetKustoClusterAsync(leaderClusterName)).Value;
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 KustoFollowerDatabaseDefinition(
    clusterResourceId: new ResourceIdentifier($"/subscriptions/{followerSubscriptionId}/resourceGroups/{followerResourceGroupName}/providers/Microsoft.Kusto/Clusters/{followerClusterName}"),
    attachedDatabaseConfigurationName: attachedDatabaseConfigurationsName
);
await cluster.DetachFollowerDatabasesAsync(WaitUntil.Completed, followerDatabaseDefinition);

Tagok, engedélyek és gyorsítótárazási szabályzat kezelése

Rendszerbiztonsági tagok kezelése

Adatbázis csatolásakor adja meg az "alapértelmezett rendszerbiztonsági tagok módosítási típusát". Az alapértelmezett beállítás a felülbírálásra jogosult tagok kombinálása az engedélyezett tagok vezető adatbázis-gyűjteményével

Altípus Leírás
Unió A csatolt adatbázisnevek mindig tartalmazzák az eredeti adatbázis-tagokat, valamint a követő adatbázishoz hozzáadott további új tagokat.
Csere A rendszerbiztonsági tagok nem öröklődnek az eredeti adatbázisból. Új rendszerbiztonsági tagokat kell létrehozni a csatolt adatbázishoz.
Nincs A csatolt adatbázisnevek csak az eredeti adatbázis rendszerneveit tartalmazzák, más rendszerbiztonsági tagok nélkül.

A felügyeleti parancsok az engedélyezett rendszernevek konfigurálásával kapcsolatos további információkért lásd: Felügyeleti parancsok követő fürt kezeléséhez.

Engedélyek kezelése

Az írásvédett adatbázis-engedélyek kezelése ugyanaz, mint az összes adatbázistípus esetében. Engedélyek hozzárendeléséhez lásd: Adatbázis-engedélyek kezelése a Azure Portal vagy felügyeleti parancsok használata az adatbázis biztonsági szerepköreinek kezeléséhez.

Gyorsítótárazási szabályzat konfigurálása

A követő adatbázis rendszergazdája módosíthatja a csatolt adatbázis vagy annak bármely táblája gyorsítótárazási szabályzatát az üzemeltetési fürtön. Az alapértelmezett beállítás a vezetőfürt-adatbázisban lévő forrásadatbázis és a táblaszintű gyorsítótárazási szabályzatok kombinálása az adatbázisban meghatározott szabályzatokkal és a táblaszintű felülbírálási szabályzatokkal. Például rendelkezhet egy 30 napos gyorsítótárazási szabályzattal a vezető adatbázison a havi jelentéskészítés futtatásához, és egy háromnapos gyorsítótárazási szabályzatot a követő adatbázison, hogy csak a legutóbbi adatokat kérdezhesse le a hibaelhárításhoz. További információ arról, hogy a felügyeleti parancsokkal konfigurálhatja a gyorsítótárazási szabályzatot a követő adatbázison vagy táblán, lásd: Felügyeleti parancsok követő fürt kezeléséhez.

Jegyzetek

  • Ha ütközések vannak a vezető/követő fürtök adatbázisai között, amikor az összes adatbázist a követő fürt követi, azokat a következőképpen oldja fel a rendszer:
    • A követő fürtön létrehozott ADATBÁZIS nevű adatbázis elsőbbséget élvez a vezetőfürtön létrehozott adatbázissal szemben. Ezért kell eltávolítani vagy átnevezni a követő fürt adatbázis-adatbázisát , hogy a vezető adatbázis-adatbázisát is tartalmazza.
    • A rendszer tetszőlegesen kiválaszt egy db nevű adatbázist, amelyet két vagy több vezetőfürt követ, és csak egyszer lesz követve.
  • A követő fürtökön futtatott fürttevékenység-naplók és -előzmények megjelenítésére szolgáló parancsok a követő fürt tevékenységeit és előzményeit jelenítik meg, és eredményhalmazaik nem tartalmazzák a vezető fürt vagy fürtök eredményeit.
    • Például: a .show queries követő fürtön futtatott parancsok csak az adatbázisokon, majd a követő fürtökön futtatott lekérdezéseket jelenítik meg, és a lekérdezések nem futnak ugyanazon az adatbázison a vezetőfürtben.

Korlátozások

  • A követőnek és a vezető fürtöknek ugyanabban a régióban kell lenniük.
  • Ha a streambetöltést egy követett adatbázison használják, a követő fürtöt engedélyezni kell a streambetöltéshez, hogy lehetővé tegye a streamelési betöltési adatok követését.
  • Az ügyfél által felügyelt kulcsokat (CMK) használó adattitkosítással rendelkező fürtök követése a következő korlátozásokkal támogatott:
    • Sem a követő fürt, sem a vezető fürt nem követ más fürtöket.
    • Ha egy követő fürt olyan vezetőfürtöt követ, amelyen engedélyezve van a CMK, és a vezető hozzáférése vissza van vonva a kulcshoz, a vezető és a követő fürtök is fel lesznek függesztve. Ebben az esetben megoldhatja a CMK-problémát, majd folytathatja a követő fürtöt, vagy leválaszthatja a követő adatbázisokat a követő fürtről, és folytathatja a vezető fürttől való függetlenedését.
  • A leválasztása előtt nem törölhet egy másik fürthöz csatolt adatbázist.
  • Leválasztása előtt nem törölhet olyan fürtöt, amelyhez egy másik fürthöz van csatolva adatbázis.
  • A táblaszintű megosztási tulajdonságok nem támogatottak az összes adatbázis követésekor.
  • A követő adatbázisokban a felügyelt identitást hitelesítési módszerként használó külső táblák lekérdezéséhez hozzá kell adni a felügyelt identitást a követő fürthöz. Ez a képesség nem működik, ha a vezető és követő fürtök különböző bérlőkben vannak kiépítve.

Következő lépés