Takipçi veritabanlarını kullanma

Takipçi veritabanı özelliği, Farklı bir kümede bulunan bir veritabanını Azure Veri Gezgini kümenize eklemenize olanak tanır. İzleyen veritabanısalt okunur modda eklendiğinden, verileri görüntülemeyi ve öncü veritabanına alınan veriler üzerinde sorgu çalıştırmayı mümkün hale getirir. Takip eden 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 eden veritabanı, verileri almaya gerek 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. Eklenen veritabanları silinemez. Öncü veya takip eden 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 eden, Azure Veri Gezgini kümesinin maliyetini veriler üzerinde sorgu çalıştıran tarafla ilişkilendirmek için de kullanılabilir.

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ı takip edebilir.
  • Küme hem takipçi veritabanlarını hem de öncü veritabanlarını içerebilir.
  • EngineV3 kümeleri yalnızca EngineV3 kümelerini takip edebilir, benzer şekilde EngineV2 kümeleri de yalnızca V2 kümelerini takip edebilir.

Ö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 aacağız. 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.

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, functionsToInclude, ve functionsToExclude. Tüm dizilerdeki en fazla girdi sayısı 100'dür.

Not

'*' tüm veritabanları gösterimi kullanılırken tablo düzeyinde paylaşım desteklenmez.

Not

Gerçekleştirilmiş görünümler dahil edildiğinde, kaynak tabloları da eklenir.

Örnekler

  1. Tüm tabloları dahil edin. Tüm tablolar varsayılan olarak takip ettiğinden '*' gerekli değildir:

    tablesToInclude = []
    
  2. "Günlükler" ile başlayan adlara sahip tüm tabloları ekleyin:

    tablesToInclude = ["Logs*"]
    
  3. Tüm dış tabloları dışla:

    externalTablesToExclude = ["*"]
    
  4. Tüm gerçekleştirilmiş görünümleri hariç tut:

    materializedViewsToExclude=["*"]
    

Veritabanı adını geçersiz kılma

İsteğe bağlı olarak, takipçi kümesindeki veritabanı adını öncü kümeden farklı yapabilirsiniz. Örneğin, birden çok öncü kümeden aynı veritabanı adını 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 = 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
);

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 bulun. Veritabanlarının takipçi veya öncü kümelere başarıyla eklendiğini doğrulayabilirsiniz.

Takipçi kümenizi denetleyin

  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:

    İzleyici 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 göz atın ve Veritabanları'nı seçin

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

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

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

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

Sorumluları yönetme

Veritabanı eklerken "varsayılan sorumlu değiştirme 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
Birliği Ekli veritabanı sorumluları her zaman özgün veritabanı sorumlularını ve izleyen veritabanına eklenen diğer yeni sorumluları içerir.
Değiştir Ö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 denetim komutlarını kullanma hakkında daha fazla bilgi için bkz. İzleme kümesini yönetmek için denetim komutları.

İzinleri yönetme

Salt okunur veritabanı iznini yönetmek, tüm veritabanı türleriyle aynıdır. bkz. Azure portal izinleri yönetme.

Önbelleğe alma ilkesini yapılandırma

Takip eden 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 izleyen veritabanında üç günlük önbelleğe alma ilkesi kullanabilirsiniz. İzleme veritabanında veya tablosunda önbelleğe alma ilkesini yapılandırmak için denetim komutlarını kullanma hakkında daha fazla bilgi için bkz. İzleme kümesini yönetmek için denetim komutları.

Notlar

  • Öncü/takip eden küme veritabanları arasında çakışmalar varsa, tüm veritabanlarını takip eden küme takip ettiğinde, bunlar aşağıdaki gibi çözülür:
    • Takip eden kümede oluşturulan DB adlı veritabanı, öncü kümede oluşturulan aynı ada sahip bir veritabanından önceliklidir. Bu nedenle, takip eden kümedeki veritabanı veritabanının , liderin veritabanı veritabanını içermesi için kaldırılması veya yeniden adlandırılması gerekir.
    • İki veya daha fazla öncü kümeden takip edilen DB adlı bir 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 eden kümeyi gösterir; öncü kümede aynı veritabanında çalıştırılan sorguları göstermez.

Sınırlamalar

  • İzleyici ve öncü kümelerin aynı bölgede olması gerekir.
  • Takip edilen 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ı kullanarak veri şifreleme hem öncü hem de takipçi kümelerinde desteklenmez.
  • Farklı bir kümeye bağlı bir veritabanını ayırmadan önce silemezsiniz.
  • Farklı bir kümeye bağlı veritabanı olan bir kümeyi ayırmadan önce silemezsiniz.
  • Tüm veritabanı takip edildiğinde tablo düzeyi paylaşım özellikleri desteklenmez.

Sonraki adımlar