Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fitur database pengikut memungkinkan Anda melampirkan database yang terletak di kluster yang berbeda ke kluster Azure Data Explorer Anda. Database pengikut dilampirkan dalam mode baca-saja, memungkinkan untuk melihat data dan menjalankan kueri pada data yang diserap ke dalam database pemimpin. Database pengikut menyinkronkan perubahan dalam database pemimpin. Karena sinkronisasi, ada jeda data beberapa detik hingga beberapa menit dalam ketersediaan data. Panjang jeda waktu tergantung pada ukuran keseluruhan metadata database pemimpin. Database pemimpin dan pengikut menggunakan akun penyimpanan yang sama untuk mengambil data. Penyimpanan dimiliki oleh database pemimpin. Database pengikut menampilkan data tanpa perlu menyerapnya. Karena database terlampir adalah database baca-saja, data, tabel, dan kebijakan dalam database tidak dapat dimodifikasi kecuali untuk kebijakan penyimpanan sementara, prinsipal, dan izin. Database terlampir tidak dapat dihapus. Mereka harus dilepaskan oleh pemimpin atau pengikut dan hanya kemudian mereka dapat dihapus.
Melampirkan database ke kluster yang berbeda menggunakan kemampuan pengikut digunakan sebagai infrastruktur untuk berbagi data antara organisasi dan tim. Fitur ini berguna untuk memisahkan sumber daya komputasi untuk melindungi lingkungan produksi dari kasus penggunaan non-produksi. Pengikut juga dapat digunakan untuk mengaitkan biaya kluster Azure Data Explorer kepada pihak yang bertanggung jawab menjalankan kueri pada data.
Database mana yang diikuti?
- Kluster dapat mengikuti satu database, beberapa database, atau semua database kluster pemimpin.
- Satu kluster dapat mengikuti database dari beberapa kluster pemimpin.
- Kluster dapat berisi database pengikut dan database pemimpin.
- Kluster EngineV3 hanya dapat mengikuti kluster EngineV3, demikian pula kluster EngineV2 hanya dapat mengikuti kluster V2.
Prasyarat
- Langganan Azure. Membuat akun Azure gratis.
- Kluster dan database Azure Data Explorer untuk pemimpin dan pengikut. Membuat kluster dan database.
- Database pemimpin harus berisi data. Anda dapat menyerap data menggunakan salah satu metode yang dibahas dalam gambaran umum penyerapan.
Melampirkan database
Ada berbagai metode yang dapat Anda gunakan untuk melampirkan database. Dalam artikel ini, kita membahas melampirkan database menggunakan C#, Python, PowerShell, atau templat Azure Resource Manager. Untuk melampirkan database, Anda harus memiliki pengguna, grup, perwakilan layanan, atau identitas terkelola dengan setidaknya peran kontributor pada kluster pemimpin dan kluster pengikut. Menambahkan atau menghapus penetapan peran menggunakan portal Microsoft Azure, PowerShell, Azure CLI, dan templat ARM. Pelajari selengkapnya tentang kontrol akses berbasis peran Azure (Azure RBAC) dan peran yang berbeda.
Berbagi di tingkat tabel
Saat melampirkan database, semua tabel, tabel eksternal, dan tampilan materialisasi juga disertakan. Anda dapat berbagi tabel/tabel eksternal/tampilan materialisasi tertentu dengan mengonfigurasi 'TableLevelSharingProperties'.
'TableLevelSharingProperties' berisi delapan array string: tablesToInclude, tablesToExclude, externalTablesToInclude, externalTablesToExclude, materializedViewsToInclude, materializedViewsToExclude, functionsToInclude, dan functionsToExclude. Jumlah maksimum entri dalam semua array bersama-sama adalah 100.
Nota
Pembagian tingkat tabel tidak didukung saat menggunakan notasi '*' untuk semua database.
Nota
Saat tampilan materialisasi disertakan, tabel sumbernya juga disertakan.
Contoh
Sertakan semua tabel. Tidak diperlukan '*', karena semua tabel diikuti secara default:
tablesToInclude = []Sertakan semua tabel dengan nama yang dimulai dengan "Log":
tablesToInclude = ["Logs*"]Kecualikan semua tabel eksternal:
externalTablesToExclude = ["*"]Kecualikan semua tampilan materialisasi:
materializedViewsToExclude=["*"]
Penggantian nama database
Anda dapat secara opsional membuat nama database di kluster pengikut berbeda dari kluster pemimpin. Misalnya, Anda mungkin ingin melampirkan nama database yang sama dari beberapa kluster pemimpin ke kluster pengikut. Untuk menentukan nama database yang berbeda, konfigurasikan properti 'DatabaseNameOverride' atau 'DatabaseNamePrefix'.
Melampirkan database menggunakan C#
Paket NuGet yang diperlukan
- Instal Microsoft.Azure.Management.Kusto.
- Instal Microsoft.Rest.ClientRuntime.Azure.Authentication untuk autentikasi.
Contoh 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
);
Verifikasi bahwa database berhasil dilampirkan
Untuk memverifikasi bahwa database berhasil dilampirkan, temukan database terlampir Anda di portal Microsoft Azure. Anda dapat memverifikasi bahwa database berhasil dilampirkan di kluster pengikut atau pemimpin .
Periksa kluster pengikut Anda
Telusuri ke kluster pengikut dan pilih Database.
Dalam daftar database, cari basis data hanya-baca yang baru.
Anda juga bisa menampilkan daftar ini di halaman gambaran umum database:
Periksa kluster pemimpin Anda
Telusuri ke kluster pemimpin dan pilih Database
Periksa apakah database yang relevan ditandai sebagai DIBAGIKAN DENGAN ORANG LAIN>Ya
Ubah tautan hubungan untuk melihat detail.
Anda juga bisa menampilkan ini di halaman gambaran umum database:
Memisahkan basis data pengikut
Nota
Untuk melepaskan database dari sisi pengikut atau pemimpin, Anda harus memiliki pengguna, grup, perwakilan layanan, atau identitas terkelola dengan setidaknya peran kontributor pada kluster tempat Anda melepaskan database. Dalam contoh di bawah ini, kami menggunakan prinsipal layanan.
Lepaskan database pengikut terlampir dari kluster pengikut menggunakan C#**
Kluster pengikut dapat memisahkan database pengikut yang terlampir dengan cara berikut:
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
);
Lepaskan database pengikut terlampir dari kluster pemimpin menggunakan C#
Kluster pemimpin dapat melepaskan database terlampir apa pun sebagai berikut:
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
);
Mengelola pengguna, izin, dan kebijakan penyimpanan cache
Mengelola kepala sekolah
Saat melampirkan database, tentukan "jenis modifikasi prinsipal default". Defaultnya adalah menggabungkan penggantian prinsipal yang berwenang dengan kumpulan database pemimpin prinsipal yang berwenang
| Jenis | Deskripsi |
|---|---|
| Union | Prinsipal database terlampir akan selalu menyertakan prinsipal database asli ditambah prinsipal baru lainnya yang ditambahkan ke database pengikut. |
| Ganti | Tidak ada warisan prinsipal dari database asli. Prinsipal baru harus dibuat untuk database terlampir. |
| Tidak | Prinsipal database terlampir hanya mencakup prinsipal database asli tanpa prinsipal lain. |
Untuk informasi selengkapnya tentang menggunakan perintah kendali untuk mengonfigurasi prinsipal yang diizinkan, lihat Perintah kendali untuk mengelola kluster replika.
Pengelolaan hak akses
Mengelola izin database baca-saja sama seperti semua jenis database. Lihat mengelola izin di portal Microsoft Azure.
Mengonfigurasi kebijakan cache
Administrator database sekunder dapat mengubah kebijakan caching dari database terlampir atau tabel-tabelnya pada kluster hosting. Defaultnya adalah menggabungkan database sumber dalam database kluster pemimpin dan kebijakan caching tingkat tabel dengan kebijakan yang ditentukan dalam database dan kebijakan pembatalan tingkat tabel. Anda dapat, misalnya, memiliki kebijakan caching 30 hari pada database utama untuk menjalankan pelaporan bulanan dan kebijakan caching tiga hari pada database cadangan untuk mencari data terbaru dalam pemecahan masalah. Untuk informasi lebih lanjut tentang penggunaan perintah kontrol untuk mengonfigurasi kebijakan cache pada database atau tabel pengikut, lihat Perintah kontrol untuk mengelola kluster pengikut.
Catatan
- Jika ada konflik antara database kluster pemimpin/pengikut, ketika semua database diikuti oleh kluster pengikut, mereka diselesaikan sebagai berikut:
- Database bernama DB yang dibuat pada kluster pengikut lebih diutamakan daripada database dengan nama yang sama yang dibuat pada kluster pemimpin. Itulah sebabnya database DB di kluster pengikut perlu dihapus atau diganti namanya agar kluster tersebut dapat menyertakan database DB pemimpin.
- Database bernama DB diikuti dari dua kluster pemimpin atau lebih akan dipilih secara semena-mena dari salah satu kluster pemimpin, dan tidak akan diikuti lebih dari sekali.
- Perintah untuk menampilkan log aktivitas kluster dan riwayat yang dijalankan pada kluster pengikut akan menampilkan aktivitas dan riwayat pada kluster pengikut, dan kumpulan hasilnya tidak akan menyertakan hasil kluster atau kluster pemimpin tersebut.
- Misalnya: perintah yang
.show queriesdijalankan pada kluster pengikut hanya akan menampilkan kueri yang dijalankan pada database diikuti oleh kluster pengikut, dan bukan kueri yang dijalankan terhadap database yang sama di kluster pemimpin.
- Misalnya: perintah yang
Keterbatasan
- Pengikut dan kluster pemimpin harus berada di wilayah yang sama.
- Jika Penyerapan Streaming digunakan pada database yang diikuti, kluster pengikut harus diaktifkan untuk Penyerapan Streaming agar dapat mengikuti data penyerapan streaming.
- Enkripsi data menggunakan kunci yang dikelola pelanggan tidak didukung pada kluster pemimpin dan pengikut.
- Anda tidak dapat menghapus database yang dilampirkan ke kluster lain sebelum melepaskannya.
- Anda tidak dapat menghapus kluster yang memiliki database yang dilampirkan ke kluster lain sebelum melepaskannya.
- Properti berbagi pada tingkat tabel tidak didukung saat menghubungkan semua database.
Langkah berikutnya
- Untuk informasi tentang konfigurasi kluster pengikut, lihat Perintah kontrol untuk mengelola kluster pengikut.