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 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ı izleyebilir.
  • 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 alıyoruz. Veritabanı bağlamak için, öncü kümede ve takipçi kümesinde en az katkıda bulunan rolüne sahip bir kullanıcı, grup, hizmet sorumlusu hesabı 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ı eklenirken, tüm tablolar, dış tablolar ve malzeme görünümleri 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 toplam girdi sayısının maksimumu 100'dür.

Uyarı

'*' ile tüm veritabanları gösterimi kullanıldığında tablo düzeyi paylaşımı desteklenmez.

Uyarı

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 izlendiğinden '*' işaretine gerek yoktur.

    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 dışla:

    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 = 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ı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 takipçi veritabanlarının salt okunur 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 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

Uyarı

Bir veritabanını takipçi veya lider konumundan ayırmak için, veritabanını ayırmak istediğiniz kümede en az katkıda bulunan rolüne sahip bir 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

Yöneticileri yönet

Veritabanı eklerken "varsayılan sorumlular değişiklik türünü" belirtin. Varsayılan ayar, geçersiz kılınan yetkili sorumluların, öncü veritabanı koleksiyonundaki yetkili sorumlularla birleştirilmesidir.

Nazik Açıklama
Birlik Eklenen veritabanı sorumluları her zaman özgün veritabanı sorumlularını ve takipçi veritabanına eklenen diğer yeni sorumluları içerir.
Değiştir Özgün veritabanındaki kullanıcılar veya roller devralınmaz. Ekli veritabanı için yeni sorumlular oluşturulmalıdır.
Hiçbiri Ekli veritabanı yetkilileri, yalnızca özgün veritabanının yetkililerini içerir ve başka yetkili içermez.

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

İzinleri yönet

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

Ö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 seçenek, lider küme veritabanındaki kaynak veritabanını ve tablo düzeyindeki önbelleğe alma ilkelerini, veritabanında tanımlanan ve tablo düzeyinde öncelikli ilkelerle 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 denetim komutlarını kullanma hakkında daha fazla bilgi için bkz. Takipçi kümesini yönetmek için denetim 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 izleyici kümesi etkinleştirilmelidir.
  • 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.
  • Veritabanını ayırmadan önce farklı bir kümeye bağlı olan bir kümeyi silemezsiniz.
  • Tüm veritabanı takip edildiğinde tablo düzeyi paylaşım özellikleri desteklenmez.

Sonraki adımlar