Takipçi veritabanlarını kullanma

Takipçi veritabanı özelliği, Azure Veri Gezgini kümenize farklı bir kümede bulunan bir veritabanını eklemenize olanak tanır. Takipçi veritabanı salt okunur modda eklendiğinden, verileri görüntüleyebilir ve öncü veritabanına alınan veriler üzerinde sorgu çalıştırabilirsiniz. Takipçi veritabanı, öncü veritabanlarındaki değişiklikleri eşitler. Eşitleme nedeniyle, veri kullanılabilirliği içinde birkaç saniye ile birkaç dakika arasında bir veri gecikmesi vardır. Gecikme süresi, öncü veritabanı meta verilerinin genel boyutuna bağlıdır. Öncü ve takipçi veritabanları, verileri getirmek için aynı depolama hesabını kullanır. Depolama, öncü veritabanına aittir. Takipçi veritabanı, verileri almak zorunda kalmadan görüntüler. Ekli veritabanı salt okunur bir veritabanı olduğundan, önbelleğe alma ilkesi, sorumlular ve izinler dışında veritabanındaki veriler, tablolar ve ilkeler değiştirilemez. Ekli veritabanları silinemez. Öncü veya takipçi tarafından ayrılmaları gerekir ve ancak o zaman silinebilirler.

İzleme özelliğini kullanarak farklı bir kümeye veritabanı eklemek, kuruluşlar ve ekipler arasında veri paylaşmak için altyapı olarak kullanılır. Bu özellik, üretim ortamını üretim dışı kullanım örneklerinden korumak için işlem kaynaklarını ayırmada yararlıdır. Takipçi, Azure Veri Gezgini kümesinin maliyetini verilerde sorgu çalıştıran tarafla ilişkilendirmek için de kullanılabilir.

Önceki SDK sürümlerini temel alan kod örnekleri için arşivlenmiş makaleye bakın.

Hangi veritabanları takip edilir?

  • Bir küme bir veritabanını, birkaç veritabanını veya öncü kümenin tüm veritabanlarını izleyebilir.
  • Tek bir küme birden çok öncü kümeden veritabanlarını izleyebilir.
  • Küme hem takipçi veritabanlarını hem de öncü veritabanlarını içerebilir.

Önkoşullar

Veritabanı ekleme

Veritabanı eklemek için kullanabileceğiniz çeşitli yöntemler vardır. Bu makalede C#, Python, PowerShell veya Azure Resource Manager şablonu kullanarak veritabanı eklemeyi ele alıyoruz. Veritabanı eklemek için öncü kümede ve takipçi kümesinde en az katkıda bulunan rolüne sahip kullanıcı, grup, hizmet sorumlusu veya yönetilen kimliğe sahip olmanız gerekir. Azure portalı, PowerShell, Azure CLI ve ARM şablonunu kullanarak rol atamaları ekleyin veya kaldırın. Azure rol tabanlı erişim denetimi (Azure RBAC) ve farklı roller hakkında daha fazla bilgi edinin.

Not

Ek işlemi sırasında bir tane oluşturulduğundan, bir takipçi veritabanını önceden oluşturmak gerekli değildir.

Tablo düzeyinde paylaşım

Veritabanının tüm tabloları eklenirken dış tablolar ve gerçekleştirilmiş görünümler de izlenir. 'TableLevelSharingProperties' öğesini yapılandırarak belirli tabloları/dış tabloları/gerçekleştirilmiş görünümleri paylaşabilirsiniz.

'TableLevelSharingProperties' sekiz dize dizisi içerir: tablesToInclude, tablesToExclude, externalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, , materializedViewsToExclude, functionsToIncludeve functionsToExclude. Tüm dizilerdeki en fazla girdi sayısı 100'dür.

Not

  • '*' tüm veritabanları gösterimi kullanılırken tablo düzeyi paylaşımı desteklenmez.
  • Gerçekleştirilmiş görünümler dahil edildiğinde, kaynak tabloları da eklenir.

Örnekler

Aşağıdaki örnek tüm tabloları içerir. Varsayılan olarak, tüm tablolar '*' gösterimi kullanılmadan izlenir:

tablesToInclude = []

Aşağıdaki örnek tüm işlevleri içerir. Varsayılan olarak, tüm işlevler '*' gösterimi kullanılmadan izlenir:

