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 follower memungkinkan Anda melampirkan database yang terletak di kluster yang berbeda ke kluster Azure Data Explorer Anda. Database pengikut dilampirkan dalam mode baca-saja, memungkinkan melihat data dan menjalankan kueri pada data yang telah dimasukkan 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. Database utama mengelola penyimpanan. 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 caching, pengguna, dan izin. Database terlampir tidak dapat dihapus. Pemimpin atau pengikut harus melepaskan database sebelum penghapusan.
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 (Follower) juga dapat digunakan untuk mengaitkan biaya kluster Azure Data Explorer kepada pihak yang menjalankan kueri pada data.
Catatan
Untuk sampel kode berdasarkan versi SDK sebelumnya, lihat artikel yang diarsipkan.
Database mana yang diikuti?
Berikut ini berlaku untuk kluster:
- 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.
Prasyarat
- Langganan Azure. Buat akun free Azure.
- 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. Tambahkan atau hapus penetapan peran menggunakan portal Azure, PowerShell, Azure CLI, dan templat ARM. Pelajari selengkapnya tentang kontrol akses berbasis peran Azure (Azure RBAC) dan berbagai peran.
Catatan
Membuat database pengikut sebelumnya tidak diperlukan karena database dibuat selama proses lampiran.
Berbagi akses tingkat tabel
Saat Anda melampirkan database, semua tabel, tabel eksternal, dan tampilan materialisasi ikut terlampir. 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.
Catatan
- Berbagi tingkat tabel tidak didukung saat menggunakan notasi '*' untuk semua database.
- Saat tampilan materialisasi disertakan, tabel sumbernya juga disertakan.
Contoh
Contoh berikut mencakup semua tabel. Secara default, semua tabel diikuti tanpa menggunakan notasi '*':
tablesToInclude = []
Contoh berikut mencakup semua fungsi. Secara default, semua fungsi diikuti tanpa menggunakan notasi '*':
functionsToInclude = []
Contoh berikut mencakup semua tabel dengan nama yang dimulai dengan "Log":
tablesToInclude = ["Logs*"]
Contoh berikut mencakup semua tabel eksternal:
externalTablesToExclude = ["*"]
Contoh berikut mencakup 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'.
- C#
- Python
- PowerShell
- Templat Resource Manager
Melampirkan database menggunakan C#
Paket NuGet yang diperlukan
- Instal Azure. ResourceManager.Kusto.
- Instal Azure. Identitas untuk autentikasi.
Contoh C#
var followerClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "followerResourceGroup", clusterName: "follower");
var leaderClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "leaderResourceGroup", clusterName: "leader");
var attachedDatabaseConfigurationName = "attachedDatabaseConfiguration";
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var followerCluster = resourceManagementClient.GetKustoClusterResource(followerClusterId);
var attachedDatabaseConfigurations = followerCluster.GetKustoAttachedDatabaseConfigurations();
var attachedDatabaseConfigurationData = new KustoAttachedDatabaseConfigurationData
{
ClusterResourceId = leaderClusterId,
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);
Verifikasi bahwa database berhasil dilampirkan
Untuk memverifikasi bahwa database berhasil dilampirkan, temukan database terlampir Anda di portal 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 database baca-saja 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 relasi untuk melihat detail.
Anda juga bisa menampilkan ini di halaman gambaran umum database:
Melepas database pengikut
Catatan
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.
- C#
- Python
- PowerShell
- Templat Resource Manager
Lepaskan database pengikut terlampir dari kluster pengikut menggunakan C#**
Kluster pengikut dapat melepaskan database pengikut yang terlampir sebagai berikut:
var attachedDatabaseConfigurationId = KustoAttachedDatabaseConfigurationResource.CreateResourceIdentifier(
subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "testrg", clusterName: "follower",
attachedDatabaseConfigurationName: "attachedDatabaseConfiguration");
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var attachedDatabaseConfiguration = resourceManagementClient.GetKustoAttachedDatabaseConfigurationResource(attachedDatabaseConfigurationId);
await attachedDatabaseConfiguration.DeleteAsync(WaitUntil.Completed);
Lepaskan database pengikut terlampir dari kluster pemimpin menggunakan C#
Kluster pemimpin dapat melepaskan database terlampir apa pun sebagai berikut:
var leaderClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "testrg", clusterName: "leader");
var followerClusterId = KustoClusterResource.CreateResourceIdentifier(subscriptionId: "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx", resourceGroupName: "followerResourceGroup", clusterName: "follower");
var followerDatabaseDefinition = new KustoFollowerDatabaseDefinition(
clusterResourceId: followerClusterId,
attachedDatabaseConfigurationName: "attachedDatabaseConfiguration"
);
var credentials = new ManagedIdentityCredential();
var resourceManagementClient = new ArmClient(credentials);
var leaderCluster = resourceManagementClient.GetKustoClusterResource(leaderClusterId);
await leaderCluster.DetachFollowerDatabasesAsync(WaitUntil.Completed, followerDatabaseDefinition);
Mengelola pengguna, izin, dan kebijakan cache
Mengelola prinsipal
Saat melampirkan database, tentukan "jenis modifikasi prinsipal default". Defaultnya adalah menggabungkan prinsipal berwenang yang di-override dengan kumpulan prinsipal berwenang dari database pemimpin
| Jenis | Keterangan |
|---|---|
| Union | Prinsipal database terlampir akan selalu menyertakan prinsipal database asli ditambah prinsipal baru lainnya yang ditambahkan ke database pengikut. |
| Menggantikan | 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 manajemen untuk mengonfigurasi prinsipal yang diotorisasi, lihat Perintah manajemen untuk mengelola kluster pengikut.
Kelola izin
Mengelola izin database baca-saja sama dengan untuk semua jenis database. Untuk menetapkan izin, lihat Kelola izin database di portal Azure atau gunakan perintah manajemen untuk Kelola peran keamanan database.
Mengonfigurasi kebijakan cache
Administrator database pengikut dapat mengubah kebijakan caching dari database terlampir atau tabel-tabelnya di kluster hosting. Nilai default adalah menggabungkan database sumber dalam database kluster utama dan kebijakan caching tingkat tabel dengan kebijakan yang ditentukan dalam kebijakan penggantian tingkat database dan tabel. Anda dapat, misalnya, memiliki kebijakan cache 30 hari pada database leader untuk menjalankan pelaporan bulanan dan kebijakan cache tiga hari pada database follower untuk melakukan query hanya pada data terbaru untuk pemecahan masalah. Untuk informasi selengkapnya tentang menggunakan perintah manajemen untuk mengonfigurasi kebijakan cache pada tabel atau database pengikut, lihat Perintah manajemen untuk mengelola kluster pengikut.
Catatan
Tinjau catatan berikut:
- 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 pengikut dapat menyertakan database pemimpin DB.
- 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 menunjukkan aktivitas dan riwayat pada kluster pengikut, dan kumpulan hasil ini tidak menyertakan hasil dari kluster pemimpin atau kluster lainnya.
- Misalnya: perintah yang
.show queriesdijalankan pada kluster pengikut hanya menunjukkan kueri yang dijalankan di database dalam kluster pengikut, dan bukan kueri yang dijalankan di database yang sama di kluster utama.
- Misalnya: perintah yang
Batasan
Tinjau batasan berikut:
- Pengikut dan kluster pemimpin harus berada di wilayah yang sama.
- Jika Ingestion Streaming digunakan pada database yang sedang diikuti, kluster pengikut harus diaktifkan untuk Ingestion Streaming agar memungkinkan pengikut mengikuti data ingestion streaming.
- Mengikuti kluster dengan enkripsi data menggunakan kunci yang dikelola pelanggan (CMK) didukung dengan batasan berikut:
- Kluster pengikut atau kluster pemimpin tidak mengikuti kluster lain.
- Jika kluster pengikut mengikuti kluster pemimpin dengan CMK yang diaktifkan, dan akses kluster pemimpin ke kunci dicabut, maka baik kluster pemimpin maupun kluster pengikut akan ditangguhkan. Dalam situasi ini, Anda dapat menyelesaikan masalah CMK dan kemudian melanjutkan node pengikut, atau Anda dapat melepaskan database pengikut dari node pengikut dan melanjutkan terpisah dari node pemimpin.
- 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 tingkat tabel tidak didukung saat mengikuti semua database.
- Dalam database pengikut, untuk mengkueri tabel eksternal yang menggunakan Identitas Terkelola sebagai metode autentikasi, Identitas Terkelola harus ditambahkan ke kluster pengikut. Kemampuan ini tidak berfungsi ketika kluster pemimpin dan pengikut disediakan di penyewa yang berbeda.
- Anda tidak dapat menyimpan hasil kueri dalam database yang diikuti baca-saja.