Melakukan migrasi database yang sudah ada untuk peluasan skala

Berlaku untuk:Azure SQL Database

Kelola database dengan sharding yang sudah diskalakan dengan mudah menggunakan alat (seperti pustaka klien Elastic Database). Pertama-tama konversi kumpulan database yang ada untuk menggunakan pengelola peta shard.

Gambaran Umum

Untuk memigrasikan database dengan sharding yang ada:

  1. Siapkan database pengelola peta shard.
  2. Buat peta shard.
  3. Siapkan shard individu.
  4. Tambahkan pemetaan ke peta shard.

Teknik-teknik ini dapat diimplementasikan menggunakan pustaka klien .NET Framework, atau skrip PowerShell yang ditemukan di Azure SQL Database - skrip alat Elastic Database. Contoh di sini menggunakan skrip PowerShell.

Untuk informasi selengkapnya tentang ShardMapManager, lihat Manajemen peta Shard. Untuk gambaran umum alat Elastic Database, lihat Gambaran umum fitur Elastic Database.

Menyiapkan database pengelola peta shard

Pengelola peta shard adalah database khusus yang berisi data untuk mengelola database yang diskalakan. Anda dapat menggunakan database yang sudah ada atau membuat database baru. Database yang bertindak sebagai pengelola peta shard tidak boleh database yang sama dengan shard. Skrip PowerShell tidak membuat database untuk Anda.

Langkah 1: Buat manajer peta shard

# Create a shard map manager
New-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
#<server_name> and <smm_db_name> are the server name and database name
# for the new or existing database that should be used for storing
# tenant-database mapping information.

Untuk mengambil manajer peta shard

Setelah dibuat, Anda dapat mengambil manajer peta shard dengan cmdlet ini. Langkah ini diperlukan setiap kali Anda perlu menggunakan objek ShardMapManager.

# Try to get a reference to the Shard Map Manager  
$ShardMapManager = Get-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'

Langkah 2: Buat peta shard

Pilih tipe peta shard untuk dibuat. Pilihan tergantung pada arsitektur database:

  1. Penyewa tunggal per database (Untuk istilah, lihat glosarium.)
  2. Beberapa penyewa per database (dua jenis):
    1. Pemetaan daftar
    2. Pemetaan rentang

Untuk model penyewa tunggal, buat peta shard pemetaan daftar. Model penyewa tunggal menetapkan satu database per penyewa. Ini adalah model yang efektif untuk pengembang SaaS karena menyederhanakan manajemen peta shard.

List mapping

Model multi-penyewa menetapkan beberapa penyewa ke database individual (dan Anda bisa mendistribusikan kelompok penyewa di beberapa database). Gunakan model ini ketika Anda memperkirakan setiap penyewa memiliki kebutuhan data yang kecil. Dalam model ini, gunakan rentang penyewa ke database menggunakan pemetaan rentang.

Range mapping

Atau Anda bisa menerapkan model database multi-penyewa menggunakan pemetaan daftar untuk menetapkan beberapa penyewa ke database individual. Misalnya, DB1 digunakan untuk menyimpan informasi tentang penyewa ID 1 dan 5, dan DB2 menyimpan data untuk penyewa 7 dan penyewa 10.

Multiple tenants on single DB

Berdasarkan pilihan Anda, pilih salah satu opsi berikut:

Opsi 1: Membuat peta shard untuk pemetaan daftar

Buat peta shard menggunakan objek ShardMapManager.

# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager

Opsi 2: Membuat peta shard untuk pemetaan rentang

Untuk menggunakan pola pemetaan ini, nilai ID penyewa harus berkisar berkelanjutan, dan dapat diterima untuk memiliki celah dalam rentang dengan melewati rentang saat membuat database.

# $ShardMapManager is the shard map manager object
# 'RangeShardMap' is the unique identifier for the range shard map.  
$ShardMap = New-RangeShardMap -KeyType $([int]) -RangeShardMapName 'RangeShardMap' -ShardMapManager $ShardMapManager

Opsi 3: Pemetaan daftar pada database individual

Menyiapkan pola ini juga memerlukan pembuatan peta daftar seperti yang ditunjukkan pada langkah 2, opsi 1.

Langkah 3: Siapkan pecahan individu

Tambahkan setiap shard (database) ke manajer peta shard. Ini menyiapkan database individual untuk menyimpan informasi pemetaan. Jalankan metode ini pada setiap shard.

Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.

Langkah 4: Menambahkan pemetaan

Penambahan pemetaan tergantung pada jenis peta pecahan yang Anda buat. Jika Anda membuat peta daftar, Anda menambahkan pemetaan daftar. Jika Anda membuat peta rentang, Anda menambahkan pemetaan daftar.

Opsi 1: Memetakan data untuk pemetaan daftar

Petakan data dengan menambahkan pemetaan daftar untuk setiap penyewa.

# Create the mappings and associate it with the new shards
Add-ListMapping -KeyType $([int]) -ListPoint '<tenant_id>' -ListShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'

Opsi 2: Memetakan data untuk pemetaan rentang

Tambahkan pemetaan rentang untuk semua rentang ID penyewa - asosiasi database:

# Create the mappings and associate it with the new shards
Add-RangeMapping -KeyType $([int]) -RangeHigh '5' -RangeLow '1' -RangeShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'

Opsi 4 opsi 3: Petakan data untuk beberapa penyewa pada database individual

Untuk setiap penyewa, jalankan Add-ListMapping (opsi 1).

Memeriksa pemetaan

Informasi tentang pecahan yang ada dan pemetaan yang terkait dengannya dapat dikueri menggunakan perintah berikut:

# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap

Ringkasan

Setelah menyelesaikan penyetelan, Anda bisa mulai menggunakan pustaka klien Elastic Database. Anda juga bisa menggunakan perutean tergantung data dankueri multi-shard.

Langkah berikutnya

Dapatkan skrip PowerShell dari skrip alat Database Elastis Azure.

Pustaka klien alat database Elastis tersedia di GitHub: Azure/elastic-db-tools.

Gunakan alat penggabungan terpisah untuk memindahkan data ke atau dari model multi-penyewa ke satu model penyewa. Lihat Alat penggabungan terpisah.

Sumber daya tambahan

Untuk informasi tentang pola arsitektur data umum aplikasi database perangkat lunak-sebagai-layanan (SaaS) multipenyewa, lihat Pola Desain untuk Aplikasi SaaS Multipenyewa dengan Azure SQL Database.

Pertanyaan dan permintaan fitur

Untuk pertanyaan, gunakan halaman pertanyaan Microsoft Q&A untuk Database SQL dan untuk permintaan fitur, tambahkan mereka ke forum umpan balik Database SQL.