functionsToInclude = []

Aşağıdaki örnek, "Günlükler" ile başlayan adlara sahip tüm tabloları içerir:

tablesToInclude = ["Logs*"]

Aşağıdaki örnek tüm dış tabloları içerir:

externalTablesToExclude = ["*"]

Aşağıdaki örnek tüm gerçekleştirilmiş görünümleri içerir:

materializedViewsToExclude=["*"]

Veritabanı adı geçersiz kılma

İsteğe bağlı olarak, takipçi kümesindeki veritabanı adını öncü kümeden farklı yapabilirsiniz. Örneğin, aynı veritabanı adını birden çok öncü kümeden bir takipçi kümesine eklemek isteyebilirsiniz. Farklı bir veritabanı adı belirtmek için 'DatabaseNameOverride' veya 'DatabaseNamePrefix' özelliğini yapılandırın.

C kullanarak veritabanı ekleme#

Gerekli NuGet paketleri

C# örneği

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);

Veritabanının başarıyla eklendiğini doğrulayın

Veritabanının başarıyla eklendiğini doğrulamak için ekli veritabanlarınızı Azure portalında bulun. Veritabanlarının takipçi veya öncü kümelere başarıyla eklendiğini doğrulayabilirsiniz.

Takipçi kümenizi denetleme

  1. Takipçi kümesine göz atın ve Veritabanları'nı seçin.

  2. Veritabanı listesinde yeni salt okunur veritabanlarını arayın.

    Portalda salt okunur takipçi veritabanlarının ekran görüntüsü.

    Bu listeyi veritabanına genel bakış sayfasında da görüntüleyebilirsiniz:

    Takipçi kümelerinin listesini içeren veritabanlarına genel bakış sayfasının ekran görüntüsü.

Öncü kümenizi denetleme

  1. Öncü kümeye gidin ve Veritabanları'nı seçin

  2. İlgili veritabanlarının BAŞKALARıYLA>PAYLAŞILDI olarak işaretlendiğini denetleyin Evet

  3. Ayrıntıları görüntülemek için ilişki bağlantısını değiştirin.

    Öncü kümeyi denetlemek için başkalarıyla paylaşılan veritabanlarının ekran görüntüsü.

    Bunu veritabanına genel bakış sayfasında da görüntüleyebilirsiniz:

    Başkalarıyla paylaşılan veritabanlarının listesini içeren genel bakışın ekran görüntüsü.

Takipçi veritabanını ayırma

Not

Bir veritabanını takipçi veya öncü tarafından ayırmak için, veritabanını ayırdığınız kümede en az katkıda bulunan rolüne sahip kullanıcı, grup, hizmet sorumlusu veya yönetilen kimliğe sahip olmanız gerekir. Aşağıdaki örnekte hizmet sorumlusunu kullanırız.

C#** kullanarak ekli takipçi veritabanını takipçi kümesinden ayırma

Takipçi kümesi, ekli tüm takipçi veritabanlarını aşağıdaki gibi ayırabilir:

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);

C kullanarak ekli takipçi veritabanını öncü kümeden ayırma#

Öncü küme, ekli tüm veritabanlarını aşağıdaki gibi ayırabilir:

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);

Sorumluları, izinleri ve önbelleğe alma ilkesini yönetme

Sorumluları yönetme

Veritabanı eklerken "varsayılan sorumlular değişiklik türünü" belirtin. Varsayılan ayar geçersiz kılma yetkili sorumlularını yetkili sorumluların öncü veritabanı koleksiyonuyla birleştirmektir

Tip Açıklama
Sendika Eklenen veritabanı sorumluları her zaman özgün veritabanı sorumlularını ve takipçi veritabanına eklenen diğer yeni sorumluları içerir.
Replace Özgün veritabanından sorumlu devralma yok. Ekli veritabanı için yeni sorumlular oluşturulmalıdır.
Hiçbiri Ekli veritabanı sorumluları yalnızca özgün veritabanının sorumlularını ve başka sorumluları yoktur.

Yetkili sorumluları yapılandırmak için yönetim komutlarını kullanma hakkında daha fazla bilgi için bkz . Bir takipçi kümesini yönetmek için yönetim komutları.

İzinleri yönet

Salt okunur veritabanı iznini yönetmek, tüm veritabanı türleriyle aynıdır. İzinleri atamak için bkz. Azure portalında veritabanı izinlerini yönetme veya veritabanı güvenlik rollerini yönetmek için yönetim komutlarını kullanma.

Önbelleğe alma ilkesini yapılandırma

İzleyici veritabanı yöneticisi, ekli veritabanının veya barındırma kümesindeki tablolarından herhangi birinin önbelleğe alma ilkesini değiştirebilir. Varsayılan ayar, öncü küme veritabanındaki kaynak veritabanını ve tablo düzeyinde önbelleğe alma ilkelerini veritabanında tanımlanan ilkelerle ve tablo düzeyinde geçersiz kılma ilkeleriyle birleştirmektir. Örneğin, öncü veritabanında aylık raporlamayı çalıştırmak için 30 günlük bir önbelleğe alma ilkesi ve sorun giderme için yalnızca son verileri sorgulamak için takipçi veritabanında üç günlük önbelleğe alma ilkesi kullanabilirsiniz. İzleme veritabanında veya tablosunda önbelleğe alma ilkesini yapılandırmak için yönetim komutlarını kullanma hakkında daha fazla bilgi için bkz . Takipçi kümesini yönetmek için yönetim komutları.

Notlar

  • Öncü/takipçi kümelerinin veritabanları arasında çakışmalar varsa, tüm veritabanları takip eden küme tarafından takip edildiğinde, bunlar aşağıdaki gibi çözümlenir:
    • takipçi kümesinde oluşturulan DB adlı veritabanı, öncü kümede oluşturulan aynı ada sahip bir veritabanından önceliklidir. Bu nedenle, takipçi kümesindeki veritabanı veritabanının, liderin veritabanı veritabanını içermesi için takipçi kümesinin kaldırılması veya yeniden adlandırılması gerekir.
    • İki veya daha fazla öncü kümeden takip edilen DB adlı veritabanı, öncü kümelerden birinden rastgele seçilir ve birden çok kez takip edilmeyecektir.
  • Bir takipçi kümesinde küme etkinlik günlüğünü ve geçmiş çalıştırmasını gösteren komutlar, takipçi kümesindeki etkinliği ve geçmişi gösterir ve sonuç kümeleri öncü kümenin veya kümelerin sonuçlarını içermez.
    • Örneğin: takipçi kümesinde çalıştırılan bir .show queries komut yalnızca veritabanlarında çalıştırılan sorguları ve ardından takipçi kümesini gösterir; öncü kümedeki aynı veritabanında çalıştırılan sorguları göstermez.

Sınırlamalar

  • Takipçi ve öncü kümelerin aynı bölgede olması gerekir.
  • İzlenen bir veritabanında Akış alımı kullanılıyorsa, akış alımı verilerinin izlenmesine izin vermek için akış alımı için takipçi kümesinin etkinleştirilmesi gerekir.
  • Müşteri tarafından yönetilen anahtarlar (CMK) kullanılarak veri şifrelemesi içeren bir kümenin takipi aşağıdaki sınırlamalarla desteklenir:
    • Ne takipçi kümesi ne de öncü küme diğer kümeleri takip ediyor.
    • Bir takipçi kümesi, CMK'nin etkin olduğu bir öncü kümeyi izliyorsa ve liderin anahtara erişimi iptal edilirse, hem öncü hem de takipçi kümeleri askıya alınır. Bu durumda, CMK sorununu çözebilir ve ardından takipçi kümesini sürdürebilir veya takipçi veritabanlarını takipçi kümesinden ayırabilir ve öncü kümeden bağımsız olarak sürdürebilirsiniz.
  • Farklı bir kümeye bağlı bir veritabanını ayırmadan önce silemezsiniz.
  • Veritabanını ayırmadan önce farklı bir kümeye bağlı olan bir kümeyi silemezsiniz.
  • Tablo düzeyi paylaşım özellikleri tüm veritabanları takip edildiğinde desteklenmez.
  • İzleyen veritabanlarında, kimlik doğrulama yöntemi olarak Yönetilen Kimlik kullanan dış tabloları sorgulamak için Yönetilen Kimlik'in takipçi kümesine eklenmesi gerekir. Öncü ve takipçi kümeleri farklı kiracılarda sağlandığında bu özellik çalışmaz.

Sonraki adım